1 / 16

移动游戏开发 —— 贪吃蛇

移动游戏开发 —— 贪吃蛇. 框架设计代码编写:舒吉 美工设计:孙冠南 软件测试:文达. 指导教师:李政仪. 了解Android图形绘制 了解游戏的基本逻辑. 简介. 通过键盘的控制可以让蛇进行游动 当蛇食了苹果之后,蛇的身体长度发生变化 当蛇撞了自己或者撞墙后,游戏结束 用户可以开始 / 暂停游戏. 图形绘制View onDraw(). 创建一个类,继承View或SurfaceView,覆盖 onDraw()方法 构造方法 View(Context context)

leo-dorsey
Download Presentation

移动游戏开发 —— 贪吃蛇

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 移动游戏开发——贪吃蛇 框架设计代码编写:舒吉 美工设计:孙冠南 软件测试:文达 指导教师:李政仪

  2. 了解Android图形绘制 了解游戏的基本逻辑 简介 • 通过键盘的控制可以让蛇进行游动 • 当蛇食了苹果之后,蛇的身体长度发生变化 • 当蛇撞了自己或者撞墙后,游戏结束 • 用户可以开始/暂停游戏

  3. 图形绘制View onDraw() • 创建一个类,继承View或SurfaceView,覆盖 onDraw()方法 • 构造方法 • View(Context context) • View(Context context, AttributeSet attrs) • View(Context context, AttributeSet attrs, int defStyle)

  4. 方法执行顺序 构造方法 onSizeChanged() 布局时该视图的大小发生改变时调用该方法.如果是刚加入的视图,变更前的值为 0 完成初始化工作 onDraw() 完成反复绘制工作

  5. 完成墙的绘制buildWall() • 完成墙绘制之前 • 加载游戏中用的图片 • 蛇头、蛇身、墙,苹果 • loadPic(int key, Drawable drawable) • 为地图位置赋值 • setTile(int picIndex, int x ,int y)

  6. 绘制墙 • 绘制墙,就是onDraw()方法检查哪些位置是赋值过的。 • 后续将扫描地图中所有的点,检查是哪一种图片,并绘制 • canvas.drawBitmap(bitmap, left, top, paint)

  7. 蛇的移动 • 蛇的移动考虑 • 实现不断的重绘 • 蛇的位置变化,形成走动 • 蛇的长度不断变化,用ArrayList • 要记录蛇的位置,需要一个坐标类 Coordinate • private ArrayList<Coordinate> snakeTrail = new ArrayList<Coordinate>();

  8. 坐标类Coordinate • 移动的新的坐标 • public Coordinate(int newX, int newY) • 碰撞、冲突检测 • public boolean equals(Coordinate other)

  9. 实现方块的移动 • 使用Handler • 相当于JavaScript setInterval用法 • 线程中止一小段时间后,重复调用绘图方法 • 通知调用重绘, View 的 invalidate()

  10. 蛇的走动 • 每次重绘前,需清除地图上所有的图 • clearTiles() • upSnake() • 要根据键盘监听事件,改变蛇头的坐标

  11. 键盘监听事件onKeyDown • 需在构造方法中 setFocusable(true); • 原因:View被显示时,没有获取焦点。也就是说,按键动作没有发送给View

  12. 实现蛇的走动 • 蛇头,新位置 • snakeTrail.add(0,newHead); • 蛇走动,不增加长度,减去最后 • snakeTrail.remove(snakeTrail.size()-1)

  13. 产生随机苹果 • addRandomApple() • 需要进行冲突检查,必段不是蛇身所在的位置,坐标检查

  14. 蛇吃掉苹果 int appleLength = appleList.size(); for (int appleIndex = 0; appleIndex < appleLength; appleIndex++) { Coordinate c = appleList.get(appleIndex); if(c.equals(newHead)){ appleList.remove(c); addRandomApple(); growSnake = true; } }

  15. Any questions? Q & A

  16. Thanks!

More Related