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

压缩解压

开发平台:

C++ Builder

  1. #define NUMBERBLOCKOFLINE 16
  2. #define NUMBERBLOCKOFROW 10
  3. #define GAME_LEV_NUMB_COL  96
  4. #define GAME_LEV_NUM_ROW    40
  5. #define GAME_SCO_NUM_COL    116
  6. #define GAME_SCO_NUM_ROW   110
  7. XBYTE SharpType,SharpStatus,New_SharpType,New_SharpStatus;
  8. XBYTE Russia_A,Russia_B;
  9. XBYTE MappingTable[NUMBERBLOCKOFLINE+2][NUMBERBLOCKOFROW+4];
  10. XBYTE gc_GameTimer;
  11. XBYTE gc_AttemptExit=0;
  12. XBYTE gc_GameIntrduceNowPage;
  13. XBYTE gc_GameIntrduceTotalPage;
  14. void InitGameRussian() large;
  15. /*=================================================
  16. Russian
  17. ==================================================*/
  18. code unsigned char GameSpeed[10]={30,27,24,21,18,15,12,9,6,3};
  19. code unsigned char CellBlockOn[]={0xff,0x81,0xbd,0xa5,0xa5,0xbd,0x81,0xff};
  20. code unsigned char CellBlockOff[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  21. code unsigned char RussiaM[7][4][4][4]={
  22. {
  23. {{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  24. {{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  25. {{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  26. {{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  27. },
  28. {
  29. {{0,0,0,0},{1,1,1,1},{0,0,0,0},{0,0,0,0}},
  30. {{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},
  31. {{0,0,0,0},{1,1,1,1},{0,0,0,0},{0,0,0,0}},
  32. {{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},
  33. },
  34. {
  35. {{0,1,0,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}},
  36. {{0,1,0,0},{0,1,1,0},{0,1,0,0},{0,0,0,0}},
  37. {{0,0,0,0},{1,1,1,0},{0,1,0,0},{0,0,0,0}},
  38. {{0,1,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},
  39. },
  40. {
  41. {{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},
  42. {{0,0,0,0},{0,1,1,0},{1,1,0,0},{0,0,0,0}},
  43. {{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},
  44. {{0,0,0,0},{0,1,1,0},{1,1,0,0},{0,0,0,0}},
  45. },
  46. {
  47. {{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}},
  48. {{0,0,0,0},{1,1,0,0},{0,1,1,0},{0,0,0,0}},
  49. {{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}},
  50. {{0,0,0,0},{1,1,0,0},{0,1,1,0},{0,0,0,0}},
  51. },
  52. {
  53. {{1,0,0,0},{1,0,0,0},{1,1,0,0},{0,0,0,0}},
  54. {{0,0,0,0},{1,1,1,0},{1,0,0,0},{0,0,0,0}},
  55. {{1,1,0,0},{0,1,0,0},{0,1,0,0},{0,0,0,0}},
  56. {{0,0,0,0},{0,0,1,0},{1,1,1,0},{0,0,0,0}},
  57. },
  58. {
  59. {{0,1,0,0},{0,1,0,0},{1,1,0,0},{0,0,0,0}},
  60. {{0,0,0,0},{1,0,0,0},{1,1,1,0},{0,0,0,0}},
  61. {{1,1,0,0},{1,0,0,0},{1,0,0,0},{0,0,0,0}},
  62. {{0,0,0,0},{1,1,1,0},{0,0,1,0},{0,0,0,0}},
  63. },
  64. };
  65. code unsigned char MappingTableMask[NUMBERBLOCKOFLINE+2][NUMBERBLOCKOFROW+4]={
  66. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  67. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  68. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  69. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  70. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  71. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  72. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  73. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  74. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  75. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  76. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  77. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  78. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  79. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  80. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  81. {1,1,0,0,0,0,0,0,0,0,0,0,1,1},
  82. {1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  83. {1,1,1,1,1,1,1,1,1,1,1,1,1,1}
  84. };
  85. void ShowRussiaCellBlock(unsigned char x,unsigned char y,unsigned char OnOff,unsigned char SharpType) large
  86. {
  87. if(OnOff)
  88. {
  89. OledShowIconNew(6,IM_GAME_TETRIS_BLOCK_01+SharpType*(IM_GAME_TETRIS_BLOCK_02-IM_GAME_TETRIS_BLOCK_01),x*6+14,y*6+41);
  90. }
  91. else
  92. {
  93. OledShowIconNew(6,IM_GAME_TETRIS_BLOCK_BLACK,x*6+14,y*6+41); //TONY061229
  94. }
  95. }
  96. void ShowSharp(unsigned char x,unsigned char y,unsigned char Shape11,unsigned char Status,unsigned char OnOff) large
  97. {
  98. unsigned char i,j;
  99. for(i=0;i<4;i++)
  100. {
  101. for(j=0;j<4;j++)
  102. {
  103. if(RussiaM[Shape11][Status][i][j]==1)
  104. {
  105. if(OnOff)
  106. {
  107. ShowRussiaCellBlock(x+j-2,y+i,1,Shape11);
  108. }
  109. else
  110. {
  111. ShowRussiaCellBlock(x+j-2,y+i,0,Shape11);
  112. }
  113. }
  114. }
  115. }
  116. }
  117. /*
  118. void ShowOneLineCellBlock(unsigned char y,unsigned char OnOff) large
  119. {
  120. unsigned char i;
  121. for(i=0;i<NUMBERBLOCKOFROW;i++)
  122. {
  123. if(OnOff)
  124. {
  125. ShowRussiaCellBlock(i,y,1);
  126. }
  127. else
  128. {
  129. ShowRussiaCellBlock(i,y,0);
  130. }
  131. }
  132. }
  133. */
  134. void ShowAllCellBlock() large
  135. {
  136. unsigned char i,j;
  137. for(i=0;i<NUMBERBLOCKOFLINE;i++)
  138. {
  139. for(j=0;j<NUMBERBLOCKOFROW;j++)
  140. {
  141. if(MappingTable[i][j+2])
  142. ShowRussiaCellBlock(j,i,1,0);
  143. else
  144. ShowRussiaCellBlock(j,i,0,0);
  145. }
  146. }
  147. }
  148. void TFT_ShowGameLevel_Russian(unsigned char cLevel) large
  149. {
  150. GameShowNumber(cLevel,GAME_LEV_NUMB_COL,GAME_LEV_NUM_ROW);
  151. }
  152. void TFT_ShowGameScore(unsigned int Score) large
  153. {
  154. // BYTE bI,bN;
  155. // for(bI=0;bI<5;bI++)
  156. // {
  157. // bN=Score%10;
  158. // Score /= 10;
  159. // GameShowNumber(Score,GAME_SCO_NUM_COL,GAME_SCO_NUM_ROW);
  160. GameShowNumber(Score,GAME_SCO_NUM_COL,GAME_SCO_NUM_ROW);
  161. // }
  162. }
  163. void TFT_ShowGameRussianBMP()
  164. {
  165. OLED_CLEAR_ALL();
  166. OledShowIconNew(6,IM_GAME_TETRIS_BG,0,0);
  167. }
  168. unsigned char RussianMove(unsigned char x,unsigned char y,unsigned char Shape11,unsigned char Status) large
  169. {
  170. unsigned char i,j;
  171. for(i=0;i<4;i++)
  172. {
  173. for(j=0;j<4;j++)
  174. {
  175. if(RussiaM[Shape11][Status][i][j]+MappingTable[y+i][x+j]==2)
  176. {
  177. return 0;
  178. }
  179. }
  180. }
  181. return 1;
  182. }
  183. void CreateNewSharp() large
  184. {
  185. unsigned int RandomNumber;
  186. Russia_A=5;
  187. Russia_B=0;
  188. SharpType=New_SharpType;
  189. SharpStatus=New_SharpStatus;
  190. ShowSharp(Russia_A,Russia_B,SharpType,SharpStatus,1);
  191. RandomNumber= TH0;
  192. RandomNumber<<= 4;
  193. RandomNumber+=TL0;
  194. New_SharpType=RandomNumber%7;
  195. New_SharpStatus=RandomNumber%4;
  196. ShowSharp(15,5,SharpType,SharpStatus,0);
  197. ShowSharp(15,5,New_SharpType,New_SharpStatus,1);
  198. if(!RussianMove(Russia_A,Russia_B,SharpType,SharpStatus))
  199. {
  200. GameFlag=3;
  201. OledShowIconNew(6,IM_GAME_CONTINUE_SELECT,SUBMENU_COL,SUBMENU_ROW);
  202. OledShowIconNew(6,IM_GAME_EXIT_NOSELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  203. gc_AttemptExit=0;
  204. /*ZQF Del 2006.04.03*/
  205. // TFT_ShowGameStates(GAME_OVER_STR);
  206. }
  207. }
  208. void ChangeSharp(unsigned char *x,unsigned char *y,unsigned char *Shape11,unsigned char *Status) large
  209. {
  210. if(RussianMove(*x,*y,*Shape11,(*Status+1)%4))
  211. {
  212. ShowSharp(*x,*y,*Shape11,*Status,0);
  213. *Status=(*Status+1)%4;
  214. ShowSharp(*x,*y,*Shape11,*Status,1);
  215. return;
  216. }
  217. }
  218. void AllAreOneLine() large
  219. {
  220. unsigned char i,j,k,l;
  221. unsigned char AllAreOne[4];
  222. k=0;
  223. for(i=0;i<NUMBERBLOCKOFLINE;i++)
  224. {
  225. for(j=2;j<NUMBERBLOCKOFLINE;j++)
  226. {
  227. if(MappingTable[i][j]!=1)
  228. break;
  229. }
  230. if(j>12)
  231. {
  232. AllAreOne[k]=i;
  233. k++;
  234. }
  235. }
  236. if(k>0)
  237. {
  238. i=1;
  239. for(l=0;l<k;l++)
  240. {
  241. i=2*i;
  242. }
  243. i--;
  244. GameRussianScore=GameRussianScore+i*(unsigned int)100;
  245. if(GameRussianScore>60000)
  246. {
  247. if(GameLevel_Russian>GameRussianHistoryLevel)
  248. {
  249. NandPrivateEn();
  250. FsRead(SAVE_SETTING_NAND_ADD,1,FS_DATA_0_0);
  251. GameRussianHistoryLevel=GameLevel_Russian;
  252. gxbFsData[SRAM_GAME_LEVEL_RUSSIAN]=GameLevel_Russian;
  253. //gxbFsData[SRAM_GAME_LEVEL_SNAKE]=GameSnakeHistoryLevel;
  254. //gxbFsData[SRAM_GAME_LEVEL_BOXMAN]=GameBoxHistoryLevel;
  255. NandPrivateDis();
  256. NandFinishJob();
  257. }
  258. if(GameLevel_Russian<9)
  259. {
  260. GameLevel_Russian++;
  261. }
  262. else
  263. {
  264. GameLevel_Russian=0;
  265. }
  266. GameRussianScore=0;
  267. InitGameRussian();
  268. }
  269. for(l=0;l<k;l++)
  270. {
  271. for(j=0;j<10;j++)
  272. MappingTable[AllAreOne[l]][j+2]=0;
  273. }
  274. ShowAllCellBlock();
  275. for(l=0;l<k;l++)
  276. for(i=0;i<AllAreOne[l]+1;i++)
  277. for(j=0;j<NUMBERBLOCKOFROW;j++)
  278. if((AllAreOne[l]-i)!=0)
  279. MappingTable[AllAreOne[l]-i][j+2]=MappingTable[AllAreOne[l]-1-i][j+2];
  280. else
  281. {
  282. MappingTable[AllAreOne[l]-i][j+2]=0;
  283. }
  284. /*ZQF Del 2006.04.03*/
  285. TFT_ShowGameScore(GameRussianScore);
  286. ShowAllCellBlock();
  287. }
  288. }
  289. void GoDown(unsigned char *x,unsigned char *y,unsigned char *Shape11,unsigned char *Status) large
  290. {
  291. unsigned char i,j;
  292. if(RussianMove(*x,*y+1,*Shape11,*Status))
  293. {
  294. ShowSharp(*x,*y,*Shape11,*Status,0);
  295. (*y)++;
  296. ShowSharp(*x,*y,*Shape11,*Status,1);
  297. return;
  298. }
  299. else
  300. {
  301. for(i=0;i<4;i++)
  302. {
  303. for(j=0;j<4;j++)
  304. {
  305. if(RussiaM[*Shape11][*Status][i][j])
  306. MappingTable[*y+i][*x+j]=1;
  307. }
  308. }
  309. AllAreOneLine();
  310. CreateNewSharp();
  311. }
  312. }
  313. void GoLeft(unsigned char *x,unsigned char *y,unsigned char *Shape11,unsigned char *Status) large
  314. {
  315. if(RussianMove(*x-1,*y,*Shape11,*Status))
  316. {
  317. ShowSharp(*x,*y,*Shape11,*Status,0);
  318. (*x)--;
  319. ShowSharp(*x,*y,*Shape11,*Status,1);
  320. return;
  321. }
  322. }
  323. void GoRight(unsigned char *x,unsigned char *y,unsigned char *Shape11,unsigned char *Status) large
  324. {
  325. if(RussianMove(*x+1,*y,*Shape11,*Status))
  326. {
  327. ShowSharp(*x,*y,*Shape11,*Status,0);
  328. (*x)++;
  329. ShowSharp(*x,*y,*Shape11,*Status,1);
  330. return;
  331. }
  332. }
  333. void InitGameRussian() large
  334. {
  335. unsigned char i,j;
  336. for(i=0;i<NUMBERBLOCKOFLINE+2;i++)
  337. {
  338. for(j=0;j<NUMBERBLOCKOFROW+4;j++)
  339. {
  340. MappingTable[i][j]=MappingTableMask[i][j];
  341. }
  342. }
  343. // GameLevel_Russian=0;
  344. //GameLevel_Russian=GameLevel_Russian%9;//已经改为在设置级别里面设置
  345. GameRussianScore=0;
  346. // GameFlag=0;
  347. GameFlag=1;//一进入游戏就开始运行
  348. //TFT_ClearAll();
  349. TFT_ShowGameRussianBMP();
  350. New_SharpType=New_SharpType%7;
  351. New_SharpStatus=New_SharpStatus%4;
  352. gc_GameTimer=GameSpeed[GameLevel_Russian];
  353. CreateNewSharp();
  354. TFT_ShowGameLevel_Russian(GameLevel_Russian);
  355. TFT_ShowGameScore(GameRussianScore);
  356. /*ZQF Del 2006.04.03*/
  357. // TFT_ShowGameStates(GAME_WELCOME_STR);
  358. }
  359. void Exe_Russian_TimerOut()
  360. {
  361. if(gxb_GameOption==GAME_OPTION_START)
  362. {
  363. switch(GameFlag)
  364. {
  365. case 1:
  366. if(!gc_GameTimer)
  367. {
  368. gc_GameTimer=GameSpeed[GameLevel_Russian];
  369. GoDown(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  370. }
  371. break;
  372. case 3:
  373. //GameFlag=4;
  374. break;
  375. default:
  376. break;
  377. }
  378. }
  379. }
  380. void Exe_Game_Russian_Working(BYTE Key_Value) large
  381. {
  382. switch(Key_Value)
  383. {
  384. case KEY_FUNC_LONG:
  385. xbKeyFlag = TRUE;
  386. GameFlag=2;//=2,试图退出;
  387. OledShowIconNew(6,IM_GAME_CONTINUE_SELECT,SUBMENU_COL,SUBMENU_ROW);
  388. OledShowIconNew(6,IM_GAME_EXIT_NOSELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  389. gc_AttemptExit=0;
  390. break;
  391. case KEY_LEFT_BREAK:
  392. case KEY_LEFT_LONG:
  393. GoLeft(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  394. break;
  395. case KEY_RIGHT_BREAK:
  396. case KEY_RIGHT_LONG:
  397. GoRight(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  398. break;
  399. //case KEY_VOL_UP_BREAK: //test now, please check it...
  400. case KEY_UP_BREAK:
  401. ChangeSharp(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  402. break;
  403. case KEY_VOL_DOWN_BREAK:
  404. case KEY_VOL_DOWN_LONG:
  405. // case KEY_VOL_BREAK:
  406. GoDown(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  407. break;
  408. default:
  409. break;
  410. }
  411. }
  412. void Exe_Game_Russian_AttemptExit(BYTE Key_Value) large
  413. {
  414. switch(Key_Value)
  415. {
  416. case KEY_UP_BREAK:
  417. if(gc_AttemptExit)
  418. {
  419. gxb_GameOption=SELECT_GAME_OPTION_MENU;
  420. GameFlag=0;
  421. gc_AttemptExit=0;
  422. InitGameOptionMode();
  423. }
  424. else
  425. {
  426. gc_AttemptExit=0;
  427. GameFlag=1;
  428. ShowAllCellBlock();
  429. GoDown(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  430. gc_GameTimer=GameSpeed[GameLevel_Russian];
  431. }
  432. xbKeyFlag = FALSE;
  433. break;
  434. case KEY_FUNC_BREAK:
  435. gc_AttemptExit=0;
  436. GameFlag=1;
  437. ShowAllCellBlock();
  438. GoDown(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  439. gc_GameTimer=GameSpeed[GameLevel_Russian];
  440. xbKeyFlag = FALSE;
  441. break;
  442. //case KEY_VOL_UP_BREAK: //test now, please check it...
  443. //case KEY_VOL_DOWN_BREAK:
  444. case KEY_LEFT_BREAK:
  445. case KEY_RIGHT_BREAK:
  446. gc_AttemptExit=~gc_AttemptExit;
  447. if(gc_AttemptExit)
  448. {
  449. OledShowIconNew(6,IM_GAME_CONTINUE_NOSELECT,SUBMENU_COL,SUBMENU_ROW);
  450. OledShowIconNew(6,IM_GAME_EXIT_SELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  451. }
  452. else
  453. {
  454. OledShowIconNew(6,IM_GAME_CONTINUE_SELECT,SUBMENU_COL,SUBMENU_ROW);
  455. OledShowIconNew(6,IM_GAME_EXIT_NOSELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  456. }
  457. xbKeyFlag = FALSE;
  458. break;
  459. default:
  460. break;
  461. }
  462. }
  463. void Exe_Game_Russian_AttemptOver(BYTE Key_Value) large
  464. {
  465. switch(Key_Value)
  466. {
  467. case KEY_UP_BREAK:
  468. if(gc_AttemptExit)
  469. {
  470. gxb_GameOption=SELECT_GAME_OPTION_MENU;
  471. GameFlag=0;
  472. gc_AttemptExit=0;
  473. InitGameOptionMode();
  474. }
  475. else
  476. {
  477. InitGameRussian();
  478. }
  479. break;
  480. case KEY_FUNC_BREAK:
  481. // gc_AttemptExit=0;
  482. // GameFlag=1;
  483. // ShowAllCellBlock();
  484. // GoDown(&Russia_A,&Russia_B,&SharpType,&SharpStatus);
  485. // gc_GameTimer=GameSpeed[GameLevel_Russian];
  486. break;
  487. //case KEY_VOL_UP_BREAK: //test now, please check it...
  488. //case KEY_VOL_DOWN_BREAK:
  489. case KEY_LEFT_BREAK:
  490. case KEY_RIGHT_BREAK:
  491. gc_AttemptExit=~gc_AttemptExit;
  492. if(gc_AttemptExit)
  493. {
  494. OledShowIconNew(6,IM_GAME_CONTINUE_NOSELECT,SUBMENU_COL,SUBMENU_ROW);
  495. OledShowIconNew(6,IM_GAME_EXIT_SELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  496. }
  497. else
  498. {
  499. OledShowIconNew(6,IM_GAME_CONTINUE_SELECT,SUBMENU_COL,SUBMENU_ROW);
  500. OledShowIconNew(6,IM_GAME_EXIT_NOSELECT,SUBMENU_COL,SUBMENU_ROW+SUBMENU_OFF);
  501. }
  502. break;
  503. default:
  504. break;
  505. }
  506. }
  507. void Exe_Game_Russian_Start(BYTE Key_Value) large
  508. {
  509. switch(GameFlag)
  510. {
  511. case 1:
  512. Exe_Game_Russian_Working(Key_Value);
  513. break;
  514. case 2:
  515. Exe_Game_Russian_AttemptExit(Key_Value);
  516. break;
  517. case 3:
  518. Exe_Game_Russian_AttemptOver(Key_Value);
  519. break;
  520. default:
  521. break;
  522. }
  523. }
  524. void Exe_Game_Russian_Introduce(BYTE Key_Value) large
  525. {
  526. XBYTE bI;
  527. switch(Key_Value)
  528. {
  529. case KEY_UP_BREAK:
  530. case KEY_FUNC_BREAK:
  531. gxb_GameOption=SELECT_GAME_OPTION_MENU;
  532. InitGameOptionMode();
  533. break;
  534. case KEY_LEFT_BREAK:
  535. //case KEY_VOL_UP_BREAK: //test now, please check it...
  536. switch(gxbLangueType)
  537. {
  538. case LANGUAGE_TYPE_EN:
  539. case LANGUAGE_TYPE_CN:
  540. case LANGUAGE_TYPE_TW:
  541. if(gxbGameIntroducePage>1)
  542. {
  543. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  544. gxbGameIntroducePage--;
  545. for(bI=0;bI<7;bI++)
  546. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  547. }
  548. break;
  549. default:
  550. break;
  551. }
  552. break;
  553. case KEY_VOL_DOWN_BREAK:
  554. case KEY_RIGHT_BREAK:
  555. switch(gxbLangueType)
  556. {
  557. case LANGUAGE_TYPE_EN:
  558. if(gxbGameIntroducePage<RUSSIAN_INTRODUCE_TOTALEN_PAGE)
  559. {
  560. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  561. gxbGameIntroducePage++;
  562. if(gxbGameIntroducePage!=RUSSIAN_INTRODUCE_TOTALEN_PAGE)
  563. {
  564. for(bI=0;bI<7;bI++)
  565. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  566. }
  567. else
  568. {
  569. for(bI=0;bI<3;bI++)
  570. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  571. }
  572. }
  573. break;
  574. break;
  575. case LANGUAGE_TYPE_CN:
  576. if(gxbGameIntroducePage<RUSSIAN_INTRODUCE_TOTALCN_PAGE)
  577. {
  578. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  579. gxbGameIntroducePage++;
  580. if(gxbGameIntroducePage!=RUSSIAN_INTRODUCE_TOTALCN_PAGE)
  581. {
  582. for(bI=0;bI<7;bI++)
  583. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  584. }
  585. else
  586. {
  587. for(bI=0;bI<3;bI++)
  588. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  589. }
  590. }
  591. break;
  592. case LANGUAGE_TYPE_TW:
  593. if(gxbGameIntroducePage<RUSSIAN_INTRODUCE_TOTALTW_PAGE)
  594. {
  595. OledShowIconNew(6,IM_GAME_ABOUT_BG_01,0,0);
  596. gxbGameIntroducePage++;
  597. if(gxbGameIntroducePage!=RUSSIAN_INTRODUCE_TOTALTW_PAGE)
  598. {
  599. for(bI=0;bI<7;bI++)
  600. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  601. }
  602. else
  603. {
  604. for(bI=0;bI<3;bI++)
  605. StrShowSysString(cbRussianIntroStr[(gxbGameIntroducePage-1)*7+bI],SYS_OPOION_COL,bI*16+SYS_OPOION_ROW);
  606. }
  607. }
  608. break;
  609. default:
  610. break;
  611. }
  612. break;
  613. default:
  614. break;
  615. }
  616. }
  617. void Exe_Game_Russian_Setup(BYTE Key_Value) large
  618. {
  619. switch(Key_Value)
  620. {
  621. case KEY_UP_BREAK:
  622. case KEY_FUNC_BREAK:
  623. gxb_GameOption=SELECT_GAME_OPTION_MENU;
  624. InitGameOptionMode();
  625. break;
  626. //case KEY_VOL_UP_BREAK: //test now, please check it...
  627. //case KEY_VOL_UP_LONG:
  628. case KEY_RIGHT_BREAK:
  629. case KEY_RIGHT_LONG:
  630. if(GameLevel_Russian<9)
  631. {
  632. GameLevel_Russian++;
  633. GameShowNumber(GameLevel_Russian,GAME_LV_COL,GAME_LV_ROW);
  634. }
  635. break;
  636. case KEY_VOL_DOWN_BREAK:
  637. case KEY_VOL_DOWN_LONG:
  638. case KEY_LEFT_BREAK:
  639. case KEY_LEFT_LONG:
  640. if(GameLevel_Russian)
  641. {
  642. GameLevel_Russian--;
  643. GameShowNumber(GameLevel_Russian,GAME_LV_COL,GAME_LV_ROW);
  644. }
  645. break;
  646. default:
  647. break;
  648. }
  649. }
  650. void Exe_Game_Russian_History(BYTE Key_Value) large
  651. {
  652. switch(Key_Value)
  653. {
  654. case KEY_UP_BREAK:
  655. case KEY_FUNC_BREAK:
  656. gxb_GameOption=SELECT_GAME_OPTION_MENU;
  657. InitGameOptionMode();
  658. break;
  659. default:
  660. break;
  661. }
  662. }
  663. void Exe_Game_Russian(BYTE Key_Value) large
  664. {
  665. switch(gxb_GameOption)
  666. {
  667. case SELECT_GAME_OPTION_MENU:
  668. Exe_Select_Game_Option(Key_Value);
  669. break;
  670. case GAME_OPTION_START:
  671. Exe_Game_Russian_Start(Key_Value);
  672. break;
  673. case GAME_OPTION_INTRODUCE:
  674. Exe_Game_Russian_Introduce(Key_Value);
  675. break;
  676. case GAME_OPTION_SETUP:
  677. Exe_Game_Russian_Setup(Key_Value);
  678. break;
  679. case GAME_OPTION_HISTORY:
  680. Exe_Game_Russian_History(Key_Value);
  681. break;
  682. default:
  683. break;
  684. }
  685. }