📄 helloworld.c.bak
字号:
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEDisp.h" // Display interface definitions
#include "AEEImage.h" // IImage interface definitions
#include "AEEStdlib.h" // Standard library definitions
#include "AEEFile.h" // AEEFile Services
#include "helloworld.bid" // applet class ID
#include "helloworld_res.h" // Resource file name
//#define pMe->mine_width 15
//#define pMe->mine_height 19
#define AEECLSID_TIMERAPP 0x0100FF02
//#define mine_num 15
#define start_state 1
#define gameover_state 2
#define title_state 3
#define menu_state 4
#define ready_state 5
#define gameover_state_next 6
#define gameover_state_middle 7
#define clear_state 8
#define clear_state_middle 9
#define score_state 10
#define ques_state 11
#define popup_state 12
#define help_state 13
#define help2_state 14
#define control_state 15
#define timerValue 1000
#define startValue 3000
#define overValue 1500
#define clearValue 1500
#define bomb_align -11
#define bomb_align1 -4
#define bomb_align2 -4
#define bomb_align3 -9
#define max_time 999
#define PHONE_TEST 1
/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
typedef struct _mousept
{
AEEApplet a;
int x; // cursor x point
int y; // cursor y point
int field_state[30][30]; // 拜磊狼 惑怕
int mine_state[30][30]; // mine position
int state; // game 狼 傈眉 state
int m_cyHeight; // lcd height
int m_cxWidth; // lcd width
int mine_width; // 拜磊狼 啊肺 沫荐
int mine_height; // 拜磊狼 技肺 沫荐
int time_count; // timer var
int flag_count; // flag 荐
int ready_count; // ready 濒糊烙 冉荐
int gameover_count; // gameover 濒糊烙 冉荐
int over_tag; // gameover 矫狼 惑怕
int oversound_tag; // gameover 矫俊 荤款靛 免仿窍扁 困茄 var
int menu_position; // menu 俊辑狼 泅犁困摹
int title_tag; // title animation 阑 困茄 var
int menu_tag; // menu animation 阑 困茄 var
int popup_position; // popup menu 俊辑狼 困摹 var
int ii; // ready img 狼 碍力 blink 冉荐
int iii; // gameover img 狼 碍力 blink 冉荐
int mine_num; //傈眉 mine 狼 办荐
int sound_tag; //sound on/off var
int myscore_tag; // 规陛 扁废茄 弥绊痢荐甫 pointing
int score_tag ; // 弥绊痢荐 官娄烙
unsigned long Next_Seed;
unsigned long Seed;
unsigned short pBuffer[5];
unsigned short pBuffer1[5];
unsigned short pBuffer2[5];
unsigned short pBuffer3[5];
unsigned short pBuffer4[5];
IFileMgr * m_pIFileMgr;
IFileMgr * m_mmfMgr;
/*
IFileMgr * m_mmfMgr1;
IFileMgr * m_mmfMgr2;
IFileMgr * m_mmfMgr3;
IFileMgr * m_mmfMgr4;
IFileMgr * m_mmfMgr5;
IFileMgr * m_mmfMgr6;
IFileMgr * m_mmfMgr7;
*/
ISoundPlayer * m_pISoundPlayer;
ISoundPlayer * m_pISoundPlayer1;
ISoundPlayer * m_pISoundPlayer2;
ISoundPlayer * m_pISoundPlayer3;
ISoundPlayer * m_pISoundPlayer4;
ISoundPlayer * m_pISoundPlayer5;
ISoundPlayer * m_pISoundPlayer6;
ISoundPlayer * m_pISoundPlayer7;
byte * pBuf;
byte * pBuf1;
byte * pBuf2;
byte * pBuf3;
byte * pBuf4;
byte * pBuf5;
byte * pBuf6;
byte * pBuf7;
IFile * m_pIFile;
IFile * m_mmffile;
IFile * m_mmffile1;
IFile * m_mmffile2;
IFile * m_mmffile3;
IFile * m_mmffile4;
IFile * m_mmffile5;
IFile * m_mmffile6;
IFile * m_mmffile7;
IImage * m_arrow;
IImage * m_field;
IImage * m_ques;
IImage * m_flag;
IImage * m_common;
IImage * m_1;
IImage * m_2;
IImage * m_3;
IImage * m_4;
IImage * m_5;
IImage * m_6;
IImage * m_7;
IImage * m_8;
IImage * m_red;
IImage * m_fail;
IImage * m_ready;
IImage * m_over;
IImage * m_clear;
IImage * m_menu1;
IImage * m_menu2;
IImage * m_menu3;
IImage * m_menu4;
IImage * m_menu5;
IImage * m_menu6;
IImage * m_menu7;
IImage * m_char1;
IImage * m_char2;
IImage * m_bomb1;
IImage * m_bomb2;
IImage * m_title1;
IImage * m_title2;
IImage * m_mainbg;
IImage * m_pressimg;
IImage * m_clockimg;
IImage * m_ktfimg;
IImage * m_mnimg;
IImage * m_pop1;
IImage * m_pop2;
IImage * m_pop3;
IImage * m_popmain;
IImage * m_pophelp;
IImage * m_popresume;
IImage * m_popend;
IImage * m_keypad;
}mousept;
static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode,
uint16 wParam, uint32 dwParam);
static void mine_FreeAppData(IApplet* pi);
static void draw_mainfield(mousept * pMe) ;
static void draw_gameover(mousept * pMe,int tag) ;
static void ready_game(mousept * pMe) ;
static void draw_bg(mousept * pMe) ;
static void draw_overimg(mousept * pMe) ;
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
*ppObj = NULL;
if(ClsId == AEECLSID_HELLOWORLD){
if(AEEApplet_New(sizeof(mousept), ClsId, pIShell,po,(IApplet**)ppObj,
(AEEHANDLER)HelloWorld_HandleEvent,(PFNFREEAPPDATA)mine_FreeAppData)
== TRUE)
{
return (AEE_SUCCESS);
}
}
return (EFAILED);
}
static void TimerCB(mousept * pMe)
{
AECHAR sz3R[] = {'3','R',' ',' ','I','n','c','.','\0'};
if (pMe->state==gameover_state_middle) {
// pMe->state=gameover_state_next;
} else if (pMe->state==clear_state_middle) {
pMe->state=clear_state;
} else if (pMe->state==score_state) {
if (pMe->score_tag==0) {
IDISPLAY_ClearScreen (pMe->a.m_pIDisplay); // Clear whole screen
draw_bg(pMe);
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_menu5,pMe->m_cxWidth/2-28,pMe->m_cyHeight/2-35);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2-20, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer1, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2-10, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer2, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer3, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2+10, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer4, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2+20, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
pMe->score_tag=1;
IDISPLAY_Update (pMe->a.m_pIDisplay);
} else if (pMe->score_tag==1) {
IDISPLAY_ClearScreen (pMe->a.m_pIDisplay); // Clear whole screen
draw_bg(pMe);
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_menu5,pMe->m_cxWidth/2-28,pMe->m_cyHeight/2-35);
if (pMe->myscore_tag!=0)
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2-20, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
if (pMe->myscore_tag!=1)
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer1, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2-10, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
if (pMe->myscore_tag!=2)
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer2, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
if (pMe->myscore_tag!=3)
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer3, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2+10, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
if (pMe->myscore_tag!=4)
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,pMe->pBuffer4, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2+20, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
pMe->score_tag=0;
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
ISHELL_SetTimer(pMe->a.m_pIShell,500,(PFNNOTIFY)TimerCB,pMe);
} else if (pMe->state==title_state) {
if (pMe->title_tag==0) {
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_ktfimg,pMe->m_cxWidth/2-60+2,pMe->m_cyHeight/2-60+3);
IIMAGE_Draw(pMe->m_mnimg,pMe->m_cxWidth/2+18,pMe->m_cyHeight/2-57);
IIMAGE_Draw(pMe->m_title1,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-42);
IIMAGE_Draw(pMe->m_pressimg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2+30);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,sz3R, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2, 0,IDF_ALIGN_CENTER|IDF_ALIGN_BOTTOM|IDF_TEXT_TRANSPARENT);
pMe->title_tag=1;
IDISPLAY_Update (pMe->a.m_pIDisplay);
} else if (pMe->title_tag==1) {
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_ktfimg,pMe->m_cxWidth/2-60+2,pMe->m_cyHeight/2-60+3);
IIMAGE_Draw(pMe->m_mnimg,pMe->m_cxWidth/2+18,pMe->m_cyHeight/2-57);
IIMAGE_Draw(pMe->m_title1,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-42);
//IIMAGE_Draw(pMe->m_pressimg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2+30);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD,sz3R, -1,pMe->m_cxWidth/2,pMe->m_cyHeight/2, 0,IDF_ALIGN_CENTER|IDF_ALIGN_BOTTOM|IDF_TEXT_TRANSPARENT);
pMe->title_tag=0;
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
ISHELL_SetTimer(pMe->a.m_pIShell,500,(PFNNOTIFY)TimerCB,pMe);
} else if (pMe->state==gameover_state||pMe->state==gameover_state_next) {
pMe->iii++;
if (pMe->gameover_count==0)
pMe->gameover_count=1;
else
pMe->gameover_count=0;
//draw_mainfield(pMe);
draw_gameover(pMe,pMe->over_tag);
draw_overimg(pMe);
if (pMe->iii>=2) {
pMe->state=gameover_state_next;
}
//blink
} else if (pMe->state==menu_state) {
if (pMe->menu_tag==0) {
IDISPLAY_ClearScreen (pMe->a.m_pIDisplay); // Clear whole screen
draw_bg(pMe);
/*
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd, -1, 50,0, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd1, -1, 50,20, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd2, -1, 50,30, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd3, -1, 50,40, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd4, -1, 50,50, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd5, -1, 50,60, 0,IDF_ALIGN_CENTER);//print
*/
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_menu1,pMe->m_cxWidth/2-20,pMe->m_cyHeight/2-50);
IIMAGE_Draw(pMe->m_menu1,pMe->m_cxWidth/2-20,pMe->m_cyHeight/2-50);
IIMAGE_Draw(pMe->m_menu2,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2-30);
IIMAGE_Draw(pMe->m_menu7,pMe->m_cxWidth/2-40,pMe->m_cyHeight/2-15);
IIMAGE_Draw(pMe->m_menu3,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2);
IIMAGE_Draw(pMe->m_menu4,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2+15);
IIMAGE_Draw(pMe->m_menu5,pMe->m_cxWidth/2-36,pMe->m_cyHeight/2+30);
IIMAGE_Draw(pMe->m_menu6,pMe->m_cxWidth/2-21,pMe->m_cyHeight/2+45);
IIMAGE_Draw(pMe->m_char2,pMe->m_cxWidth/2+26,pMe->m_cyHeight/2+5);
//cygnusmenu
switch(pMe->menu_position) {
case 0:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50+bomb_align1,pMe->m_cyHeight/2-30+bomb_align3);
break;
case 1:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50-3+bomb_align1,pMe->m_cyHeight/2-15+bomb_align3);
break;
case 2:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50+bomb_align1,pMe->m_cyHeight/2+bomb_align3);
break;
case 3:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50+bomb_align1,pMe->m_cyHeight/2+15+bomb_align3);
break;
case 4:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50+bomb_align1,pMe->m_cyHeight/2+30+bomb_align3);
break;
case 5:
IIMAGE_Draw(pMe->m_bomb2,pMe->m_cxWidth/2-50+bomb_align1,pMe->m_cyHeight/2+45+bomb_align3);
break;
}
pMe->menu_tag=1;
IDISPLAY_Update (pMe->a.m_pIDisplay);
} else if (pMe->menu_tag==1) {
IDISPLAY_ClearScreen (pMe->a.m_pIDisplay); // Clear whole screen
draw_bg(pMe);
/*
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd, -1, 50,0, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd1, -1, 50,20, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd2, -1, 50,30, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd3, -1, 50,40, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd4, -1, 50,50, 0,IDF_ALIGN_CENTER);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, szBufd5, -1, 50,60, 0,IDF_ALIGN_CENTER);//print
*/
IIMAGE_Draw(pMe->m_mainbg,pMe->m_cxWidth/2-60,pMe->m_cyHeight/2-60);
IIMAGE_Draw(pMe->m_menu1,pMe->m_cxWidth/2-20,pMe->m_cyHeight/2-50);
IIMAGE_Draw(pMe->m_menu1,pMe->m_cxWidth/2-20,pMe->m_cyHeight/2-50);
IIMAGE_Draw(pMe->m_menu2,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2-30);
IIMAGE_Draw(pMe->m_menu7,pMe->m_cxWidth/2-40,pMe->m_cyHeight/2-15);
IIMAGE_Draw(pMe->m_menu3,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2);
IIMAGE_Draw(pMe->m_menu4,pMe->m_cxWidth/2-30,pMe->m_cyHeight/2+15);
IIMAGE_Draw(pMe->m_menu5,pMe->m_cxWidth/2-36,pMe->m_cyHeight/2+30);
IIMAGE_Draw(pMe->m_menu6,pMe->m_cxWidth/2-21,pMe->m_cyHeight/2+45);
IIMAGE_Draw(pMe->m_char1,pMe->m_cxWidth/2+26,pMe->m_cyHeight/2+5);
//cygnusmenu
switch(pMe->menu_position) {
case 0:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50+bomb_align2,pMe->m_cyHeight/2-30+bomb_align);
break;
case 1:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50-3+bomb_align2,pMe->m_cyHeight/2-15+bomb_align);
break;
case 2:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50+bomb_align2,pMe->m_cyHeight/2+bomb_align);
break;
case 3:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50+bomb_align2,pMe->m_cyHeight/2+15+bomb_align);
break;
case 4:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50+bomb_align2,pMe->m_cyHeight/2+30+bomb_align);
break;
case 5:
IIMAGE_Draw(pMe->m_bomb1,pMe->m_cxWidth/2-50+bomb_align2,pMe->m_cyHeight/2+45+bomb_align);
break;
}
pMe->menu_tag=0;
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
ISHELL_SetTimer(pMe->a.m_pIShell,500,(PFNNOTIFY)TimerCB,pMe);
} else if (pMe->state==ready_state) {
//cygnusready
pMe->ii++;
if (pMe->ready_count==0)
pMe->ready_count=1;
else
pMe->ready_count=0;
if (pMe->ii==5) {
pMe->state=start_state;
}
draw_mainfield(pMe);
ready_game(pMe);
// ISHELL_SetTimer(pMe->a.m_pIShell,700,(PFNNOTIFY)TimerCB,pMe);
} else if (pMe->state!=popup_state) {
pMe->time_count++;
if (pMe->time_count>=max_time)
pMe->time_count=max_time;
pMe->state=start_state;
draw_mainfield(pMe);
ISHELL_SetTimer(pMe->a.m_pIShell,timerValue,(PFNNOTIFY)TimerCB,pMe);
}
}
void draw_timer(mousept * pMe) {
char myNum[]=" ";
char flagNum[]=" ";
char flagNum2[]=" ";
AECHAR szBuf [10] = {0};
/*
myNum[0]='\0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -