ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:407.36KB ,
资源ID:18800449      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18800449.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android课程设计连连看小游戏Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android课程设计连连看小游戏Word文件下载.docx

1、3.5、输出项五个菜单选项3.6、算法/定义菜单类,接口为OnClickListener,用于接收用户的单击消息Public class StartActivity extends Activity implements View.OnClickListener/设计5个按钮用于接收按钮消息 private Button btnStart; private Button btnSet; private Button btnRole; private Button btnAbout; private Button btnExit;/在OnCreate函数中将它们初始化: /获取按钮btnStar

2、t=(Button)findViewById(R.id. btnStart);btnSet =(Button)findViewById(R.id. btnSet);btnRole =(Button)findViewById(R.id. btnRole);btnAbout =(Button)findViewById(R.id. btnAbout);btnExit =(Button)findViewById(R.id. btnExit);/注册点击事件btnStart.setOnClickListener(this);btnSet.setOnClickListener(this);btnRole.

3、setOnClickListener(this);btnAbout.setOnClickListener(this);btnExit.setOnClickListener(this);在OnClick函数中对响应进行处理:setContentView(new Game View(this);/进入游戏,游戏在Game View 类中进行了封装/说明游戏规则New AlertDialog.Builder(this).setMessage(“1.将相同的两张图片用三根以内的直线连在 一起就可以消除n + 2. 每消除一次图片,都会使可用时间增加n + 3. 每隔一段时 间,当前的界面中的图片会进行

4、重排列n + 4. 在规定的时间里, 当所有的图片都消除时, 即为胜利n + 5. 规定的时间内有图片未消去,即为失败n) .setPositiveButton(确定, null).show(); /结束游戏 结束游戏 this.finish(); /进行游戏设置,设置游戏的难度,调用了 SetActivity 类 进行游戏设置, 进行游戏设置 设置游戏的难度, intent.setClass(this, SetActivity.class);3.7、接口API函数3.8、限制条件无明显限制条件4、界面设计说明 4.1、程序描述 主要功能:用于为玩家提供可视化的游戏界面,增加了游戏的可玩性 可

5、扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性 4.2、功能 生成游戏界面,生成进度条。如下图:4.3、 性能 能够快速的随机生成符合用户需求的界面4.4、 输入项 无输入4.5、 输出项 游戏界面4.6、 算法/定义游戏视图类public class GameView extends View /存储素材图片public int imageType/保存所有小格子中的图片public int grid = new introwcol; /初始化加载图片的类型public void initType() /总共要加载的图片int size = (row-2)*(col-2); /64

6、/每类图片加载的次数(张数) 要为偶数int count=size/imageType.length; /imageType.length=16for(int i=0; iimageType.length; i+)for(int j=0; jcount;j+)type.add(imageTypei);/初始化网格的设计private void initGrid() Random r = new Random();row;i+)col;if(i=0 | i=row-1 | j=0 |j=col-1)gridij=0; /四周不设置图片else Int index=r.nextInt(type.s

7、ize();gridij=type.get(index);type.remove(index);/设置位图的大小private void ititmBitmap(Context context) int typeLength=imageType.length;image=new BitmaptypeLength;/重新绘制itypeLength;i+) /创建一个 Bitmap 的对象Bitmap bitmap=Bitmap.createBitmap(int)width, (int)height, Bitmap.Config.ARGB_8888);/对 Bitmap 进行绘制 Canvas c

