📄 game.c
字号:
BigFishTraval(pMe);
pMe->m_Sprite[1].x=pMe->fish1_x;
pMe->m_Sprite[1].y=pMe->fish1_y;
pMe->m_Sprite[2].x=pMe->fish2_x;
pMe->m_Sprite[2].y=pMe->fish2_y;
pMe->m_Sprite[3].x=pMe->fish3_x;
pMe->m_Sprite[3].y=pMe->fish3_y;
pMe->m_Sprite[4].x=pMe->bigfish_x;
pMe->m_Sprite[4].y=pMe->bigfish_y;
//下面的if语句功能是,使3条小鱼在游过屏幕后再重新返回屏幕右面,并且改变纵坐标
if(pMe->fish1_x<-30)
{
pMe->fish1_x=150;
pMe->fish1_y+=30;
if(pMe->fish1_y>160)
pMe->fish1_y=40;
}
if(pMe->fish2_x<-30)
{
pMe->fish2_x=150;
pMe->fish2_y+=50;
if(pMe->fish2_y>160)
pMe->fish2_y=40;
if(pMe->fish2_y<40)
pMe->fish2_y=40;
}
if(pMe->fish3_x<-30)
{
pMe->fish3_x=150;
pMe->fish3_y+=20;
if(pMe->fish3_y>160)
pMe->fish3_y=40;
}
//判断自己控制的小鱼是否和目标小鱼重合,如果重合,那么小鱼消失,积分+1 或者+2或者+3
if(
(pMe->m_Sprite[0].x>pMe->m_Sprite[1].x-25)&&
(pMe->m_Sprite[0].x<pMe->m_Sprite[1].x+25)&&
(pMe->m_Sprite[0].y>pMe->m_Sprite[1].y-20)&&
(pMe->m_Sprite[0].y<pMe->m_Sprite[1].y+20)&&
pMe->IsNewLife!=1
)
{
pMe->m_Sprite[0].unSpriteIndex=12;
pMe->m_Sprite[5].unSpriteIndex=11;
pMe->fish1_x=150;
pMe->fish1_y+=20;
pMe->m_Sprite[1].x=pMe->fish1_x;
pMe->m_Sprite[1].y=pMe->fish1_y;
pMe->score+=1;
}
if(
(pMe->m_Sprite[0].x>pMe->m_Sprite[2].x-25)&&
(pMe->m_Sprite[0].x<pMe->m_Sprite[2].x+25)&&
(pMe->m_Sprite[0].y>pMe->m_Sprite[2].y-20)&&
(pMe->m_Sprite[0].y<pMe->m_Sprite[2].y+20)&&
pMe->IsNewLife!=1
)
{
pMe->m_Sprite[0].unSpriteIndex=12;
pMe->m_Sprite[5].unSpriteIndex=11;
pMe->fish2_x=150;
pMe->fish2_y+=50;
pMe->m_Sprite[2].x=pMe->fish2_x;
pMe->m_Sprite[2].y=pMe->fish2_y;
pMe->score+=2;
}
if(
(pMe->m_Sprite[0].x>pMe->m_Sprite[3].x-25)&&
(pMe->m_Sprite[0].x<pMe->m_Sprite[3].x+25)&&
(pMe->m_Sprite[0].y>pMe->m_Sprite[3].y-20)&&
(pMe->m_Sprite[0].y<pMe->m_Sprite[3].y+20)&&
pMe->IsNewLife!=1
)
{
pMe->m_Sprite[0].unSpriteIndex=12;
pMe->m_Sprite[5].unSpriteIndex=11;
pMe->fish3_x=150;
pMe->fish3_y+=30;
pMe->m_Sprite[3].x=pMe->fish3_x;
pMe->m_Sprite[3].y=pMe->fish3_y;
pMe->score+=3;
}
//如果小鱼左上角坐标碰到大鱼嘴附近的区域所程序做的处理
if(
(pMe->m_Sprite[0].x>pMe->m_Sprite[4].x-20)&&
(pMe->m_Sprite[0].x<pMe->m_Sprite[4].x+42)&&
(pMe->m_Sprite[0].y>pMe->m_Sprite[4].y+20)&&
(pMe->m_Sprite[0].y<pMe->m_Sprite[4].y+55)&&
pMe->IsNewLife!=1
//(pMe->m_Sprite[0].y>pMe->m_Sprite[2].y-20)&&
// (pMe->m_Sprite[0].y<pMe->m_Sprite[2].y+20)
)
{
if(pMe->score<50)
{
pMe->m_Sprite[4].unSpriteIndex=10;
pMe->life=pMe->life-1;
if(pMe->life==2)
{
pMe->m_Sprite[8].unSpriteSize=SPRITE_SIZE_END;
pMe->m_Sprite[0].x=40;
pMe->m_Sprite[0].y=0;
pMe->IsNewLife=1;
}
if(pMe->life==1)
{
pMe->m_Sprite[7].unSpriteSize=SPRITE_SIZE_END;
pMe->m_Sprite[0].x=40;
pMe->m_Sprite[0].y=0;
pMe->IsNewLife=1;
}
if(pMe->life==0)
{
pMe->m_Sprite[6].unSpriteSize=SPRITE_SIZE_END;
pMe->m_Sprite[0].x=40;
pMe->m_Sprite[0].y=0;
pMe->IsNewLife=1;
}
if(pMe->life<0)
{
AEEImageInfo imageInfo;
ISOUNDPLAYER_Release(pMe->pISoundPlayer); //释放声音接口
IDISPLAY_ClearScreen(pMe->pIDisplay);
pMe->pIImage=ISHELL_LoadImage(pMe->pIShell,"eat.bmp");
IIMAGE_GetInfo(pMe->pIImage,&imageInfo);
IIMAGE_Draw(pMe->pIImage,0,0);
SNPRINTF(pMe->show_score, sizeof(pMe->show_score), "%03u", pMe->score);//将整型数据转换成窄字符串
STRTOWSTR(pMe->show_score,sscore,50); //将窄字符串转换成宽字符串
//DBGPRINTF(pMe->show_score);
IDISPLAY_DrawText(
pMe->pIDisplay,
AEE_FONT_NORMAL,
sscore,
-1,
96,
145,
NULL,
NULL
);
IDISPLAY_Update(pMe->pIDisplay);
IIMAGE_Release(pMe->pIImage);
CALLBACK_Cancel(&pMe->cbtime);
return;
}
//取消计时器
//ISHELL_CancelTimer(pMe->pIShell,NULL,pMe);
// IDISPLAY_EraseRgn (pMe->pIDisplay, 0,0, pMe->DeviceInfo.cxScreen, 16 );
}
if(pMe->score>=50)
{
pMe->m_Sprite[5].unSpriteIndex=11;
pMe->bigfish_x=(-1000);
pMe->bigfish_y=(-5);
pMe->m_Sprite[4].x=pMe->bigfish_x;
pMe->m_Sprite[4].y=pMe->bigfish_y;
pMe->score+=10;
}
}
//用IsNewLife标记是否是小鱼被吃到后 新的一条命 如果是 小鱼 从上面渐渐下到y为90的位置
if(pMe->IsNewLife==1)
{
if(pMe->m_Sprite[0].y<50)
{
pMe->m_Sprite[0].y=pMe->m_Sprite[0].y+2;
pMe->m_Sprite[0].unSpriteIndex=10;
}
if(pMe->m_Sprite[0].y>=50)
pMe->IsNewLife=0;
}
//过关
if(pMe->score>=100)
{
AEEImageInfo imageInfo;
ISOUNDPLAYER_Release(pMe->pISoundPlayer); //释放声音接口
IDISPLAY_ClearScreen(pMe->pIDisplay);
pMe->pIImage=ISHELL_LoadImage(pMe->pIShell,"goldfish.bmp");
IIMAGE_GetInfo(pMe->pIImage,&imageInfo);
IIMAGE_Draw(pMe->pIImage,0,0);
IDISPLAY_Update(pMe->pIDisplay);
IIMAGE_Release(pMe->pIImage);
CALLBACK_Cancel(&pMe->cbtime);
return;
}
/* for(i;i<3;i++)
{
pMe->m_Sprite[i].unComposite=COMPOSITE_KEYCOLOR;
pMe->m_Sprite[i].unLayer=SPRITE_LAYER_0;
pMe->m_Sprite[i].unSpriteIndex=i;
pMe->m_Sprite[i].unSpriteSize=SPRITE_SIZE_32X32;
pMe->m_Sprite[i].unTransform=0;
pMe->m_Sprite[i].x=i+5;
pMe->m_Sprite[i].y=i+60;
}*/
//pMe->m_Sprite[4].unSpriteSize=SPRITE_SIZE_END;
//pMe->pshow_score=pMe->show_score[0];
// WWRITELONGEX (pMe->show_score, pMe->score, 3, &n ) ;
SNPRINTF(pMe->show_score, sizeof(pMe->show_score), "%03u", pMe->score);//将整型数据转换成窄字符串
STRTOWSTR(pMe->show_score,sscore,50); //将窄字符串转换成宽字符串
//DBGPRINTF(pMe->show_score);
//IDISPLAY_EraseRgn (pMe->pIDisplay, 0,0, pMe->DeviceInfo.cxScreen, 16 );
IDISPLAY_DrawText(
pMe->pIDisplay,
AEE_FONT_NORMAL,
score,
-1,
70,
3,
NULL,
NULL
);
IDISPLAY_DrawText(
pMe->pIDisplay,
AEE_FONT_NORMAL,
sscore,
-1,
105,
3,
NULL ,
NULL
);
IDISPLAY_Update(pMe->pIDisplay);
ISPRITE_DrawSprites(pMe->pISprite,pMe->m_Sprite);//画精灵
if(pMe->m_Sprite[0].unTransform!=0)
{pMe->m_Sprite[0].unTransform=0;}
if(pMe->m_Sprite[5].unTransform!=0)
pMe->m_Sprite[5].unTransform=0;
}
void menu(game * pMe) //软菜单
{
CtlAddItem ai;
ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void **)&pMe->pIMenuCtl);
ai.dwData = 2;
ai.pszResImage=GAMEE_RES_FILE;
ai.pszResText=GAMEE_RES_FILE;
ai.wItemID = IDS_STRING_1003;
ai.wText=IDS_STRING_1003;
ai.wText=NULL;
ai.wImage=NULL;
IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1001,IDS_STRING_1001,NULL,0);
IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1002,IDS_STRING_1002,NULL,1);
IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1003,IDS_STRING_1003,NULL,1);
IMENUCTL_EnableCommand(pMe->pIMenuCtl,TRUE);
//IMENUCTL_SetRect(pMe->pIMenuCtl,&rect);
IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);
}
void file(game *pMe) //帮助文档
{
AECHAR * pBuffer;
uint32 resSize;
int fontHeight;
int pageLine;
int i;
int fitNumber;
int count;
ISHELL_GetResSize(pMe->pIShell,GAMEE_RES_FILE,IDS_STRING_1004,RESTYPE_STRING,&resSize);//获得资源的尺寸
pBuffer=(AECHAR *)MALLOC(resSize);
ISHELL_LoadResString(pMe->pIShell,GAMEE_RES_FILE,IDS_STRING_1004,pBuffer,resSize);
IDISPLAY_SetColor(pMe->pIDisplay,CLR_USER_TEXT,MAKE_RGB(0,255,255));//设置字体颜色
IDISPLAY_SetColor(pMe->pIDisplay,CLR_USER_BACKGROUND,MAKE_RGB(0,0,0));
fontHeight=IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,NULL,NULL);
pageLine=pMe->DeviceInfo.cyScreen/fontHeight;
count=0;
for(i=0;i<pageLine;i++)
{
IDISPLAY_MeasureTextEx(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,-1,pMe->DeviceInfo.cxScreen,&fitNumber);
if(fitNumber!=-1)
{
IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,fitNumber,0,i*fontHeight,NULL,IDF_TEXT_TRANSPARENT);
count+=fitNumber;
}
else
{
IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,-1,0,i*fontHeight,NULL,IDF_TEXT_TRANSPARENT);
}
}
IDISPLAY_Update(pMe->pIDisplay);
FREE(pBuffer);
}
void BigFishTraval(game *pMe) //设置大鱼轨迹
{
if(pMe->flag==0)
{
pMe->m_Sprite[4].unTransform=0;
pMe->bigfish_x-=5;
if(pMe->bigfish_x<=(-100))
{
pMe->bigfish_y+=50;
if(pMe->bigfish_y>138)
{
pMe->bigfish_y=-5;
}
pMe->flag=1;
}
}
if(pMe->flag==1)
{
pMe->m_Sprite[4].unTransform=SPRITE_FLIP_Y;
pMe->bigfish_x+=5;
if(pMe->bigfish_x>=100)
{
pMe->bigfish_y+=50;
if(pMe->bigfish_y>138)
{
pMe->bigfish_y=-5;
}
pMe->flag=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -