direct = MOVE_LEFT; break;
} } else
{ if(endY>startY) // {
direct = MOVE_DOWN; break;
} else
{ direct = MOVE_UP; break;
} } } }
close(fd); return direct; }
char * Get_Bmpfile_Name(intnum) // 输入一个数字,获取该数字相对应的图片 {
if(num==0)
returnbmpfiles[0]; else { inti = 0;
for (i = 0; i< 32; i++) {
if ((1 <
} }
returnbmpfiles[i];
}
17
} /*
LCD_Draw_Point:用来给屏幕上点(x, y)赋值 一个颜色,颜色值为color @x: 这个点的x轴坐标 @y: 这个点的y轴坐标 @color:这个点的颜色值 返回值:
无返回值 */
voidLCD_Draw_Point(int x, int y, int color) {
if (x>=0 && x <800 && y>=0 && y < 480) {
*(plcd + 800 * y + x) = color; } }
void LCD_Clear_Screen(char *bmpname ) // 给屏幕加一个背景图片 { intfd; inti = 0; int x, y;
unsigned char pixels[480*800*3];
fd = open(bmpname, O_RDONLY);
lseek(fd, 54, SEEK_SET); read(fd, pixels, 800*480*3); close(fd);
for (y = 0; y < 480; y++) {
for (x = 0; x < 800; x++) {
unsigned char r, g, b; int color;
b = pixels[i++]; g = pixels[i++]; r = pixels[i++];
18
color = (r << 16) |(g << 8) |(b);
LCD_Draw_Point( x, 480 - y,color); } } } /*
LCD_Draw_Bmp:把bmpname指定的bmp图片文件 显示在屏幕的点(x0, y0)的矩形区域内 */
voidLCD_Draw_Bmp(int x0, int y0, char *bmpname) { intfd; inti = 0; int x, y;
unsigned char pixels[100*100*3];
fd = open(bmpname, O_RDONLY);
lseek(fd, 54, SEEK_SET); read(fd, pixels, 100*100*3); close(fd);
//显示图片
for (y = 0; y < 100; y++) {
for (x = 0; x < 100; x++) {
unsigned char r, g, b; int color;
b = pixels[i++]; g = pixels[i++]; r = pixels[i++];
color = (r << 16) |(g << 8) |(b);
LCD_Draw_Point(x0 + x, y0 + 99 - y,color); } } }
void Game_Init() // 游戏开始的界面 { inti,j;
19
intx,y;
int index_x1=0,index_y1=0; int index_x2=0,index_y2=0;
while(index_x1==index_x2&&index_y1==index_y2) // 用于保证取到的两个点不会重合 {
index_x1=random() % 4; index_x2=random() % 4; index_y1=random() % 4; index_y2=random() % 4; }
for(i=0; i<4; i++) {
x=i*120; for(j=0; j<4; j++) {
y=j*120;
if((i==index_x1&&j==index_y1)||(i==index_x2&&j==index_y2)) LCD_Draw_Bmp(x, y, \else
LCD_Draw_Bmp(x, y, \ } }
matrix_2048[index_y1][index_x1]=2; // 把获得的数交给2048二维数组 matrix_2048[index_y2][index_x2]=2; }
void Zero_b() // 用于把buffer数组里的数全部清零 { inti,j;
for(i=0; i<4; i++) {
for(j=0; j<4; j++) { buffer[i][j]=0; } } }
void Move_left() // 向左移动操作 {
inti,j,k; Zero_b();
20
相关推荐: