📄 eros.c
字号:
while(pt--)
{
if (buffer)
{
buffer[pt] = (char)('0' + (ueger % 10));
}
ueger /= 10;
}
}
return (len + 1 + minusP);
}
//=====================================================================
// the following code for Russia frame
//Function: clearblock
//Description: clear a block
//Side effect: none
//=====================================================================
void ClearBlock(eros * pMe) /*clear the data within the block*/
{int i,j;
for (i=0; i<4; i++)
for (j=0; j<4; j++)
pMe->block[i][j] = 0;
}
//====================================================================
// Function: write_video
// Description: draw a frame
// input value position(x,y)
// Side effect: play the bitmap_buf
//====================================================================
void write_video
(
eros * pMe,
int x,
int y,
RGBVAL color,
unsigned char full
)
{
AEERect rect;
rect.x=x;
rect.y=y+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->block_width;
rect.dy=pMe->block_width;
if(full)
{
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
RGB_BLACK,// RGBVAL
color,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
SETAEERECT(&rect,x+1,y+1+BREW_APP_Y+MENU_TITLE_HEIGHT,pMe->block_width-2,1);
IDISPLAY_FillRect(pMe->a.m_pIDisplay,&rect,RGB_WHITE);
SETAEERECT(&rect,x+1,y+1+BREW_APP_Y+MENU_TITLE_HEIGHT,1,pMe->block_width-2);
IDISPLAY_FillRect(pMe->a.m_pIDisplay,&rect,RGB_WHITE);
}
else
{
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
RGB_WHITE,// RGBVAL
RGB_WHITE,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
}
}
/*===================================================================
Function: generateblock
Description: generate a block
input: block class
Side effect: none
====================================================================*/
void GenerateBlock(eros * pMe,int kind) /*generate a block*/
{
int val;
val=kind%10;
ClearBlock(pMe);
switch (kind)
{
case 1:
pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = val;
break;
case 11:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[1][2] = val;
break;
case 21:
pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = val;
break;
case 31:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[1][2] = val;
break;
case 2:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[2][1] = val;
break;
case 12:
pMe->block[1][0] = pMe->block[1][1] = pMe->block[0][1] = pMe->block[0][2] = val;
break;
case 22:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[2][1] = val;
break;
case 32:
pMe->block[1][0] = pMe->block[1][1] = pMe->block[0][1] = pMe->block[0][2] = val;
break;
case 3:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
break;
case 13:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
break;
case 23:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
break;
case 33:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
break;
case 4:
pMe->block[1][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
break;
case 14:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][1] = val;
break;
case 24:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[1][1] = val;
break;
case 34:
pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
break;
case 5:
pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
break;
case 15:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][2] = val;
break;
case 25:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = val;
break;
case 35:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
break;
case 6:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
break;
case 16:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[0][1] = pMe->block[0][2] = val;
break;
case 26:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[2][1] = val;
break;
case 36:
pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[0][2] = val;
break;
case 7:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[3][0] = val;
break;
case 17:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[0][3] = val;
break;
case 27:
pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[3][0] = val;
break;
case 37:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[0][3] = val;
break;
case 8:
pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
break;
case 18:
pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
break;
case 28:
pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
break;
case 38:
pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
break;
case 9:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][0] = pMe->block[2][1] = val;
break;
case 19:
pMe->block[0][0] = pMe->block[0][2] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
break;
case 29:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[2][1] = val;
break;
case 39:
pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][0] = pMe->block[1][2] = val;
break;
default:
break;
}
if ((kind == 7) || (kind == 27))
{
pMe->x_size = 4;
pMe->y_size = 1;
}
else if ((kind == 17) || (kind == 37))
{
pMe->x_size = 1;
pMe->y_size = 4;
}
else if (kind % 10 == 3)
{
pMe->x_size = 2;
pMe->y_size = 2;
}
else if (kind % 10 == 8)
{
pMe->x_size = 3;
pMe->y_size = 3;
}
else if ((kind / 10 == 0) || (kind / 10 == 2))
{
pMe->x_size = 3;
pMe->y_size = 2;
}
else if ((kind / 10 == 1) || (kind / 10 == 3))
{
pMe->x_size = 2;
pMe->y_size = 3;
}
pMe->current_block = kind;
}
//================================================================
//Funciton initialmemory
//Description: initial memory
//Side effect: none
//================================================================
void initialmemory(eros * pMe)
{
int i,j;
AEERect rect;
//AECHAR szText[] ={'N','e','x','t','\0','S','c','o','r','e','\0'},game_title[30]={0};
AECHAR szText[20] ={0},szScore[20] ={0},game_title[30]={0};
uint32 dwTime = GET_UPTIMEMS();
ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_GAME_TITLE, game_title, sizeof(game_title));
ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_NEXT, szText, sizeof(szText));
ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_SCORE, szScore, sizeof(szScore));
rect.x=0;
rect.y=0+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->m_Rect.dx; //screen width
rect.dy=pMe->block_height;
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
pMe->frame_color,// RGBVAL
pMe->frame_color,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
rect.x=0;
rect.y=MAP_HEIGHT*pMe->block_height+pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->m_Rect.dx;//screen width
rect.dy=pMe->block_height;
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
pMe->frame_color,// RGBVAL
pMe->frame_color,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
rect.x=MAP_WIDTH*pMe->block_width+pMe->block_width;
rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->block_width;
rect.dy=MAP_HEIGHT*pMe->block_height;
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
pMe->frame_color,
pMe->frame_color,
IDF_RECT_FRAME | IDF_RECT_FILL);
rect.x=0;
rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->block_width;
rect.dy=MAP_HEIGHT*pMe->block_height;
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
pMe->frame_color,// RGBVAL
pMe->frame_color,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
rect.x=pMe->m_Rect.dx-pMe->block_width;
rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
rect.dx=pMe->block_width;
rect.dy=MAP_HEIGHT*pMe->block_height;
IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
&rect,
pMe->frame_color,// RGBVAL
pMe->frame_color,// RGBVAL
IDF_RECT_FRAME | IDF_RECT_FILL);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, // Display instance
AEE_FONT_LARGE, // Use BOLD font
szText, // Text - Normally comes from resource
-1, // -1 = Use full string length
MAP_WIDTH*pMe->block_width+1+pMe->block_width+pMe->block_width, // x-cordinate
pMe->block_height+4+BREW_APP_Y+MENU_TITLE_HEIGHT, // y-cordinate
NULL, // No clipping
0);//IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, // Display instance
AEE_FONT_LARGE, // Use BOLD font
szScore,//szText+5, // Text - Normally comes from resource
-1, // -1 = Use full string length
MAP_WIDTH*pMe->block_width+1+pMe->block_width+pMe->block_width, // x-cordinate
MAP_HEIGHT*pMe->block_height-48+pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT, // y-cordinate
NULL, // No clipping
0);//IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
Eros_DrawLevel(pMe);
#if 0
IDISPLAY_DrawText(pMe->a.m_pIDisplay, // Display instance
AEE_FONT_BOLD, // Use BOLD font
game_title, // Text - Normally comes from resource
-1, // -1 = Use full string length
0, // x-cordinate
MAP_HEIGHT*pMe->block_height+pMe->block_height+pMe->block_height+8+BREW_APP_Y+MENU_TITLE_HEIGHT, // y-cordinate
NULL, // No clipping
IDF_ALIGN_CENTER );
#endif
HSComFunc_DrawTitleBGImage(pMe->a.m_pIDisplay,0,FALSE);
Eros_DrawTitleText(pMe,IDS_GAME_TITLE);
for (i=0; i<pMe->map_line; i++)
for (j=0; j<pMe->map_col; j++)
pMe->map[i][j]=0;
ClearBlock(pMe);
pMe->a0=0;
//map_line=24;
//map_col=12;
pMe->block_x=0;
pMe->block_y=20;
pMe->gameover=0;
pMe->x_size=0;
pMe->y_size=0;
pMe->score=0;
pMe->dels=0;
pMe->pause=FALSE;
pMe->next_block=pMe->x_size+pMe->y_size+pMe->block_x+pMe->block_y+dwTime;
pMe->next_block=pMe->next_block%pMe->difficult_level+pMe->a0;
pMe->next_block=pMe->next_block%pMe->difficult_level+1;
}
//================================================================
//Function: restorememory
//Description: get over the memory
//Side effect: none
//================================================================
void restorememory(eros * pMe)
{
int i,j;
AEERect rect;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -