开发工具:
文件大小: 418kb
下载次数: 0
上传时间: 2020-07-08
详细说明:基于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的数字,
通过计分,可以将所得分数在该四个点显示出
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.