EnableExplicit #BASE=4 #SPC=Chr(32) Procedure.s ChineseZodiac(n.i) Define cycle_year.i=n-#BASE, stem_number.i = cycle_year%10+1, element_number.i = Round(stem_number/2,#PB_Round_Nearest), branch_number.i = cycle_year%12+1, aspect_number.i = cycle_year%2+1, index.i = cycle_year%60+1, celestial$ = Chr(PeekU(?Celestial_stem+SizeOf(Character)*(stem_number-1))), c_pinyin$ = StringField(PeekS(?Stem),stem_number,"\"), element$ = StringField(PeekS(?Element),element_number,"\"), branch_han$ = Chr(PeekU(?Terrestrial_branch+SizeOf(Character)*(branch_number-1))), b_pinyin$ = StringField(PeekS(?Branch),branch_number,"\"), animal$ = StringField(PeekS(?Zodiac_animal),branch_number,"\"), aspect$ = StringField(PeekS(?Aspect),aspect_number,"\"), YearOfCycle$ = Str(index) ProcedureReturn Str(n)+#SPC+ LSet(element$,7,#SPC)+#SPC+ LSet(animal$,7,#SPC)+#SPC+ LSet(aspect$,6,#SPC)+#SPC+ RSet(YearOfCycle$,11)+#SPC+ LSet(c_pinyin$+"-"+b_pinyin$,9,#SPC)+#SPC+ celestial$+branch_han$ EndProcedure LoadFont(0,"Consolas",12) If OpenWindow(0,#PB_Ignore,#PB_Ignore,600,400,"Chinese Zodiac",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) EditorGadget(0, 8, 8, 600-16, 400-16) : SetGadgetFont(0,FontID(0)) Define header$="Year Element Animal Aspect YearOfCycle ASCII Chinese" AddGadgetItem(0,-1,header$) AddGadgetItem(0,-1,ChineseZodiac(1935)) AddGadgetItem(0,-1,ChineseZodiac(1938)) AddGadgetItem(0,-1,ChineseZodiac(1968)) AddGadgetItem(0,-1,ChineseZodiac(1972)) AddGadgetItem(0,-1,ChineseZodiac(1976)) AddGadgetItem(0,-1,ChineseZodiac(1984)) AddGadgetItem(0,-1,ChineseZodiac(Year(Date()))) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf DataSection Celestial_stem: : Data.u $7532, $4E59, $4E19, $4E01, $620A, $5DF1, $5E9A, $8F9B, $58EC, $7678 Terrestrial_branch: : Data.u $5B50, $4E11, $5BC5, $536F, $8FB0, $5DF3, $5348, $672A, $7533, $9149, $620C, $4EA5 Zodiac_animal: : Data.s "Rat\Ox\Tiger\Rabbit\Dragon\Snake\Horse\Goat\Monkey\Rooster\Dog\Pig" Element: : Data.s "Wood\Fire\Earth\Metal\Water" Aspect: : Data.s "yang\yin" Stem: : Data.s "jiă\yĭ\bĭng\dīng\wù\jĭ\gēng\xīn\rén\gŭi" Branch: : Data.s "zĭ\chŏu\yín\măo\chén\sì\wŭ\wèi\shēn\yŏu\xū\hài" EndDataSection