2048游戏.rar

上传者: miracleis | 上传时间: 2022-06-09 20:32:48 | 文件大小: 418KB | 文件类型: RAR
基于arm开发板的2048游戏的实现:实现功能及其原理如下: 2048是平面二维游戏,在4*4图片方格内,通过对滑动方向(上、下、左、右)的判断实 现对各个图片的移动、合并(在沿滑动方向上,两相邻元素值相等或者两相等元素值之间 的元素内容为空(即为0),即要进行合并)等操作。 首先:需要实现的是在屏幕上显示出相应界面,这涉及到对lcd屏幕的操作,arm开发版运行 的是linux系统,通过对设备文件(路径为/dev/fb0 的文件)进行操作,实现现屏幕显示功能。 因为是系统内的文件,采用系统IO函数实现,主要是open、read、write、lseek函数。同时 为了提高显示效率,还采用了mmap映射函数。 其次:该游戏需要判断出滑动的方向,来实现对相应图片的移动、合并操作,所以还需要对 触摸屏设备文件(路径名为/dev/input/event0 的设备文件)进行操作。要判断出滑动类型, 获取点下屏幕时的坐标点x1、y1以及离开屏幕时的坐标点x2、y2。根据两值只差可判断出 滑动方向(差值绝对值大的,滑动方向就是哪边) 实现对图画的移动、合并操作,这是本游戏设计的一大难点,本项目 采用如下方法实现该功能: 该游戏本质上是对二维数组的操作,该项目中,定义了如下量 //该节点用来保存4*4二维数组每一个元素的信息 struct position { int x; int y; int data; char *names; }; struct position * pos[4][4] = {0}; char *name[12]; //指向要显示图片的路径名 结构体用来保存二维数组中每一个元素的信息,x、y保存的是显示图片的位置信息, data保存的是图片对应的值(根据此值可以显示出相应的图片,如果值为8,则显示值 为8的图片),names是一个字符型指针,指向的是要显示图片的路径名信息(该信息保 存在char *name[12]的指针数组中,该数组指针保存了路径名信息)。 据此,便可以显示出相应的图片,接下来便是操作 pos[4][4]是一个二维数组,当朝着一个方向滑动时,便需要根据pos->data 值进行 相关操作 ,研滑动方向上,判断第一个元素值是否为0(空白图片表示值为0),如果为0 则继续找,直到找到下一个不为0的元素,然后将该值赋值给开头元素,该元素置0, 如果开头元素不为0,那么就往后面寻找,直到找到一个不为0的元素,如果该元素与开头元素 值相等,则合并(开头元素值乘以2,然后该元素置0)。以上便是一轮判断,然后开头元素再 往后挪一个,按照同样的方法判断,进行相关操作。 然后,还需要有产生随机数的功能, 定义了两个值XX ,YY,用rand函数产生小于4的两个数,然后对二维数组pos进行遍历, 如果pos[i][j]->data == pos[XX][YY]->data 那么就可以在改位置产生随机数,否则,就重新产 生一次随机数,直到产生为止,产生不了则游戏结构 最后, 为了实现计分功能,通过计算,在像素坐标点为(50,20)(75,20)(100,20)(125,20)的位置显示出0到9的数字, 通过计分,可以将所得分数在该四个点显示出

文件下载

资源详情

[{"title":"( 31 个子文件 418KB ) 2048游戏.rar","children":[{"title":"2048游戏","children":[{"title":"include","children":[{"title":"lcd.h <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"touch.h <span style='color:#111;'> 846B </span>","children":null,"spread":false},{"title":"app.h <span style='color:#111;'> 750B </span>","children":null,"spread":false}],"spread":true},{"title":"pictures","children":[{"title":"0.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"1024.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"16.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"4.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"2048.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"8.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"game_over.bmp <span style='color:#111;'> 1.10MB </span>","children":null,"spread":false},{"title":"2.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"65536.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"8192.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"32.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"16384.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"64.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"4096.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"32768.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"256.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"512.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false},{"title":"128.bmp <span style='color:#111;'> 29.35KB </span>","children":null,"spread":false}],"spread":false},{"title":"srcs","children":[{"title":"touch.c <span style='color:#111;'> 3.38KB </span>","children":null,"spread":false},{"title":"app.o <span style='color:#111;'> 10.35KB </span>","children":null,"spread":false},{"title":"xxx <span style='color:#111;'> 20.53KB </span>","children":null,"spread":false},{"title":"lcd.c <span style='color:#111;'> 7.47KB </span>","children":null,"spread":false},{"title":"main.c <span style='color:#111;'> 267B </span>","children":null,"spread":false},{"title":"lcd.o <span style='color:#111;'> 5.79KB </span>","children":null,"spread":false},{"title":"app.c <span style='color:#111;'> 12.10KB </span>","children":null,"spread":false},{"title":"touch.o <span style='color:#111;'> 2.54KB </span>","children":null,"spread":false},{"title":"Makefile <span style='color:#111;'> 485B </span>","children":null,"spread":false},{"title":"main.o <span style='color:#111;'> 960B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明