#include "game.h"
//游戏初始化
int Initgame(P_LCD_NODE lcd_info)
{
bzero(game_map , sizeof(game_map));
bmp_display( *lcd_info , "../PIC/game/ui/2048.bmp" , 0 , 0);
bmp_display( *lcd_info , "../PIC/game/ui/game_background.bmp" , 20 , 0);
score = 0;
show_score( lcd_info , score);
create_block(lcd_info);
}
//显示分数
int show_score(P_LCD_NODE lcd_info , int score)
{
char pathname[80];
int digit = score/1%10;
int ten = score/10%10;
int hundred = score/100%10;
int thousand = score/1000%10;
int ten_thousand = score/10000%10;
bmp_display(*lcd_info , "../PIC/game/score/score.bmp" , 20 , 440);
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/score/%d.bmp" , digit);
bmp_display(*lcd_info , pathname , 165,440);
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/score/%d.bmp" , ten);
bmp_display(*lcd_info , pathname , 140,440);
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/score/%d.bmp" , hundred);
bmp_display(*lcd_info , pathname , 115,440);
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/score/%d.bmp" , thousand);
bmp_display(*lcd_info , pathname , 90,440);
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/score/%d.bmp" , ten_thousand);
bmp_display(*lcd_info , pathname , 70,440);
}
//向左移动
int move_left(P_LCD_NODE lcd_info )
{
int x , y;
int tmp ;
for (int i = 0; i < 4; i++)
{
for ( y = 0; y < 4; y++)
{
for ( x = 1; x < 4; x++)
{
tmp=x;
while(game_map[tmp-1][y] != 0 && game_map[x][y] == game_map[tmp-1][y])
{
game_map[tmp-1][y] = game_map[x][y] + game_map[tmp-1][y];
game_map[x][y] = 0;
score = score + game_map[tmp-1][y];
}
}
}
for (y = 0; y < 4; y++)
{
for (x = 1; x < 4; x++)
{
tmp = x;
while(game_map[tmp-1][y] == 0 && game_map[tmp][y] != 0 && tmp>=1)
{
game_map[tmp-1][y] = game_map[tmp][y];
game_map[tmp][y] = 0;
tmp --;
}
}
}
}
printf("success to move left!\n");
return 0;
}
//向右移动
int move_right(P_LCD_NODE lcd_info )
{
int x , y;
int tmp ;
for (int i = 0; i < 4; i++)
{
for ( y = 0; y < 4; y++)
{
for ( x = 0; x < 3; x++)
{
tmp = x;
while(game_map[tmp+1][y] != 0 && game_map[x][y] == game_map[tmp+1][y])
{
game_map[tmp+1][y] = game_map[x][y] + game_map[tmp+1][y];
game_map[x][y] = 0;
score = score + game_map[tmp+1][y];
}
}
}
for (y = 0; y < 4; y++)
{
for (x = 0; x < 4; x++)
{
tmp = x;
while(game_map[tmp+1][y] == 0 && game_map[tmp][y] != 0 && tmp<=2)
{
game_map[tmp+1][y] = game_map[tmp][y];
game_map[tmp][y] = 0;
tmp ++;
}
}
}
}
printf("success to move right!\n");
return 0;
}
//向上移动
int move_up(P_LCD_NODE lcd_info )
{
int x , y;
int tmp ;
for (int i = 0; i < 4; i++)
{
for ( x = 0; x < 4; x++)
{
for ( y = 0; y < 3; y++)
{
tmp = y;
while(game_map[x][tmp+1] != 0 && game_map[x][y] == game_map[x][tmp+1])
{
game_map[x][tmp+1] = game_map[x][y] + game_map[x][tmp+1];
game_map[x][y] = 0;
score = score + game_map[x][tmp+1];
}
}
}
for (x = 0; x < 4; x++)
{
for (y = 3; y > 0; y--)
{
tmp = y;
while(game_map[x][tmp-1] == 0 && game_map[x][tmp] != 0 && tmp>=1)
{
game_map[x][tmp-1] = game_map[x][tmp];
game_map[x][tmp] = 0;
tmp --;
}
}
}
}
printf("success to move up!\n");
return 0;
}
//向下移动
int move_down(P_LCD_NODE lcd_info )
{
int x , y;
int tmp ;
for (int i = 0; i < 4; i++)
{
for ( x = 0; x < 4; x++)
{
for ( y = 0; y < 3; y++)
{
tmp = y;
while(game_map[x][tmp+1] != 0 && game_map[x][y] == game_map[x][tmp+1])
{
game_map[x][tmp+1] = game_map[x][y] + game_map[x][tmp+1];
game_map[x][y] = 0;
score = score + game_map[x][tmp+1];
}
}
}
for (x = 0; x < 4; x++)
{
for (y = 0; y < 4; y++)
{
tmp = y;
while(game_map[x][tmp+1] == 0 && game_map[x][tmp] != 0 && tmp<=2)
{
game_map[x][tmp+1] = game_map[x][tmp];
game_map[x][tmp] = 0;
tmp ++;
}
}
}
}
printf("success to move down!\n");
return 0;
}
//游戏启动
int game(P_LCD_NODE lcd_info )
{
int flag_full = 0;
while(1)
{
get_xy(lcd_info);
if (flag_full == 0)
{
if (lcd_info->ts_x > 480 && lcd_info->ts_x<600 && lcd_info->ts_y>120 && lcd_info->ts_y<240)
{
move_left(lcd_info);
flag_full = create_block(lcd_info);
}
else if (lcd_info->ts_x > 570 && lcd_info->ts_x<710 && lcd_info->ts_y>0 && lcd_info->ts_y<120)
{
move_up(lcd_info);
flag_full = create_block(lcd_info);
}
else if (lcd_info->ts_x > 670 && lcd_info->ts_x<790 && lcd_info->ts_y>120 && lcd_info->ts_y<240)
{
move_right(lcd_info);
flag_full = create_block(lcd_info);
}
else if (lcd_info->ts_x > 570 && lcd_info->ts_x<710 && lcd_info->ts_y>240 && lcd_info->ts_y<360)
{
move_down(lcd_info);
flag_full = create_block(lcd_info);
}
else if (lcd_info->ts_x > 500 && lcd_info->ts_x<610 && lcd_info->ts_y>360 && lcd_info->ts_y<480)
{
Initgame(lcd_info);
flag_full = 0;
}
else if (lcd_info->ts_x > 700 && lcd_info->ts_x<800&& lcd_info->ts_y>360 && lcd_info->ts_y<480)
{
flag_full = 0;
break;
}
show_score(lcd_info , score);
}
if (flag_full == -1)
{
bmp_display(*lcd_info , "../PIC/game/ui/gameover.bmp" ,0 , 0);
if (lcd_info->ts_x > 20 && lcd_info->ts_x < 120)
{
Initgame(lcd_info);
flag_full = 0;
}
else if (lcd_info->ts_x > 700 && lcd_info->ts_x < 800)
{
flag_full = 0;
break;
}
}
}
}
// 刷新游戏界面
int map_refresh(P_LCD_NODE lcd_info)
{
char pathname[80];
int x , y;
for (y = 0; y < 4; y++)
for(x = 0; x < 4; x++)
if (game_map[x][y] != 0)
{
bzero(pathname , 80);
sprintf(pathname , "../PIC/game/num/%d.bmp" , game_map[x][y]);
bmp_display(*lcd_info , pathname , 28+(x*110) , 10+(y*110));
}
else
bmp_display(*lcd_info , "../PIC/game/ui/blank1.bmp" , 28+(x*110) , 10+(y*110));
return 0;
}
//随机出现的游戏版块
int create_block(P_LCD_NODE lcd_info)
{
int x , y;
int tmp;
int candidate ;
bool flag = is_full();
if (flag)
{
return -1;
}
srand((int)time(0));
tmp=(int)(10.0*rand()/(RAND_MAX + 1.0));
if (tmp < 5)
{
candidate = 2;
}
else
candidate = 4;
while(1)
{
x=(int)(4.0*rand()/(RAND_MAX + 1.0));
y=(int)(4.0*rand()/(RAND_MAX + 1.0));
if(game_map[x][y] == 0)
{
game_map[x][y] = candidate;
break;
}
}
map_refresh(lcd_info);
return 0;
}
//判断游戏界面是否已经满了
bool is_full()
{
int x , y;
int vacancy = 0;
for(y = 0; y < 4; y++)
for(x = 0; x < 4; x++)
if (game_map[x][y] == 0)
{
vacancy ++;
}
if (vacancy == 0)
{
return true;
}
else
return false;
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于linux多媒体智能影音系统
共208个文件
bmp:142个
c:15个
o:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 34 下载量 128 浏览量
2022-01-30
12:07:22
上传
评论 33
收藏 106.88MB ZIP 举报
温馨提示
1、硬件资源:粤嵌开发板GEC6818 2、实验平台:Ubuntu——Linux 16.04 3、项目名称:多媒体智能影音系统 4、实现功能:①图片动态显示;②音乐多功能播放;③视频多功能播放;④2048小游戏 备注:资源里面已含虚拟的显示器和触摸屏,只需手动安装驱动就可以用了,无需购买硬件,当然,有硬件更好。
资源推荐
资源详情
资源评论
收起资源包目录
基于linux多媒体智能影音系统 (208个子文件)
2.avi 36.05MB
1.avi 31.36MB
music.bmp 1.1MB
15.bmp 1.1MB
17.bmp 1.1MB
11.bmp 1.1MB
4.bmp 1.1MB
16.bmp 1.1MB
13.bmp 1.1MB
1.bmp 1.1MB
7.bmp 1.1MB
5.bmp 1.1MB
14.bmp 1.1MB
12.bmp 1.1MB
2.bmp 1.1MB
6.bmp 1.1MB
10.bmp 1.1MB
3.bmp 1.1MB
8.bmp 1.1MB
9.bmp 1.1MB
video.bmp 1.1MB
Frame12.bmp 1.1MB
Frame14.bmp 1.1MB
Frame33.bmp 1.1MB
Frame4.bmp 1.1MB
Frame31.bmp 1.1MB
Frame57.bmp 1.1MB
Frame18.bmp 1.1MB
Frame6.bmp 1.1MB
Frame36.bmp 1.1MB
Frame2.bmp 1.1MB
Frame5.bmp 1.1MB
Frame11.bmp 1.1MB
Frame40.bmp 1.1MB
Frame63.bmp 1.1MB
Frame39.bmp 1.1MB
Frame16.bmp 1.1MB
Frame45.bmp 1.1MB
Frame52.bmp 1.1MB
Frame67.bmp 1.1MB
Frame43.bmp 1.1MB
Frame64.bmp 1.1MB
Frame41.bmp 1.1MB
Frame35.bmp 1.1MB
Frame22.bmp 1.1MB
Frame60.bmp 1.1MB
Frame29.bmp 1.1MB
Frame48.bmp 1.1MB
Frame73.bmp 1.1MB
Frame77.bmp 1.1MB
Frame71.bmp 1.1MB
Frame56.bmp 1.1MB
Frame53.bmp 1.1MB
Frame17.bmp 1.1MB
Frame75.bmp 1.1MB
Frame66.bmp 1.1MB
Frame0.bmp 1.1MB
Frame50.bmp 1.1MB
Frame21.bmp 1.1MB
Frame1.bmp 1.1MB
Frame61.bmp 1.1MB
Frame80.bmp 1.1MB
Frame46.bmp 1.1MB
Frame58.bmp 1.1MB
Frame69.bmp 1.1MB
Frame70.bmp 1.1MB
Frame37.bmp 1.1MB
Frame3.bmp 1.1MB
Frame55.bmp 1.1MB
Frame27.bmp 1.1MB
Frame78.bmp 1.1MB
Frame68.bmp 1.1MB
Frame19.bmp 1.1MB
Frame65.bmp 1.1MB
Frame72.bmp 1.1MB
Frame9.bmp 1.1MB
Frame26.bmp 1.1MB
Frame7.bmp 1.1MB
Frame28.bmp 1.1MB
Frame34.bmp 1.1MB
Frame23.bmp 1.1MB
Frame81.bmp 1.1MB
Frame8.bmp 1.1MB
Frame30.bmp 1.1MB
Frame76.bmp 1.1MB
Frame74.bmp 1.1MB
Frame32.bmp 1.1MB
Frame38.bmp 1.1MB
Frame59.bmp 1.1MB
Frame15.bmp 1.1MB
Frame62.bmp 1.1MB
Frame47.bmp 1.1MB
Frame42.bmp 1.1MB
Frame44.bmp 1.1MB
Frame10.bmp 1.1MB
Frame20.bmp 1.1MB
Frame13.bmp 1.1MB
Frame79.bmp 1.1MB
Frame54.bmp 1.1MB
Frame49.bmp 1.1MB
共 208 条
- 1
- 2
- 3
free(me)
- 粉丝: 2107
- 资源: 4
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页