#include "functionheader.h"
//刷新屏幕
void updateScreen(eluosi* pMe)
{
loadBitmap(pMe,"bg4.bmp"); //flash screen
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(255,0,0));//设置字体颜色
drawString(pMe,"score",90+3,40-5);//不存在内存泄露
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(255,255,0));//设置字体颜色
drawInteger(pMe,pMe->usrScore,90+10,60-5);//
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(0,255,0));//设置字体颜色
drawString(pMe,"level",90+3,80-5);
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(255,0,255));//设置字体颜色
drawInteger(pMe,pMe->usrLevel,90+10,100-5);//
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(0,0,255));//设置字体颜色
drawString(pMe,"mp3",90+3,120-5);
IDISPLAY_SetColor(pMe->a.m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(255,0,0));//设置字体颜色
if(pMe->isMp3On)
drawString(pMe,"on",90+5,140-5);//
else
drawString(pMe,"off",90+5,140-5);//
}
//加载游戏地图
void loadBitmap(eluosi* pMe,const char* src)
{
IBitmap *pScreen = NULL;
IBitmap *pBitmap = NULL;
IBitmap *pNewScreen = NULL;
AEEBitmapInfo myInfo;
//AEESpriteCmd myCmd;
//得到屏幕的相关信息
pScreen = IDISPLAY_GetDestination(pMe->a.m_pIDisplay);
//加载图片
pBitmap = ISHELL_LoadBitmap(pMe->a.m_pIShell,src);
ISPRITE_SetDestination(pMe->pISprite, pScreen);
IBitmap_GetInfo(pBitmap,&myInfo,sizeof(myInfo));
IBitmap_CreateCompatibleBitmap(pScreen,&pNewScreen,(uint16)myInfo.cx,(uint16)myInfo.cy);
IBITMAP_BltIn(pNewScreen,0,0,myInfo.cx,myInfo.cy,pBitmap,0,0,AEE_RO_COPY);
//////////////////////////////////////////////////////////////////////////
ISPRITE_SetTileBuffer(pMe->pISprite,TILE_SIZE_8X8,pNewScreen);
if (pMe->tileMap == NULL)
{
MEMSET(pMe->tileMap,0, sizeof(pMe->tileMap));
}
//设置游戏背景地图数组
pMe->tileMap[0].pMapArray = (uint16*)mapArray;
pMe->tileMap[0].x = 0;
pMe->tileMap[0].y = 0;
pMe->tileMap[0].unFlags = 0;
pMe->tileMap[0].unTileSize = TILE_SIZE_8X8;
pMe->tileMap[0].w = MAP_SIZE_16;
pMe->tileMap[0].h = MAP_SIZE_32;
//绘制游戏背景地图
ISPRITE_DrawTiles(pMe->pISprite,pMe->tileMap);
//更新屏幕
IDISPLAY_Update(pMe->a.m_pIDisplay);
IBITMAP_Release(pBitmap);
pBitmap = NULL;
IBITMAP_Release(pScreen);
pScreen = NULL;
IBITMAP_Release(pNewScreen);
pNewScreen = NULL;
}
//显示字符串
void drawString(eluosi* pMe,const char* src,int x,int y)
{
AECHAR dis[20]={0};
UTF8TOWSTR(src,STRLEN(src),dis,20);
IDISPLAY_DrawText( pMe->a.m_pIDisplay, // Display instance
AEE_FONT_BOLD, // Use BOLD font
dis, // Text - Normally comes from resource
-1, // -1 = Use full string length
x, // x- cordinate
y, // y- cordinate
NULL, // No clipping
IDF_TEXT_TRANSPARENT//设置透明色
);// | IDF_ALIGN_MIDDLE);
}
//显示数字
void drawInteger(eluosi* pMe,int n,int x,int y)
{
char s[10]={0};
SPRINTF(s,"%d",n);//数字格式化成字符串
drawString(pMe,s,x,y);
}
//产生随机数
int getRandNumber()
{
byte rd;
GET_RAND(&rd,1);
rd%=7;
return rd;
}
//改变精灵
void changeRightCornerSprite(int rn)
{
int i,j;
int k;
for(i=0;i<4;i++)
for(j=0,k=i*16+12;j<4;j++,k++)
{
mapArray[k]=BOX[rn][i][j];
//mapArray[k] = mapArray[k]==0? 7:mapArray[k];
}
}
//改变游戏的图形形状
void changeCenterSprite(eluosi* pMe,int rn)
{
calcLocation(pMe);
mapArray[pMe->LT.left_top_y*16+pMe->LT.left_top_x] = getRandNumber()+1;
mapArray[pMe->LD.left_top_y*16+pMe->LD.left_top_x] = getRandNumber()+1;
mapArray[pMe->RT.left_top_y*16+pMe->RT.left_top_x] = getRandNumber()+1;
mapArray[pMe->RD.left_top_y*16+pMe->RD.left_top_x] = getRandNumber()+1;
}
//复位操作
void resumeSprite(eluosi* pMe)
{
mapArray[pMe->LT.left_top_y*16+pMe->LT.left_top_x] = GB;
mapArray[pMe->LD.left_top_y*16+pMe->LD.left_top_x] = GB;
mapArray[pMe->RT.left_top_y*16+pMe->RT.left_top_x] = GB;
mapArray[pMe->RD.left_top_y*16+pMe->RD.left_top_x] = GB;
}
//计算方块的各个点的子坐标
void calcLocation(eluosi* pMe)
{
switch(pMe->randNumber)
{
case 0:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 2;
pMe->RT.left_top_y = pMe->SRC.left_top_y;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x +2;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 1;
break;
}
case 1:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RT.left_top_y = pMe->SRC.left_top_y;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 2;
pMe->LD.left_top_y = pMe->SRC.left_top_y;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 3;
pMe->RD.left_top_y = pMe->SRC.left_top_y;
break;
}
case 2:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 2;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 3;
break;
}
case 3:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 2;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 1;
break;
}
case 4:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 2;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 2;
break;
}
case 5:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x;
pMe->LT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 2;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 2;
break;
}
case 6:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 2;
break;
}
case 7:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RT.left_top_y = pMe->SRC.left_top_y;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
pMe->RD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->RD.left_top_y = pMe->SRC.left_top_y + 2;
break;
}
case 8:
{
pMe->LT.left_top_x = pMe->SRC.left_top_x + 2;
pMe->LT.left_top_y = pMe->SRC.left_top_y;
pMe->RT.left_top_x = pMe->SRC.left_top_x;
pMe->RT.left_top_y = pMe->SRC.left_top_y + 1;
pMe->LD.left_top_x = pMe->SRC.left_top_x + 1;
pMe->LD.left_top_y = pMe->SRC.left_top_y + 1;
eluosi.rar_Brew game
版权申诉
171 浏览量
2022-09-14
18:16:57
上传
评论
收藏 2.22MB RAR 举报
寒泊
- 粉丝: 75
- 资源: 1万+