吃金币小游戏笔记

发布时间:2016-12-11 0:53:30 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"吃金币小游戏笔记",主要涉及到吃金币小游戏笔记方面的内容,对于吃金币小游戏笔记感兴趣的同学可以参考一下。

吃金币小游戏实现的功能有:每个不同颜色的金币所代表的数值不同,且下落速度也不相同,玩家通过重力感应来控制角色的左右移动来吃金币,一定时间内没有吃到足够的金币,则挑战游戏失败,游戏非常简单。下面是游戏的一些图,图片来自于互联网: 再说下开发过程中遇到的一些问题吧: 1.如何通过重力感应判断角色的移动方向 通过实现SensorEventListener接口,复写public void onSensorChanged(SensorEvent event)()函数判断当前的移动方向。部分代码如下: mSensorMgr = (SensorManager) context.getSystemService(context.SENSOR_SERVICE); mSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // 注册listener,第三个参数是检测的精确度 //SENSOR_DELAY_FASTEST 最灵敏 因为太快了没必要使用 //SENSOR_DELAY_GAME 游戏开发中使用 //SENSOR_DELAY_NORMAL 正常速度 //SENSOR_DELAY_UI 最慢的速度 mSensorMgr.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME);   public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub mGX = event.values[SensorManager.DATA_X]; mGY= event.values[SensorManager.DATA_Y]; mGZ = event.values[SensorManager.DATA_Z]; //System.out.println("x" + mGX +"y" + mGY); number++; m_time++; if(m_time > 25)//每隔一段时间产生一些金币 { m_time = 0; makeMoney(); } if(number > 2) { number = 0; if( mGX > 0)//此时精灵方向要向左 { int dir = sprite.getDir(); if(dir == DIR_LEFT)//上次方向是向左 { sprite.dir = DIR_LEFT; frames++; if(frames > bmpLeft.length - 1)frames = 0; } else//上次的方向是向右 { frames = 0; sprite.dir = DIR_LEFT; } sprite.x -= speed; if(sprite.x < 0)sprite.x = 0; sprite.bmp = bmpLeft[frames]; } else //此时精灵方向要向右 { int dir = sprite.getDir(); if(dir == DIR_LEFT) { sprite.dir = DIR_RIGHT; frames = 0; } else { frames++; if(frames > bmpRight.length - 1)frames = 0; } sprite.x += speed; if(sprite.x > screenWidth - sprite.bmp.getWidth())sprite.x = screenWidth - sprite.bmp.getWidth(); sprite.bmp = bmpRight[frames]; } } }   2.如何判断角色和金币发生碰撞 之前有买过一本名叫android游戏开发宝典的书,里面讲到了碰撞的检测。思路是,当不满足金币在角色的左侧、右侧,上面,下面这几种情况时,就说明发生了碰撞,否则就没有发生碰撞。部分代码如下: public boolean checkCollusion(Money temp) { int x = temp.x; int y = temp.y; if(sprite.x > x && sprite.x > x + temp.bmp.getWidth())//精灵在右侧 { return false; } else if(sprite.x < x && sprite.x + sprite.bmp.getWidth() < x)//精灵在左侧 { return false; } else if(sprite.y > y && sprite.y > y + temp.bmp.getHeight())//精灵在下面 { return false; } else if(sprite.y < y && sprite.y + sprite.bmp.getHeight() < y)//精灵在上面 { return false; } else return true; } 3,还要注意到的一点是,在注册了重力感应之后,游戏结束之后要记得注销重力感应,貌似不注册会很费电(这个是在谷歌百度上看到的),可以通过以下代码实现: public void surfaceDestroyed(SurfaceHolder holder) {//推出时要记得取消重力感应,否则很费电 // TODO Auto-generated method stub flag = false; mSensorMgr.unregisterListener(this); } 好了,暂时就讲这么多,以后有新的问题再进行补充。

上一篇:Java 8全面解析
下一篇:Oracle10g如何释放flash_recovery_area,解决ORA-19815错误

相关文章

相关评论