当前位置:操作系统 > 安卓/Android >>

实例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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,