8、anvas = new Canvas(bitmap);Drawable dwr = context.getResources().getDrawable(imageTypei);dwr.setBounds(1, 1, 30, 30);dwr.draw(canvas);imagei=bitmap;/在 OnDraw 函数中画出框格,每次进行重绘操作/设置背景颜色:Paint backGround = new Paint();backGround.setColor(Color.WHITE);/画一个矩形canvas.drawRect(0, 0, getWidth(), getHeight(), b

9、ackGround);/设置网格线条的颜色Paint higth= new Paint();higth.setColor(Color.BLUE);/画网格10;/画横线、纵线canvas.drawLine(0, height*i, getWidth(), height*i, higth);canvas.drawLine(width*i, 0, width*i, getHeight(), higth); /画 image 图片boolean test=true; /检测图片是否消除完 for(int j=0;j=0 & grida.xi=0;i-)aLoc0=i+1;/向下for(i=a.y+1

10、;row &aLoc1=i-1;/向左for(i=a.x-1; gridia.y=0;aLoc2=i+1;/向右for(i=a.x+1;col &aLoc3=i-1;return aLoc;/用于判断水平方向是否连通private boolean horizon(Point a, Point b) if(a.x = b.x & a.y = b.y) /如果点击的是同一个图案,直接返回 falsereturn false;int x_start = a.x = b.x ? a.x : b.x;int x_end = a.x b.x : a.x;for(int x = x_start + 1; x

11、 x_end; x+)/只要一个不是-1,直接返回 falseif(gridxa.y != 0) return false;return true;/用于判断垂直方向是否连通private boolean vertical(Point a, Point b)if(a.x = b.x & a.y = b.y)int y_start = a.y = b.y ? a.y : b.y;int y_end = a.y b.y : a.y;for(int y = y_start + 1; y y_end; y+)if(grida.xy != 0) /只有一个拐点的情况private boolean one

12、Corner(Point a, Point b)Point c = new Point(a.x, b.y);Point d = new Point(b.x, a.y);if(gridc.xc.y = 0) boolean method1 = horizon(b, c) & vertical(a, c);if(method1) corner=new Point(c.x, c.y);return method1;if(gridd.xd.y = 0) boolean method2 = horizon(a, d) & vertical(b, d); if(method2)corner=new Poi

13、nt(d.x, d.y);return method2;else/有两个拐点的情况private boolean twoCorner(Point a, Point b) ll = scan(a, b);if(ll.isEmpty() for(int index = 0; index ll.size(); index+)Line line = (Line)ll.get(index);if(line.direct = 1)if(horizon(a, line.a) & horizon(b, line.b)corner=new Point(line.a);corner2=new Point(line

14、.b); if(vertical(a, line.a) & vertical(b, line.b)/上面设计了一个类来判断两个拐点的情况/类的定义,构造函数如下class Linepublic Point a;public Point b;public int direct;public Line()a = new Point();b = new Point();public Line(int direct, Point a, Point b)this.direct = direct;this.a = a;this.b = b;/对两个拐点的情况进行扫描,将扫描线放入 Line 类型的数组中p

15、rivate LinkedList scan(Point a, Point b)ll = new LinkedList();/Point c = new Point(a.x, b.y);/Point d = new Point(b.x, a.y);for(int y = a.y; y = 0; y-)if(grida.xy = 0 & gridb.xy = 0 & horizon(new Point(a.x, y), new Point(b.x, y)ll.add(new Line(0, new Point(a.x, y), new Point(b.x, y); row;for(int x =

16、 a.x; x x-)if(gridxa.y = 0 & gridxb.y = 0 & vertical(new Point(x, a.y), new Point(x, b.y) ll.add(new Line(1, new Point(x, a.y), new Point(x, b.y); col; x+)ll.add(new Line(1, new Point(x, a.y), new Point(x, b.y);return ll;/最后做总体判断,flag 表示拐点的数目public boolean checkLink(Point a,Point b)if(grida.xa.y !=

17、gridb.xb.y)/如果图案不同,直接为 falseif(a.y = b.y & horizon(a, b)flag=0; vertical(a, b) return true;if(oneCorner(a, b)flag=1;if(twoCorner(a, b)flag=2;5.6.2、图片消除的画线根据 flag 的值分情况分析:Flag=0 时,从起点到终点画一条线即可Flag=1 时,从起点到拐点,从拐点到终点画两条线Flag=2 时,从起点到拐点,从拐点到拐点,从拐点到终点画三条线在做连接判断时就将路径保存下来/画线操作写在 OnDraw 函数中,corner、corner2 保

18、存拐点坐标 函数中/每次都 sleep(50)后重绘switch(flag)case 0: canvas.drawLine(width*(former.x + 0.5f), height*(former.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);flag=-1;SystemClock.sleep(50);invalidate();break;case 1:canvas.drawLine(width*(former.x + 0.5f), height*(former.y+0.5f), width*(corner

19、.x+ 0.5f), height*(corner.y + 0.5f), p);canvas.drawLine(width*(corner.x + 0.5f), height*(corner.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);case 2:canvas.drawLine(width*(former.x + 0.5f), height*(former.y+0.5f), width*(corner.x + 0.5f), height*(corner.y + 0.5f), p);canvas.drawLin

20、e(width*(corner.x + 0.5f), height*(corner.y+0.5f), width*(corner2.x+ 0.5f), height*(corner2.y + 0.5f), p);canvas.drawLine(width*(corner2.x + 0.5f), height*(corner2.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);default:5.6.3、重新排列隔一段时间后,将原有的排列随机打乱,进行重新排列/对当前界面中的图片进行重新排列public void re

21、Draw()type= new ArrayList j if(gridij!type.add(gridij);int index = r.nextInt(type.size();gridij = type.get(index);former_i=former_j=0;former.x=former.y=0;/重新排列界面中的图片private void reStart() GameActivity.refresh=true;initType();initGrid();5.7、接口5.8、限制条件5.9、尚未解决的问题不能进行死锁判断,但是又重新排列的功能,可以很大程度上的避免死锁没有加分功能没有提示功能

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1