Android游戏开发教程:手教你写跳跃类游戏

 

Android游戏开发教程:手教你写跳跃类游戏

  1. package jumpball.game;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.DisplayMetrics;  
  6. import android.view.Window;  
  7. import android.view.WindowManager;  
  8.   
  9. public class GameActivity extends Activity {  
  10.     GameView mView;  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.           
  14.         requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题   
  15.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  16.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏模式   
  17.         //获取系统的屏幕属性   
  18.         DisplayMetrics dm = new DisplayMetrics();  
  19.         getWindowManager().getDefaultDisplay().getMetrics(dm);  
  20.           
  21.         mView = new GameView(this, dm.widthPixels, dm.heightPixels);  
  22.         //应用这个布局   
  23.         setContentView(mView);  
  24.     }  
  25. }  
[java] view plaincopyprint?
  1. GameView.java  
[java] view plaincopyprint?
  1. package jumpball.game;  
  2.   
  3. import android.content.Context;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.Color;  
  6. import android.graphics.Paint;  
  7. import android.view.SurfaceHolder;  
  8. import android.view.SurfaceView;  
  9. import android.view.SurfaceHolder.Callback;  
  10.   
  11. //本身就是一个Runnable接口   
  12. public class GameView extends SurfaceView implements Callback, Runnable {  
  13.     public int width, height;  
  14.     private Canvas mCanvas;  
  15.     //刷新界面线程   
  16.     private Thread mThread;  
  17.     //处理者   
  18.     private SurfaceHolder mSurfaceHolder;  
  19.     private boolean mIsRunning = false;  
  20.     private int TIME_IN_FRAME = 50;  
  21.     GameActivity gameActivity;  
  22.   
  23.     public GameView(Context context, int width, int height) {  
  24.         super(context);  
  25.         //setFocusable(true);   
  26.         //activity是 context的一个子类。   
  27.         gameActivity = (GameActivity) context;  
  28.         this.width = width;  
  29.         this.height = height;  
  30.           
  31.         mSurfaceHolder = getHolder();  
  32.         mSurfaceHolder.addCallback(this);  
  33.     }  
  34.   
  35.     public void mDraw() {  
  36.         //设置画布的颜色   
  37.         mCanvas.drawColor(Color.WHITE);  
  38.         drawBG(mCanvas);  
  39.     }  
  40.   
  41.     public void drawBG(Canvas mCanvas) {  
  42.         Paint mPaint = new Paint();  
  43.         mPaint.setColor(Color.BLACK);  
  44.         //设置透明度   
  45.         mPaint.setAlpha(50);  
  46.         //设置抗锯齿   
  47.         mPaint.setAntiAlias(true);  
  48.         float h = height * 0.01666667f;  
  49.         for (int i = 0; i < height; i += h) {  
  50.             mCanvas.drawLine(0, i, width, i, mPaint);  
  51.         }  
  52.     }  
  53.     public void surfaceChanged(SurfaceHolder holder, int format, int width,  
  54.             int height) {  
  55.     }  
  56.   
  57.     public void surfaceCreated(SurfaceHolder holder) {  
  58.         mIsRunning = true;  
  59.         //新建一个刷屏线程   
  60.         mThread = new Thread(this);  
  61.         mThread.start();  
  62.     }  
  63.   
  64.     public void surfaceDestroyed(SurfaceHolder holder) {  
  65.         //销毁这个,   
  66.         mIsRunning=false;  
  67.     }  
  68.   
  69.     public void run() {  
  70.         //决定线程是否继续执行   
  71.         while (mIsRunning) {  
  72.             long startTime = System.currentTimeMillis();  
  73.             //调用mDraw进行绘制   
  74.             synchronized (mSurfaceHolder) {  
  75.                 mCanvas = mSurfaceHolder.lockCanvas();  
  76.                 mDraw();  
  77.                 mSurfaceHolder.unlockCanvasAndPost(mCanvas);  
  78.             }  
  79.               
  80.             long endTime = System.currentTimeMillis();  
  81.               
  82.             int diffTime = (int) (endTime - startTime);  
  83.               
  84.             while (diffTime < TIME_IN_FRAME) {  
  85.                 diffTime = (int) (System.currentTimeMillis() - startTime);  
  86.                 Thread.yield();  
  87.             }  
  88.         }  
  89.     }  
  90. }  

 

  1. 游戏介绍:这次编写的游戏是一款跳跃类游戏,类似与涂鸦跳跃。我们通过小球触碰方块,完成小球的跳跃。我们将在这一列的博客中来实现这款游戏的开发。
  2. 小小游戏,只供娱乐!!!

转载于:https://www.cnblogs.com/dc0315/archive/2013/01/06/2847063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值