MTK国产手机游戏源代码--推箱子

作者:Matrix 被围观: 5,009 次 发布时间:2011-09-09 分类:兼容并蓄 拷贝型 | 无评论 »

NOTICE:这是一个创建于 1912 天前的主题,其中的信息可能已经有所发展或是发生改变。

code

mtk——国产山寨手机占主导地位的芯片。

很是“庆幸”啊!俺的山寨机(奥迪R8,没听说过吧。)也正好是mt6225的,嘿嘿。

现在mrp格式的soft逐渐多了起来,才有了我们机友玩的,在此也感谢一些民间的mrp软件开发者:墨水瓶以及各位工作者,虽说我都不认识,但是我的的确确在用他写的软件。

下面的代码本人根本看不懂,贴出来只是给各位爱好者提供一些基础的东东。

 

去掉了数据部分和内核。,留下了框架供大家学习MTK平台开发。下载或者copy 下面代码

  1. #include "GlobalDefs.h"  
  2. #include "HistoryGprot.h"  
  3. #include "GlobalConstants.h"  
  4. #include "MMI_features.h"  
  5. #include "PixtelDataTypes.h"  
  6. #include "Unicodexdcl.h"  
  7. #include "gui.h"  
  8. #include "Calculator.h"  
  9. #include "SettingProfile.h"  
  10. #include "ProfileGprots.h"  
  11. #include "Globaldefs.h"  
  12. #include "CustDataRes.h"  
  13. #include "gui_themes.h"  
  14. #include "wgui_categories.h"  
  15. #include "wgui_softkeys.h"  
  16. #include "HistoryGprot.h"  
  17. #include "OrganizerDef.h"  
  18. #include "GameDefs.h"  
  19. #define mtk_GUANSHU 40  
  20. #define PUSH_LCD_WIDTH 176  
  21. #define PUSH_LCD_HEIGHT 220  
  22. static const char MTK_DATA[MTK_GUANSHU][80] = { {1,1,1,1,1,1,1,1,1,1,  
  23. 1,0,0,0,1,3,0,1,1,1,  
  24. 1,3,0,0,2,0,0,1,1,1,  
  25. 1,1,2,1,1,0,0,1,1,1,  
  26. 1,0,0,1,1,2,1,1,1,1,  
  27. 1,0,0,4,0,0,0,1,1,1,  
  28. 1,0,3,1,0,0,0,1,1,1,  
  29. 1,1,1,1,1,1,1,1,1,1}};  
  30. typedef struct{  
  31. INT16 X;  
  32. INT16 Y;  
  33. }MTK_POS;  
  34. typedef struct{  
  35. UINT8 Data1;  
  36. UINT8 Data2;  
  37. } MTK_sg_PUSHBOXSTRUCT;  
  38. static MTK_sg_PUSHBOXSTRUCT g_Pushbox;  
  39. static char Config_Passs=1;  
  40. enum{  
  41. PushSharp_Blank  
  42. , PushSharp_Bar  
  43. , PushSharp_Box  
  44. , PushSharp_Goal  
  45. , PushSharp_Boxer  
  46. , PushSharp_Ok  
  47. }e_PushSharp;  
  48. void Game_Push_Null(void)  
  49. {  
  50. return;  
  51. }  
  52. /*Name:Calculate 
  53. Desc: Calculate the current position of the block 
  54. Return: no return value 
  55. Author: helloworld 
  56. */  
  57. static void Game_Push_Calculate( UINT8 val )  
  58. {  
  59. UINT8 row;  
  60. UINT8 col;  
  61. //kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Calculate,val=%d ]\n", val);  
  62. row = val/10;  
  63. col = val - row * 10;  
  64. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Calculate,row=%d, col=%d ]\n",row,col);  
  65. g_Pushbox.BoxPos.X = 15 * col + 14;  
  66. g_Pushbox.BoxPos.Y = 15 * row + 24;  
  67. }  
  68. static void UIFDrawBitmap(S32 offset_x, S32 offset_y, U16 image_id)  
  69. {  
  70. //kal_prompt_trace(MOD_MMI, "\n[Push-->UIFDrawBitmap, image_id=%d]\n", image_id);  
  71. pixtel_UI_lock_double_buffer();  
  72. //pixtel_UI_reset_clip();  
  73. pixtel_UI_show_image(offset_x,(offset_y +20),(UI_image_type)GetImage(image_id));  
  74. pixtel_UI_unlock_double_buffer();  
  75. pixtel_UI_BLT_double_buffer(0,0,PUSH_LCD_WIDTH,PUSH_LCD_HEIGHT);  
  76. }  
  77. static short Game_Push_Itou(short *pOutStr,long InNum)  
  78. {  
  79. // 0: ox0030  
  80. char NumString[10];  
  81. short i,j;  
  82. short NumLen;// 位数  
  83. memset(NumString,'\0',10);  
  84. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Itoa, InNum=%d]\n", InNum);  
  85. if(NULL==pOutStr)  
  86. {  
  87. return;  
  88. }  
  89. if(InNum/1000000 >0)  
  90. {// to long  
  91. return;  
  92. }  
  93. if(InNum/100000 >0)  
  94. {  
  95. NumLen=6;  
  96. }  
  97. else if(InNum/10000 >0)  
  98. {  
  99. NumLen=5;  
  100. }  
  101. else if(InNum/1000 >0)  
  102. {  
  103. NumLen=4;  
  104. }  
  105. else if(InNum/100 >0)  
  106. {  
  107. NumLen=3;  
  108. }  
  109. else if(InNum/10 >0)  
  110. {  
  111. NumLen=2;  
  112. }  
  113. else  
  114. {  
  115. NumLen=1;  
  116. }  
  117. for(i=NumLen;i>0;i--)  
  118. {  
  119. if(1==i)  
  120. {  
  121. NumString[0]= InNum%10 +'0';  
  122. }  
  123. else if(2==i)  
  124. {  
  125. NumString[i-1]= (InNum/10)%10 +'0';  
  126. }  
  127. else if(3==i)  
  128. {  
  129. NumString[i-1]= (InNum/100)%10 +'0';  
  130. }  
  131. else if(4==i)  
  132. {  
  133. NumString[i-1]= (InNum/1000)%10 +'0';  
  134. }  
  135. else if(5==i)  
  136. {  
  137. NumString[i-1]= (InNum/10000)%10 +'0';  
  138. }  
  139. pOutStr[NumLen-i]= NumString[i-1];  
  140. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Itoa, =%d]\n", pOutStr[NumLen-i]);  
  141. }  
  142. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Itoa, len=%d]\n",NumLen);  
  143. return j;  
  144. }  
  145. const color PushTextColor = {0,0,100,100};  
  146. static void Game_Push_DrawString(void)  
  147. {  
  148. #define REC_POS_X 1  
  149. #define REC_POS_Y 170  
  150. #define REC_POS_W 176  
  151. #define REC_POS_H 50  
  152. S32 w;  
  153. short Psss_uncode[10], Step_uncode[10];  
  154. memset(Psss_uncode,'\0',10);  
  155. memset(Step_uncode,'\0',10);  
  156. Game_Push_Itou(Psss_uncode, (long)Config_Passs);  
  157. Game_Push_Itou(Step_uncode, (long)g_Pushbox.step);  
  158. pixtel_UI_lock_double_buffer();  
  159. pixtel_UI_set_font(&MMI_medium_font);  
  160. pixtel_UI_set_text_color(PushTextColor);  
  161. pixtel_UI_reset_clip();  
  162. pixtel_UI_reset_text_clip();  
  163. pixtel_UI_move_text_cursor( 63, 185 );  
  164. pixtel_UI_print_text((UI_string_type)Psss_uncode);  
  165. UIFDrawBitmap( 145, (185 -20) ,IMG_ID_PUSH_BOX_SMALL_BKG);  
  166. UIFDrawBitmap( 155, (185 -20) ,IMG_ID_PUSH_BOX_SMALL_BKG);  
  167. pixtel_UI_move_text_cursor( 145, 185 );  
  168. pixtel_UI_print_text((UI_string_type)Step_uncode);  
  169. pixtel_UI_unlock_double_buffer();  
  170. pixtel_UI_BLT_double_buffer(REC_POS_X, REC_POS_Y, REC_POS_X + REC_POS_W, REC_POS_Y + REC_POS_H);  
  171. return;  
  172. }  
  173. // service for FirstDraw and commonDraw  
  174. static void Game_Push_Draw(INT8 i )  
  175. {  
  176. Game_Push_Calculate( i );  
  177. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_Draw, drawID=%d, posX=%d, posY=%d]\n", g_Pushbox.tempbox, g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y);  
  178.   
  179. switch( g_Pushbox.tempbox )  
  180. {  
  181. case 0: //为空时根本就不用画. 让他显示背景,(不行! 还是要画)  
  182. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_BLANK);  
  183. break;  
  184. case 1:  
  185. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_BAR);  
  186. break;  
  187. case 2:  
  188. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_BOX);  
  189. break;  
  190. case 3:/*这是个傻办法, 以保证用24.. 但又不露出背景... 挖空背景后, 仍要用, 因为推走box后,要立即将其覆盖掉 */  
  191. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y,IMG_ID_PUSH_BOX_GOAL);  
  192. break;  
  193. case 4:  
  194. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_BOXER);  
  195. break;  
  196. case 5:  
  197. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y,IMG_ID_PUSH_BOX_OK);  
  198. break;  
  199. case 6:  
  200. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_BOXER );  
  201. break;  
  202. case 7:  
  203. UIFDrawBitmap( g_Pushbox.BoxPos.X, g_Pushbox.BoxPos.Y, IMG_ID_PUSH_BOX_SMALL_BKG );  
  204. break;  
  205. default:  
  206. break;  
  207. }  
  208. }  
  209. static void Game_Push_FirstDraw(void)  
  210. {  
  211. short i;  
  212. pixtel_UI_lock_double_buffer();  
  213. pixtel_UI_reset_clip();  
  214. clear_screen();  
  215. UIFDrawBitmap( 0, 0,IMG_ID_PUSH_BOX_BKG); //大背景  
  216. for( i = 0; i < 80; i++ )  
  217. {  
  218. Game_Push_Draw( i );  
  219. }  
  220. Game_Push_DrawString();  
  221. pixtel_UI_unlock_double_buffer();  
  222. pixtel_UI_BLT_double_buffer(0,0,PUSH_LCD_WIDTH,PUSH_LCD_HEIGHT);  
  223. }  
  224. static void Game_Push_ComonDraw(void)  
  225. {  
  226. Game_Push_Draw( g_Pushbox.BeforeBoxer );  
  227. Game_Push_Draw( g_Pushbox.Boxer );  
  228. Game_Push_Draw( g_Pushbox.AfterBoxer );  
  229. }  
  230. static void Game_Push_Ini(void)  
  231. {//开局  
  232. short i;  
  233. g_Pushbox.over = FALSE;  
  234. g_Pushbox.goalnum = 0;  
  235. g_Pushbox.I = 0;  
  236. g_Pushbox.step = 0;  
  237. for( i = 0; i < 80; i++ ) { g_Pushbox.tempbox = MTK_DATA[Config_Passs - 1]; if( ( g_Pushbox.tempbox == 3 ) || ( g_Pushbox.tempbox == 5 ) || ( g_Pushbox.tempbox == 6 ) ) { g_Pushbox.goalnum++; } if( ( g_Pushbox.tempbox == 4 ) || ( g_Pushbox.tempbox == 6 ) ) { g_Pushbox.Boxer = i; } if( g_Pushbox.tempbox == 5 ) { g_Pushbox.I++; } } } static void Game_Push_DeIni(void) { return; } //新开局 static void Game_Push_BeginNewStep(void) { Game_Push_Ini(); Game_Push_FirstDraw(); return; } void Game_Push_Begin(void); static void Game_Push_ConfirmNewGame(void) { //GoBackHistory(); Game_Push_Begin(); return; } static void Game_Push_ConfirmExitGame(void) { Game_Push_DeIni(); GoBacknHistory(2); //GoBackHistory(); return; } static char Game_Push_GameOverProc(void) { if( FALSE == g_Pushbox.over ) { return g_Pushbox.over; } Config_Passs++; if( Config_Passs > MTK_GUANSHU )  
  238. {  
  239. Config_Passs = 1;  
  240. }  
  241. DisplayConfirm( STR_GLOBAL_YES, IMG_GLOBAL_YES,  
  242. STR_GLOBAL_NO, IMG_GLOBAL_NO,  
  243. get_string(STR_GAME_RESUME),IMG_GLOBAL_QUESTION, WARNING_TONE);  
  244. SetRightSoftkeyFunction(Game_Push_ConfirmExitGame,KEY_EVENT_UP);  
  245. SetLeftSoftkeyFunction(Game_Push_ConfirmNewGame,KEY_EVENT_UP);  
  246. return g_Pushbox.over;  
  247. }  
  248. /*Name:MoveStep 
  249. Desc: Move the block 
  250. Return: no return value 
  251. Author: helloworld 
  252. */  
  253. static void Game_Push_MoveStep( void)  
  254. {  
  255. //core  
  256. }  
  257. static void Game_Push_UpKeyProc(void)  
  258. {  
  259. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_UpKeyProc]\n");  
  260. g_Pushbox.flag = 0 - 10;  
  261. Game_Push_MoveStep();  
  262. return;  
  263. }  
  264. static void Game_Push_DownKeyProc(void)  
  265. {  
  266. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_DownKeyProc]\n");  
  267. g_Pushbox.flag = 10;  
  268. Game_Push_MoveStep();  
  269. return;  
  270. }  
  271. static void Game_Push_LeftKeyProc(void)  
  272. {  
  273. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_LeftKeyProc]\n");  
  274. g_Pushbox.flag = -1;  
  275. Game_Push_MoveStep();  
  276. return;  
  277. }  
  278. static void Game_Push_RightKeyProc(void)  
  279. {  
  280. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_RightKeyProc]\n");  
  281. g_Pushbox.flag = 1;  
  282. Game_Push_MoveStep();  
  283. return;  
  284. }  
  285. static void Game_Push_HashKeyProc(void)  
  286. {  
  287. kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_HashKeyProc]\n");  
  288. Config_Passs--;  
  289. if( Config_Passs < 1 ) { Config_Passs = MTK_GUANSHU; } Game_Push_BeginNewStep(); return; } static void Game_Push_StarKeyProc(void) { kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_StarKeyProc]\n");  
  290. Config_Passs++;  
  291. if( Config_Passs > MTK_GUANSHU )  
  292. {  
  293. Config_Passs = 1;  
  294. }  
  295. Game_Push_BeginNewStep();  
  296. return;  
  297. }  
  298. static void Game_Push_SendKeyProc(void)  
  299. {  
  300. Game_Push_BeginNewStep();  
  301. return;  
  302. }  
  303. static void Game_Push_EndKeyProc(void)  
  304. {  
  305. Game_Push_DeIni();  
  306. GoBackHistory();  
  307. return;  
  308. }  
  309. static void Game_Push_SetKeysHandle(void)  
  310. {  
  311. //kal_prompt_trace(MOD_MMI, "\n[Push-->Game_Push_SetKeysHandle]\n");  
  312. ClearAllKeyHandler();  
  313. SetKeyHandler(Game_Push_UpKeyProc, KEY_UP_ARROW, KEY_EVENT_DOWN);  
  314. SetKeyHandler(Game_Push_DownKeyProc, KEY_DOWN_ARROW, KEY_EVENT_DOWN);  
  315. SetKeyHandler(Game_Push_LeftKeyProc, KEY_LEFT_ARROW, KEY_EVENT_DOWN);  
  316. SetKeyHandler(Game_Push_RightKeyProc, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);  
  317. // * #  
  318. SetKeyHandler(Game_Push_StarKeyProc, KEY_STAR, KEY_EVENT_DOWN);  
  319. SetKeyHandler(Game_Push_HashKeyProc, KEY_POUND, KEY_EVENT_DOWN);  
  320. // send, end  
  321. SetKeyHandler(Game_Push_SendKeyProc, KEY_SEND, KEY_EVENT_DOWN);  
  322. SetKeyHandler(Game_Push_EndKeyProc, KEY_END, KEY_EVENT_DOWN);  
  323. // back  
  324. SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);  
  325. }  
  326. static void Game_Push_Entry(void)  
  327. {  
  328. EntryNewScreen(SCR_ID_CALC_APP, NULL, Game_Push_Entry, NULL);  
  329. Game_Push_FirstDraw();  
  330. RedrawCategoryFunction=Game_Push_FirstDraw;  
  331. }  
  332. // for menu  
  333. void Game_Push_Begin(void)  
  334. {  
  335. Game_Push_Ini();  
  336. Game_Push_Entry();  
  337. Game_Push_SetKeysHandle();  
  338. return;  
  339. }  
本文固定链接:http://www.hhtjim.com/mtk-source-of-domestic-mobile-phone-game-sokoban.html
Matrix
本文章由 Matrix 于2011年09月09日发布在兼容并蓄, 拷贝型分类下,目前没有通告,你可以至底部留下评论。
转载请注明:MTK国产手机游戏源代码--推箱子-HHTjim'S 部落格
关键字:, ,

添加新评论 »

 😛 Sad 忧伤 👿 Smile 笑脸 😳 😀 😯 😮 😕 😎 😆 😡 😈 Roll Eyes 转眼珠 😉 💡 😐 😥 Mr Green 绿脸先生

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!