实例17--无敌抢钱鸡
随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有些时间是在弄其他的,随着代码量的增加,要更加理解源代码的结构,我这次采用uml弄出他们的各个类图和结构,这样让我更了解原作者的思想...然后再用android的方法的实现,当然因为都是java开发的,有些类是直接用的,这次还是使用了我本来的写的android_midp包,在androidSprite类中添加了碰撞方法.
下面是效果图:
MainView.java
Java代码
package com.wjh.demon_17;
import java.util.Random;
import com.wjh.midp_me.GameView;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;
public class MainView extends SurfaceView implements Callback,Runnable{
public static final int GAME_UI = 0; //进入用户界面
public static final int GAME_GAMING = 1; //进行游戏
public static final int GAME_END = 2; //游戏结束
public static final int GAME_STATE_NUM = 3; //状态总数
private int m_nState = GAME_UI; //存储当前的游戏状态
private boolean m_bRunning; //控制线程运行
private MyBack m_Back; //游戏背景
private MyUI m_UI; //用户界面
private ChickSprite m_Chick; //管理小鸡对象
private GoodsSprite m_Goods[]; //管理物品对象
private int m_nScore = 0; //当前得分
private int m_nTime = 60 * 10; //游戏总时间
private Random m_Random;
private int screenStartX = 0;//游戏界面开始坐标X
private int screenStartY = 0;//游戏界面开始坐标Y
private int screenWidth = 0;//游戏界面宽度
private int screenHeight =0;//游戏界面高度
private Context context ;
int keyState = 0;
Thread gameThread = null;
SurfaceHolder holder = null;
public MainView(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
setFocusable(true);
setFocusableInTouchMode(true);
holder = this.getHolder();
holder.addCallback(this);
}
private void initView()
{
m_Random = new Random();
m_Back = new MyBack(context);
m_UI = new MyUI(context);
screenStartX = (getWidth() - m_Back.getBackImageWidth())/2;
screenStartY = (getHeight()-m_Back.getBackImageHeight())/2;
screenWidth = screenStartX+m_Back.getBackImageWidth();
screenHeight = screenStartY+m_Back.getBackImageHeight();
try{
//读取小鸡精灵图片,并设置小鸡的初始位置
Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.chick);
m_Chick = new ChickSprite( img, 31, 29);
m_Chick.setRefPixelPosition( getWidth() / 2, screenHeight- 18 );
//读取物品图片,屏幕上最多同时掉落6个物品
img = BitmapFactory.decodeResource(getResources(), R.drawable.goods);
m_Goods = new GoodsSprite[6];
for( int n = 0; n < m_Goods.length; n ++ )
m_Goods[n] = new GoodsSprite( img, 19, 19 );
}
catch (Exception ex){}
setState(GAME_UI); //设置游戏状态
}
private void setState( int state ){ //设置当前的游戏状态
if( state < 0 || state >= GAME_STATE_NUM )
return;&n
补充:移动开发 , Android ,