1、Android游戏基础,贪吃蛇,简介,了解Android图形绘制 了解游戏的基本逻辑,图形绘制View onDraw(),创建一个类,继承View或SurfaceView,覆盖onDraw()方法 构造方法 View(Context context) View(Context context, AttributeSet attrs) View(Context context, AttributeSet attrs, int defStyle),地图布局定位,把屏幕划分成一个二维的点阵,用int来记录每一个方格状态 计算横、纵向排下图形(方格)的个数 计算横纵向偏移量,用来绘制每个方格时定位 初
2、始化二维数组,构造方法 onSizeChanged() 布局时该视图的大小发生改变时调用该方法.如果是刚加入的视图,变更前的值为 0 完成初始化工作 onDraw() 完成反复绘制工作,完成墙的绘制buildWall(),完成墙绘制之前 加载游戏中用的图片 红色(蛇头)、黄色(蛇身)、绿色(墙,苹果) loadPic(int key, Drawable drawable) 为地图位置赋值 setTile(int picIndex, int x ,int y),绘制墙,绘制墙,就是onDraw()方法检查哪些位置是赋值过的。 后续将扫描地图中所有的点,检查是哪一种图片,并绘制 canvas.dr
3、awBitmap(bitmap, left, top, paint),蛇的移动,蛇的移动考虑 实现不断的重绘 蛇的位置变化,形成走动 蛇的长度不断变化,用ArrayList 要记录蛇的位置,需要一个坐标类 Coordinate private ArrayList snakeTrail = new ArrayList();,坐标类Coordinate,移动的新的坐标 public Coordinate(int newX, int newY) 碰撞、冲突检测 public boolean equals(Coordinate other),实现方块的移动,使用Handler 相当于JavaScrip
4、t setInterval用法 线程中止一小段时间后,重复调用绘图方法 通知调用重绘, View 的 invalidate(),蛇的走动,每次重绘前,需清除地图上所有的图 clearTiles() upSnake() 要根据键盘监听事件,改变蛇头的坐标,键盘监听事件onKeyDown,需在构造方法中 setFocusable(true); 原因:View被显示时,没有获取焦点。也就是说,按键动作没有发送给View,实现蛇的走动,蛇头,新位置 snakeTrail.add(0,newHead); 蛇走动,不增加长度,减去最后 snakeTrail.remove(snakeTrail.size()-1),产生随机苹果,addRandomApple() 需要进行冲突检查,必段不是蛇身所在的位置,坐标检查,蛇吃掉苹果,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;,谢谢合作! 我们因努力而精彩!,