UiGame.c
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:23k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. //===========================================================
  2. // Project Name(项目名称):  Ali 5661
  3. // File Name(模块名称): uiGame.c
  4. // Built Date(创建日期):2006-03-20
  5. // Abstract(模块描述): 用户函数模块
  6. // Revision History(版本信息):
  7. // Rev Date Author       Comment(修改说明)
  8. // 1.0  2006-04-03      Wind        created
  9. //============================================================
  10. #define LCD_MAX_LENGTH  128
  11. #define LCD_MAX_HEIGHT  128
  12. #define PI   3.14159
  13. enum
  14. {
  15. SELECT_GAME_MENU=0,
  16. GAME_RUSSIAN,
  17. GAME_SNAKE,
  18. GAME_BOX,
  19. GAME_TANK,
  20. GAME_GOBANG,
  21. GAME_MAX
  22. };
  23. enum
  24. {
  25. MENU_GAME_RUSSIAN,
  26. MENU_GAME_SNAKE,
  27. MENU_GAME_BOX,
  28. MENU_GAME_TANK,
  29. MENU_GAME_GOBANG,
  30. MENU_GAME_MAX
  31. };
  32. enum
  33. {
  34. SELECT_GAME_OPTION_MENU=0,
  35. GAME_OPTION_START,
  36. GAME_OPTION_INTRODUCE,
  37. GAME_OPTION_SETUP,
  38. GAME_OPTION_HISTORY,
  39. GAME_OPTION_MAX
  40. };
  41. //extern API BYTE StrAsscii2Unicode(PBYTE pbHByte,PBYTE pbLByte);
  42. //extern void CSTN_SetWindow(unsigned char x0,unsigned char y0,unsigned char length,unsigned char hight) large;
  43. //code unsigned char mask[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  44. XBYTE GameLevel_Russian=0;
  45. XBYTE GameLevel_Snake=0;
  46. XBYTE GameLevel_Box=0;
  47. //-----------jason_tang 061201----------
  48. XBYTE Gamelevel_Tank=0;
  49. XBYTE GameFlag; //=0,停止运行;=1,运行中;=2,试图退出;=3,游戏结束;
  50. XWORD GameRussianScore;
  51. XBYTE GameRussianHistoryLevel;
  52. XBYTE GameSnakeHistoryLevel;
  53. XBYTE GameBoxHistoryLevel;
  54. XBYTE GameTankHistoryLevel;
  55. XBYTE gc_GameName=0;
  56. XBYTE gxb_GameOption=0;
  57. XBYTE NowGameSelectMenu=0;
  58. XBYTE NowGameOptionSelectMenu=0;
  59. XBYTE gxbGameIntroducePage=1;
  60. #define RUSSIAN_INTRODUCE_TOTALEN_PAGE 4
  61. #define RUSSIAN_INTRODUCE_TOTALCN_PAGE 4
  62. #define RUSSIAN_INTRODUCE_TOTALTW_PAGE 4
  63. #define SNAKE_INTRODUCE_TOTALEN_PAGE 4
  64. #define SNAKE_INTRODUCE_TOTALCN_PAGE 3
  65. #define SNAKE_INTRODUCE_TOTALTW_PAGE 3
  66. #define BOXMAN_INTRODUCE_TOTALEN_PAGE 4
  67. #define BOXMAN_INTRODUCE_TOTALCN_PAGE 2
  68. #define BOXMAN_INTRODUCE_TOTALTW_PAGE 2
  69. #define TANK_INTRODUCE_TOTALEN_PAGE 4
  70. #define TANK_INTRODUCE_TOTALCN_PAGE 2
  71. #define TANK_INTRODUCE_TOTALTW_PAGE 2
  72. #define GOB_INTRODUCE_TOTALEN_PAGE 4
  73. #define GOB_INTRODUCE_TOTALCN_PAGE 2
  74. #define GOB_INTRODUCE_TOTALTW_PAGE 2
  75. CWORD cbRussianIntroStr[]=
  76. {
  77. SYS_STR_ITEM_GAME_INTRODUCE_R01,
  78. SYS_STR_ITEM_GAME_INTRODUCE_R02,
  79. SYS_STR_ITEM_GAME_INTRODUCE_R03,
  80. SYS_STR_ITEM_GAME_INTRODUCE_R04,
  81. SYS_STR_ITEM_GAME_INTRODUCE_R05,
  82. SYS_STR_ITEM_GAME_INTRODUCE_R06,
  83. SYS_STR_ITEM_GAME_INTRODUCE_R07,
  84. SYS_STR_ITEM_GAME_INTRODUCE_R08,
  85. SYS_STR_ITEM_GAME_INTRODUCE_R09,
  86. SYS_STR_ITEM_GAME_INTRODUCE_R10,
  87. SYS_STR_ITEM_GAME_INTRODUCE_R11,
  88. SYS_STR_ITEM_GAME_INTRODUCE_R12,
  89. SYS_STR_ITEM_GAME_INTRODUCE_R13,
  90. SYS_STR_ITEM_GAME_INTRODUCE_R14,
  91. SYS_STR_ITEM_GAME_INTRODUCE_R15,
  92. SYS_STR_ITEM_GAME_INTRODUCE_R16,
  93. SYS_STR_ITEM_GAME_INTRODUCE_R17,
  94. SYS_STR_ITEM_GAME_INTRODUCE_R18,
  95. SYS_STR_ITEM_GAME_INTRODUCE_R19,
  96. SYS_STR_ITEM_GAME_INTRODUCE_R20,
  97. SYS_STR_ITEM_GAME_INTRODUCE_R21,
  98. SYS_STR_ITEM_GAME_INTRODUCE_R22,
  99. SYS_STR_ITEM_GAME_INTRODUCE_R23,
  100. SYS_STR_ITEM_GAME_INTRODUCE_R24,
  101. };
  102. CWORD cwSnakeIntroStr[]=
  103. {
  104. SYS_STR_ITEM_GAME_INTRODUCE_S01,
  105. SYS_STR_ITEM_GAME_INTRODUCE_S02,
  106. SYS_STR_ITEM_GAME_INTRODUCE_S03,
  107. SYS_STR_ITEM_GAME_INTRODUCE_S04,
  108. SYS_STR_ITEM_GAME_INTRODUCE_S05,
  109. SYS_STR_ITEM_GAME_INTRODUCE_S06,
  110. SYS_STR_ITEM_GAME_INTRODUCE_S07,
  111. SYS_STR_ITEM_GAME_INTRODUCE_S08,
  112. SYS_STR_ITEM_GAME_INTRODUCE_S09,
  113. SYS_STR_ITEM_GAME_INTRODUCE_S10,
  114. SYS_STR_ITEM_GAME_INTRODUCE_S11,
  115. SYS_STR_ITEM_GAME_INTRODUCE_S12,
  116. SYS_STR_ITEM_GAME_INTRODUCE_S13,
  117. SYS_STR_ITEM_GAME_INTRODUCE_S14,
  118. SYS_STR_ITEM_GAME_INTRODUCE_S15,
  119. SYS_STR_ITEM_GAME_INTRODUCE_S16,
  120. SYS_STR_ITEM_GAME_INTRODUCE_S17,
  121. SYS_STR_ITEM_GAME_INTRODUCE_S18,
  122. SYS_STR_ITEM_GAME_INTRODUCE_S19,
  123. SYS_STR_ITEM_GAME_INTRODUCE_S20,
  124. SYS_STR_ITEM_GAME_INTRODUCE_S21,
  125. SYS_STR_ITEM_GAME_INTRODUCE_S22,
  126. SYS_STR_ITEM_GAME_INTRODUCE_S23,
  127. SYS_STR_ITEM_GAME_INTRODUCE_S24,
  128. SYS_STR_ITEM_GAME_INTRODUCE_S25,
  129. SYS_STR_ITEM_GAME_INTRODUCE_S26,
  130. SYS_STR_ITEM_GAME_INTRODUCE_S27,
  131. };
  132. CWORD cwBoxManIntroStr[]=
  133. {
  134. SYS_STR_ITEM_GAME_INTRODUCE_B01,
  135. SYS_STR_ITEM_GAME_INTRODUCE_B02,
  136. SYS_STR_ITEM_GAME_INTRODUCE_B03,
  137. SYS_STR_ITEM_GAME_INTRODUCE_B04,
  138. SYS_STR_ITEM_GAME_INTRODUCE_B05,
  139. SYS_STR_ITEM_GAME_INTRODUCE_B06,
  140. SYS_STR_ITEM_GAME_INTRODUCE_B07,
  141. SYS_STR_ITEM_GAME_INTRODUCE_B08,
  142. SYS_STR_ITEM_GAME_INTRODUCE_B09,
  143. SYS_STR_ITEM_GAME_INTRODUCE_B10,
  144. SYS_STR_ITEM_GAME_INTRODUCE_B11,
  145. SYS_STR_ITEM_GAME_INTRODUCE_B12,
  146. SYS_STR_ITEM_GAME_INTRODUCE_B13,
  147. SYS_STR_ITEM_GAME_INTRODUCE_B14,
  148. SYS_STR_ITEM_GAME_INTRODUCE_B15,
  149. SYS_STR_ITEM_GAME_INTRODUCE_B16,
  150. SYS_STR_ITEM_GAME_INTRODUCE_B17,
  151. SYS_STR_ITEM_GAME_INTRODUCE_B18,
  152. SYS_STR_ITEM_GAME_INTRODUCE_B19,
  153. SYS_STR_ITEM_GAME_INTRODUCE_B20,
  154. SYS_STR_ITEM_GAME_INTRODUCE_B21,
  155. SYS_STR_ITEM_GAME_INTRODUCE_B22,
  156. };
  157. CWORD cwTankIntroStr[]=
  158. {
  159. SYS_STR_ITEM_GAME_INTRODUCE_T01,
  160. SYS_STR_ITEM_GAME_INTRODUCE_T02,
  161. SYS_STR_ITEM_GAME_INTRODUCE_T03,
  162. SYS_STR_ITEM_GAME_INTRODUCE_T04,
  163. SYS_STR_ITEM_GAME_INTRODUCE_T05,
  164. SYS_STR_ITEM_GAME_INTRODUCE_T06,
  165. SYS_STR_ITEM_GAME_INTRODUCE_T07,
  166. SYS_STR_ITEM_GAME_INTRODUCE_T08,
  167. SYS_STR_ITEM_GAME_INTRODUCE_T09,
  168. SYS_STR_ITEM_GAME_INTRODUCE_T10,
  169. SYS_STR_ITEM_GAME_INTRODUCE_T11,
  170. SYS_STR_ITEM_GAME_INTRODUCE_T12,
  171. SYS_STR_ITEM_GAME_INTRODUCE_T13,
  172. SYS_STR_ITEM_GAME_INTRODUCE_T14,
  173. SYS_STR_ITEM_GAME_INTRODUCE_T15,
  174. SYS_STR_ITEM_GAME_INTRODUCE_T16,
  175. SYS_STR_ITEM_GAME_INTRODUCE_T17,
  176. SYS_STR_ITEM_GAME_INTRODUCE_T18,
  177. SYS_STR_ITEM_GAME_INTRODUCE_T19,
  178. SYS_STR_ITEM_GAME_INTRODUCE_T20,
  179. SYS_STR_ITEM_GAME_INTRODUCE_T21,
  180. SYS_STR_ITEM_GAME_INTRODUCE_T22,
  181. };
  182. CWORD cwGoBIntroStr[]=
  183. {
  184. SYS_STR_ITEM_GAME_INTRODUCE_G01,
  185. SYS_STR_ITEM_GAME_INTRODUCE_G02,
  186. SYS_STR_ITEM_GAME_INTRODUCE_G03,
  187. SYS_STR_ITEM_GAME_INTRODUCE_G04,
  188. SYS_STR_ITEM_GAME_INTRODUCE_G05,
  189. SYS_STR_ITEM_GAME_INTRODUCE_G06,
  190. SYS_STR_ITEM_GAME_INTRODUCE_G07,
  191. SYS_STR_ITEM_GAME_INTRODUCE_G08,
  192. SYS_STR_ITEM_GAME_INTRODUCE_G09,
  193. SYS_STR_ITEM_GAME_INTRODUCE_G10,
  194. SYS_STR_ITEM_GAME_INTRODUCE_G11,
  195. SYS_STR_ITEM_GAME_INTRODUCE_G12,
  196. SYS_STR_ITEM_GAME_INTRODUCE_G13,
  197. SYS_STR_ITEM_GAME_INTRODUCE_G14,
  198. SYS_STR_ITEM_GAME_INTRODUCE_G15,
  199. SYS_STR_ITEM_GAME_INTRODUCE_G16,
  200. SYS_STR_ITEM_GAME_INTRODUCE_G17,
  201. SYS_STR_ITEM_GAME_INTRODUCE_G18,
  202. SYS_STR_ITEM_GAME_INTRODUCE_G19,
  203. SYS_STR_ITEM_GAME_INTRODUCE_G20,
  204. SYS_STR_ITEM_GAME_INTRODUCE_G21,
  205. SYS_STR_ITEM_GAME_INTRODUCE_G22,
  206. SYS_STR_ITEM_GAME_INTRODUCE_G23,
  207. SYS_STR_ITEM_GAME_INTRODUCE_G24,
  208. SYS_STR_ITEM_GAME_INTRODUCE_G25,
  209. SYS_STR_ITEM_GAME_INTRODUCE_G26,
  210. };
  211. void GameShowNumber(WORD bNumber,BYTE bColStart,BYTE bRowStart) large
  212. {
  213. if(bNumber<=9)
  214. {
  215. OledShowIconNew(2,IM_TIME_NUMBER_0+ bNumber*(IM_TIME_NUMBER_1-IM_TIME_NUMBER_0),bColStart,bRowStart);          //TONY061229
  216. OledShowIconNew(2,IM_TIME_NUMBER_0,bColStart-8,bRowStart);   
  217. }
  218. else if((bNumber>9)&&(bNumber<=99))
  219. {
  220. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber%10)*23,bColStart,bRowStart);   
  221. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber/10)*23,bColStart-8,bRowStart);   
  222. }
  223. else if((bNumber>99)&&(bNumber<=999))
  224. {
  225. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber%10)*23,bColStart,bRowStart);   
  226. OledShowIconNew(2,IM_TIME_NUMBER_0+(( bNumber%100)/10)*23,bColStart-8,bRowStart);   
  227. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber/100)*23,bColStart-16,bRowStart);   
  228. }
  229. else if((bNumber>999)&&(bNumber<=9999))
  230. {
  231. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber%10)*23,bColStart,bRowStart);   
  232. OledShowIconNew(2,IM_TIME_NUMBER_0+( ( bNumber%100)/10)*23,bColStart-8,bRowStart);   
  233. OledShowIconNew(2,IM_TIME_NUMBER_0+( ( bNumber%1000)/100)*23,bColStart-16,bRowStart);   
  234. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber/1000)*23,bColStart-24,bRowStart);   
  235. }
  236. else if((bNumber>9999)&&(bNumber<=99999))
  237. {
  238. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber%10)*23,bColStart,bRowStart);   
  239. OledShowIconNew(2,IM_TIME_NUMBER_0+( ( bNumber%100)/10)*23,bColStart-8,bRowStart);   
  240. OledShowIconNew(2,IM_TIME_NUMBER_0+( ( bNumber%1000)/100)*23,bColStart-16,bRowStart);   
  241. OledShowIconNew(2,IM_TIME_NUMBER_0+( ( bNumber%10000)/1000)*23,bColStart-24,bRowStart);   
  242. OledShowIconNew(2,IM_TIME_NUMBER_0+( bNumber/10000)*23,bColStart-32,bRowStart);   
  243. }
  244. }
  245. #define OledShowIcon_new OledShowIcon
  246. void Exe_Select_Game_Option(BYTE Key_Value) large;
  247. void ShowGameMenuSelect(unsigned char cNowGameSelectMenu) large
  248. {
  249. switch(cNowGameSelectMenu)
  250. {
  251. case MENU_GAME_RUSSIAN:
  252. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT,2,SYS_STRING_ROW-1);
  253. break;
  254. case MENU_GAME_SNAKE:
  255. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT,2,SYS_STRING_ROW+SYS_STRING_ROW_OFF-1);
  256. break;
  257. case MENU_GAME_BOX:
  258. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT,2,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2-1);
  259. break;
  260. case MENU_GAME_TANK:
  261. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT,2,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3-1);
  262.              break;
  263. case MENU_GAME_GOBANG:
  264.        OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT,2,SYS_STRING_ROW+SYS_STRING_ROW_OFF*4-1);
  265. break;
  266. default:
  267. break;
  268. }
  269. StrShowSysString(SYS_STR_ITEM_GAME_STR_TANK,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3);
  270. StrShowSysString(SYS_STR_ITEM_GAME_STR_GOBANG,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*4);
  271. StrShowSysString(SYS_STR_ITEM_GAME_STR_RUSSIAN,SYS_STRING_COL,SYS_STRING_ROW);
  272. StrShowSysString(SYS_STR_ITEM_GAME_STR_SNAKE,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF);
  273. StrShowSysString(SYS_STR_ITEM_GAME_STR_BOX,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2);
  274. }
  275. void ShowGameMenuUnSelect(unsigned char cNowGameSelectMenu) large
  276. {
  277. switch(cNowGameSelectMenu)
  278. {
  279. case MENU_GAME_RUSSIAN:
  280. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW-1);
  281. // StrShowSysString(SYS_STR_ITEM_GAME_STR_RUSSIAN,SYS_STRING_COL,SYS_STRING_ROW);
  282. break;
  283. case MENU_GAME_SNAKE:
  284. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF-1);
  285. // StrShowSysString(SYS_STR_ITEM_GAME_STR_SNAKE,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF);
  286. break;
  287. case MENU_GAME_BOX:
  288. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2-1);
  289. // StrShowSysString(SYS_STR_ITEM_GAME_STR_BOX,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2);
  290. break;
  291. case MENU_GAME_TANK:
  292. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3-1);
  293. // OledShowIconNew(6,SYS_STR_ITEM_GAME_STR_TANK,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3);                   
  294. break;
  295. case MENU_GAME_GOBANG:
  296.     OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF*4-1);
  297. // OledShowIconNew(6,SYS_STR_ITEM_GAME_STR_GOBANG,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*4);
  298. break;
  299. default:
  300. break;
  301. }
  302. }
  303. void InitGameMode()
  304. {
  305. NandPrivateEn();
  306. FsRead(SAVE_SETTING_NAND_ADD,1,FS_DATA_0_0);
  307. GameRussianHistoryLevel=gxbFsData[SRAM_GAME_LEVEL_RUSSIAN];
  308. GameSnakeHistoryLevel=gxbFsData[SRAM_GAME_LEVEL_SNAKE];
  309. GameBoxHistoryLevel=gxbFsData[SRAM_GAME_LEVEL_BOXMAN];
  310. GameTankHistoryLevel=gxbFsData[SRAM_GAME_LEVEL_TANK];
  311. // WriteSettingData(FS_DATA_0_0);
  312. NandPrivateDis();
  313. NandFinishJob();
  314. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  315. /*显示总画面*/
  316. //ShowGameMenu();
  317. /*显示选中画面*/
  318. NowGameSelectMenu=NowGameSelectMenu%MENU_GAME_MAX;
  319. ShowGameMenuSelect(NowGameSelectMenu);
  320. gc_GameName=0;/*进入SELECT_GAME_MENU选项*/
  321. GameFlag=0;
  322. }
  323. void ShowGameOptionMenu() large
  324. {
  325. NowGameOptionSelectMenu=NowGameOptionSelectMenu%GAME_OPTION_MAX;
  326. if(gc_GameName != GAME_GOBANG )
  327. {
  328. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT, 4,SYS_STRING_ROW+NowGameOptionSelectMenu*SYS_STRING_ROW_OFF-1);
  329. StrShowSysString(SYS_STR_ITEM_GAME_STR_START,SYS_STRING_COL,SYS_STRING_ROW);
  330. StrShowSysString(SYS_STR_ITEM_GAME_STR_INTRO,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*1);
  331. StrShowSysString(SYS_STR_ITEM_GAME_STR_SETUP,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2);
  332. StrShowSysString(SYS_STR_ITEM_GAME_STR_HISTORY,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3);
  333. }
  334. else
  335. {
  336. StrShowSysString(SYS_STR_ITEM_GAME_STR_START,SYS_STRING_COL,SYS_STRING_ROW);
  337. StrShowSysString(SYS_STR_ITEM_GAME_STR_INTRO,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*1);
  338. }
  339. }
  340. void ShowGameOptionSelect(unsigned char cNowGameOptionSelectMenu) large
  341. {
  342. cNowGameOptionSelectMenu++;
  343. switch(cNowGameOptionSelectMenu)
  344. {
  345. case GAME_OPTION_START:
  346. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT, 2,SYS_STRING_ROW-1);
  347. StrShowSysString(SYS_STR_ITEM_GAME_STR_START,SYS_STRING_COL,SYS_STRING_ROW);
  348. break;
  349. case GAME_OPTION_INTRODUCE:
  350. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT, 2,SYS_STRING_ROW+SYS_STRING_ROW_OFF-1);
  351. StrShowSysString(SYS_STR_ITEM_GAME_STR_INTRO,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF);
  352. break;
  353. case GAME_OPTION_SETUP:
  354. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT, 2,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2-1);
  355. StrShowSysString(SYS_STR_ITEM_GAME_STR_SETUP,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2);
  356. break;
  357. case GAME_OPTION_HISTORY:
  358. OledShowIconNew(6,IM_GAME_BUTTON_01_SELECT, 2,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3-1);
  359. StrShowSysString(SYS_STR_ITEM_GAME_STR_HISTORY,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3);
  360. break;
  361. default:
  362. break;
  363. }
  364. }
  365. void ShowGameOptionUnSelect(unsigned char cNowGameOptionSelectMenu) large
  366. {
  367. cNowGameOptionSelectMenu++;
  368. switch(cNowGameOptionSelectMenu)
  369. {
  370. case GAME_OPTION_START:
  371. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW-1);
  372. StrShowSysString(SYS_STR_ITEM_GAME_STR_START,SYS_STRING_COL,SYS_STRING_ROW);
  373. break;
  374. case GAME_OPTION_INTRODUCE:
  375. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF-1);
  376. StrShowSysString(SYS_STR_ITEM_GAME_STR_INTRO,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF);
  377. break;
  378. case GAME_OPTION_SETUP:
  379. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2-1);
  380. StrShowSysString(SYS_STR_ITEM_GAME_STR_SETUP,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*2);
  381. break;
  382. case GAME_OPTION_HISTORY:
  383. OledShowIconNew(6,IM_GAME_BUTTON_01_UNSELECT,0,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3-1);
  384. StrShowSysString(SYS_STR_ITEM_GAME_STR_HISTORY,SYS_STRING_COL,SYS_STRING_ROW+SYS_STRING_ROW_OFF*3);
  385. break;
  386. default:
  387. break;
  388. }
  389. }
  390. void InitGameOptionMode()
  391. {
  392. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  393. /*显示总画面*/
  394. ShowGameOptionMenu();
  395. /*显示选中画面*/
  396. if(gc_GameName != GAME_GOBANG )
  397. {
  398. NowGameOptionSelectMenu=NowGameOptionSelectMenu%GAME_OPTION_MAX;
  399. }
  400. else
  401. {
  402. NowGameOptionSelectMenu=0;
  403. }
  404. ShowGameOptionSelect(NowGameOptionSelectMenu);
  405. gxb_GameOption=0;/*进入SELECT_GAME_Option选项*/
  406. }
  407. void IntroduceGameRussian() large
  408. {
  409. XBYTE bI;
  410. gxbGameIntroducePage=1;
  411. for(bI=0;bI<7;bI++)
  412. StrShowSysString(cbRussianIntroStr[bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  413. }
  414. void IntroduceGameSnake()
  415. {
  416. XBYTE bI;
  417. gxbGameIntroducePage=1;
  418. for(bI=0;bI<7;bI++)
  419. StrShowSysString(cwSnakeIntroStr[bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  420. }
  421. void IntroduceGameBox()
  422. {
  423. XBYTE bI;
  424. gxbGameIntroducePage=1;
  425. for(bI=0;bI<7;bI++)
  426. StrShowSysString(cwBoxManIntroStr[bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  427. }
  428. void IntroduceGameTank()
  429. {
  430. XBYTE bI;
  431. gxbGameIntroducePage=1;
  432. for(bI=0;bI<7;bI++)
  433. StrShowSysString(cwTankIntroStr[bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  434. }
  435. void IntroduceGameGoB()
  436. {
  437. XBYTE bI;
  438. gxbGameIntroducePage=1;
  439. for(bI=0;bI<7;bI++)
  440. StrShowSysString(cwGoBIntroStr[bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  441. }
  442. void SetupGameRussian()
  443. {
  444. }
  445. void SetupGameSnake()
  446. {
  447. }
  448. void SetupGameBox()
  449. {
  450. }
  451. void HistoryRussian()
  452. {
  453. // BYTE bI,bN;
  454. StrShowSysString(SYS_STR_GAME_HIGHEST_SCORE,LCD_AUTO_CENTER_COL,50);
  455. // for(bI=0;bI<5;bI++)
  456. // {
  457. // if(bI)
  458. // bN=(GameRussianHistoryLevel/(10*bI))%10;
  459. // else
  460. // bN=GameRussianHistoryLevel%10;
  461. GameShowNumber(GameRussianHistoryLevel,76,100);
  462. // }
  463. }
  464. void HistorySnake()
  465. {
  466. // BYTE bI,bN;
  467. StrShowSysString(SYS_STR_GAME_HIGHEST_SCORE,LCD_AUTO_CENTER_COL,50);
  468. // for(bI=0;bI<5;bI++)
  469. // {
  470. // if(bI)
  471. // bN=(GameSnakeHistoryLevel/(10*bI))%10;
  472. // else
  473. // bN=GameSnakeHistoryLevel%10;
  474. GameShowNumber(GameSnakeHistoryLevel,76,100);
  475. // }
  476. }
  477. void HistoryBox()
  478. {
  479. // BYTE bI,bN;
  480. StrShowSysString(SYS_STR_GAME_HIGHEST_SCORE,LCD_AUTO_CENTER_COL,50);
  481. // for(bI=0;bI<5;bI++)
  482. // {
  483. // if(bI)
  484. // bN=(GameBoxHistoryLevel/(10*bI))%10;
  485. // else
  486. // bN=GameBoxHistoryLevel%10;
  487. GameShowNumber(GameBoxHistoryLevel,76,80);
  488. // }
  489. }
  490. void HistoryTank()
  491. {
  492. // BYTE bI,bN;
  493. StrShowSysString(SYS_STR_GAME_HIGHEST_SCORE,LCD_AUTO_CENTER_COL,50);
  494. // for(bI=0;bI<5;bI++)
  495. // {
  496. // if(bI)
  497. // bN=(GameTankHistoryLevel/(10*bI))%10;
  498. // else
  499. // bN=GameTankHistoryLevel%10;
  500. GameShowNumber(GameTankHistoryLevel,76,80);
  501. // }
  502. }
  503. void HistoryGoB()
  504. {
  505. return;
  506. }
  507. #include "Game_Russian.C"
  508. #include "Game_Snake.C"
  509. #include "Game_Box.C"
  510. #include "Game_Tank.C"
  511. #include "Game_Gobang.C"
  512. //#include "Game_Bubble.C"
  513. void InitThisGame()
  514. {
  515. switch(gc_GameName)
  516. {
  517. case GAME_RUSSIAN:
  518. InitGameRussian();
  519. break;
  520. case GAME_SNAKE:
  521. InitGameSnake();
  522. break;
  523. case GAME_BOX:
  524. InitGameBox();
  525. break;
  526. case GAME_TANK:
  527. InitGameTank();
  528. break;
  529. case GAME_GOBANG:
  530.        InitGameGobang();
  531. default:
  532. break;
  533. }
  534. }
  535. void IntroduceThisGame()
  536. {
  537. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  538. gxbGameIntroducePage=1;
  539. switch(gc_GameName)
  540. {
  541. case GAME_RUSSIAN:
  542. IntroduceGameRussian();
  543. break;
  544. case GAME_SNAKE:
  545. IntroduceGameSnake();
  546. break;
  547. case GAME_BOX:
  548. IntroduceGameBox();
  549. break;
  550. case GAME_TANK:
  551. IntroduceGameTank();
  552. break;
  553. case GAME_GOBANG:
  554. IntroduceGameGoB();
  555. break;
  556. default:
  557. break;
  558. }
  559. }
  560. void SetupThisGame()
  561. {
  562. // BYTE bN;
  563. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  564. //StrShowString("Game Level",24,32,10);
  565. StrShowSysString(SYS_STR_GAME_LEVEL,LCD_AUTO_CENTER_COL,48);
  566. switch(gc_GameName)
  567. {
  568. case GAME_RUSSIAN:
  569. GameLevel_Russian=GameLevel_Russian;
  570. GameShowNumber(GameLevel_Russian,GAME_LV_COL,GAME_LV_ROW);
  571. break;
  572. case GAME_SNAKE:
  573. GameLevel_Snake=GameLevel_Snake;
  574. GameShowNumber(GameLevel_Snake,GAME_LV_COL,GAME_LV_ROW);
  575. break;
  576. case GAME_BOX:
  577. // GameLevel_Box=GameLevel_Box%50;
  578. GameShowNumber(GameLevel_Box,GAME_LV_COL,GAME_LV_ROW);
  579. break;
  580. case GAME_TANK:
  581. Gamelevel_Tank=Gamelevel_Tank;
  582. GameShowNumber(Gamelevel_Tank,GAME_LV_COL,GAME_LV_ROW);
  583. break;
  584. case GAME_GOBANG:
  585. break;
  586. default:
  587. break;
  588. }
  589. }
  590. void HistoryThisGame()
  591. {
  592. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  593. switch(gc_GameName)
  594. {
  595. case GAME_RUSSIAN:
  596. HistoryRussian();
  597. break;
  598. case GAME_SNAKE:
  599. HistorySnake();
  600. break;
  601. case GAME_BOX:
  602. HistoryBox();
  603. break;
  604. case GAME_TANK:
  605. HistoryTank();
  606. break;
  607. case GAME_GOBANG:
  608. HistoryGoB();
  609. break;
  610. default:
  611. break;
  612. }
  613. }
  614. void Exe_Select_Game_Menu(BYTE Key_Value) large
  615. {
  616. switch(Key_Value)
  617. {
  618. #if 0
  619. case LONG_KEY_MODE_EVENT:
  620. gc_MainBlock_States=MAIN_FUNCTION_MAINMENU;
  621. InitMainFunction();
  622. break;
  623. #endif
  624. case KEY_UP_BREAK:
  625. gc_GameName=NowGameSelectMenu+1;
  626. gxb_GameOption=0;
  627. InitGameOptionMode();
  628. break;
  629. case KEY_LEFT_BREAK:
  630. //case KEY_VOL_UP_BREAK:
  631. case KEY_LEFT_LONG:
  632. //case KEY_VOL_UP_LONG:
  633. /*清除上一次选中画面*/
  634. ShowGameMenuUnSelect(NowGameSelectMenu);
  635. if(NowGameSelectMenu)
  636. {
  637. NowGameSelectMenu--;
  638. }
  639. else
  640. {
  641. NowGameSelectMenu=MENU_GAME_MAX-1;
  642. }
  643. /*显示选中画面*/
  644. ShowGameMenuSelect(NowGameSelectMenu);
  645. break;
  646. case KEY_RIGHT_BREAK:
  647. //case KEY_VOL_DOWN_BREAK:
  648. case KEY_RIGHT_LONG:
  649. //case KEY_VOL_DOWN_LONG:
  650. /*清除上一次选中画面*/
  651. ShowGameMenuUnSelect(NowGameSelectMenu);
  652. if(NowGameSelectMenu<MENU_GAME_MAX-1)
  653. {
  654. NowGameSelectMenu++;
  655. }
  656. else
  657. {
  658. NowGameSelectMenu=0;
  659. }
  660. /*显示选中画面*/
  661. ShowGameMenuSelect(NowGameSelectMenu);
  662. break;
  663. case KEY_FUNC_BREAK: //tne 2007/01/13 #1
  664. gxbSettingBuffer[SETTING_CURRENT_MODE]=SAVE_AND_PLAY; //vicky060302#1   
  665. gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_SEL_MODE;
  666. gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=TRUE;
  667. gxbLastErrCode=ERR_NO_ERROR;
  668. SaveSetting();
  669. break;
  670. default:
  671. break;
  672. }
  673. }
  674. void Exe_Select_Game_Option(BYTE Key_Value) large
  675. {
  676. switch(Key_Value)
  677. {
  678. // case KEY_MODE_BREAK:
  679. case KEY_FUNC_BREAK:
  680. InitGameMode();
  681. break;
  682. case KEY_UP_BREAK:
  683. gxb_GameOption=NowGameOptionSelectMenu+1;
  684. if(gxb_GameOption==GAME_OPTION_START)
  685. {//开始游戏
  686. InitThisGame();
  687. }
  688. else if(gxb_GameOption==GAME_OPTION_INTRODUCE)
  689. {//介绍游戏
  690. IntroduceThisGame();
  691. }
  692. else if(gxb_GameOption==GAME_OPTION_SETUP)
  693. {//设置游戏
  694. SetupThisGame();
  695. }
  696. else
  697. {//历史记录
  698. HistoryThisGame();
  699. }
  700. break;
  701. case KEY_LEFT_BREAK:
  702. //case KEY_VOL_UP_BREAK: //test now, please check it...
  703. case KEY_LEFT_LONG:
  704. //case KEY_VOL_UP_LONG:
  705. /*清除上一次选中画面*/
  706. if(gc_GameName != GAME_GOBANG )
  707. {
  708. ShowGameOptionUnSelect(NowGameOptionSelectMenu);
  709. if(NowGameOptionSelectMenu)
  710. {
  711. NowGameOptionSelectMenu--;
  712. }
  713. else
  714. {
  715. NowGameOptionSelectMenu=3;
  716. }
  717. }
  718. else
  719. {
  720. ShowGameOptionUnSelect(NowGameOptionSelectMenu);
  721. if(NowGameOptionSelectMenu)
  722. {
  723. NowGameOptionSelectMenu--;
  724. }
  725. else
  726. {
  727. NowGameOptionSelectMenu=1;
  728. }
  729. }
  730. /*显示选中画面*/
  731. ShowGameOptionSelect(NowGameOptionSelectMenu);
  732. break;
  733. case KEY_RIGHT_BREAK:
  734. case KEY_VOL_DOWN_BREAK:
  735. case KEY_RIGHT_LONG:
  736. case KEY_VOL_DOWN_LONG:
  737. if(gc_GameName != GAME_GOBANG )
  738. {
  739. /*清除上一次选中画面*/
  740. ShowGameOptionUnSelect(NowGameOptionSelectMenu);
  741. if(NowGameOptionSelectMenu<3)
  742. {
  743. NowGameOptionSelectMenu++;
  744. }
  745. else
  746. {
  747. NowGameOptionSelectMenu=0;
  748. }
  749. /*显示选中画面*/
  750. ShowGameOptionSelect(NowGameOptionSelectMenu);
  751. }
  752. else
  753. {
  754. ShowGameOptionUnSelect(NowGameOptionSelectMenu);
  755. if(NowGameOptionSelectMenu<1)
  756. {
  757. NowGameOptionSelectMenu++;
  758. }
  759. else
  760. {
  761. NowGameOptionSelectMenu=0;
  762. }
  763. /*显示选中画面*/
  764. ShowGameOptionSelect(NowGameOptionSelectMenu);
  765. }
  766. break;
  767. default:
  768. break;
  769. }
  770. }
  771. void Game_KeyDown(BYTE Key_Value) large
  772. {
  773. if(Key_Value)
  774. {
  775. switch(gc_GameName)
  776. {
  777. case SELECT_GAME_MENU:
  778. Exe_Select_Game_Menu(Key_Value);
  779. break;
  780. case GAME_RUSSIAN:
  781. Exe_Game_Russian(Key_Value);
  782. break;
  783. case GAME_SNAKE:
  784. Exe_Game_Snake(Key_Value);
  785. break;
  786. case GAME_BOX:
  787. Exe_Game_Box(Key_Value);
  788. break;
  789. case GAME_TANK:
  790. Exe_Game_Tank(Key_Value);
  791. break;
  792. case GAME_GOBANG:
  793. Exe_Game_Gobang(Key_Value);
  794. break;
  795. default:
  796. break;
  797. }
  798. }
  799. }
  800. void Game_TimerOut()
  801. {
  802. switch(gc_GameName)
  803. {
  804. case GAME_RUSSIAN:
  805. Exe_Russian_TimerOut();
  806. break;
  807. case GAME_SNAKE:
  808. Exe_Snake_TimerOut();
  809. break;
  810. case GAME_TANK:
  811. Exe_Tank_TimerOut();
  812. break;
  813. case GAME_GOBANG:
  814. Exe_Gobang_Timerout();
  815. default:
  816. break;
  817. }
  818. }