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

Android_手把手教你写跳跃类游戏(1)

前言:

在CSDN上面看了不少andriod游戏开发方面的博客,发现大多都是讲解某一方面的知识,没有一个完整的开发教程。

所以我就写了这样一个系列的博客,完整的描述整个游戏的开发过程。

希望能给大家一点帮助,同时也希望大家能给出好的建议。我们共同学习~

作者只是一个普普通通的andriod初学者,如果在博客有错误的地方,麻烦联系我。我会修改的~

好了进入正题:

这是第一篇博客,里面涉及到的东西都比较基础~~~

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

2.最终成品展示:

 \\\

 

这个是程序的最终效果。每个小方块都有许多运动方式,水平的,垂直的,静止的,圆周运动的。。。同时每个小方块都有不同的属性。有的碰到会消失,有的弹性更好等等。。。具体的设计方法我会后面几篇文章详细介绍。童鞋们也可以先自己想想看,怎么设计这个游戏。

3.这节课主要完成基本框架的搭建:我们采用Su易做图ceView实现游戏,(View一般用来做那些不需要一直刷新的游戏:如五子棋,连连看之类的)。

Su易做图ceView默认实现双缓冲。所以在效率上会高一点。

所谓双缓冲简单的理解就是把要画在屏幕上的图案,先画到一张画布(如Bitmap)上,然后再把这张画布直接画到屏幕上,这样就可以避免闪烁现象。

我们先建一个android project。

 \

\

 

然后建一个GameView。也就是Su易做图ceView的子类。项目的机构图:

 \

 

附上代码:

GameActivity.java

[java] package jumpball.game; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.view.Window; 
import android.view.WindowManager; 
 
public class GameActivity extends Activity { 
    GameView mView; 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
         
        requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题  
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏模式  
        //获取系统的屏幕属性  
        DisplayMetrics dm = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(dm); 
         
        mView = new GameView(this, dm.widthPixels, dm.heightPixels); 
        //应用这个布局  
        setContentView(mView); 
    } 

package jumpball.game;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Window;
import android.view.WindowManager;

public class GameActivity extends Activity {
 GameView mView;
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     
     requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏模式
  //获取系统的屏幕属性
  DisplayMetrics dm = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(dm);
  
  mView = new GameView(this, dm.widthPixels, dm.heightPixels);
  //应用这个布局
  setContentView(mView);
    }
}[java] GameView.java 
GameView.java[java] package jumpball.game; 
 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.Su易做图ceHolder; 
import android.view.Su易做图ceView; 
import android.view.Su易做图ceHolder.Callback; 
 
//本身就是一个Runnable接口  
public class GameView extends Su易做图ceView implements Callback, Runnable { 
    public int width, height; 
    private Canvas mCanvas; 
    //刷新界面线程  
    private Thread mThread; 
    //处理者  
    private Su易做图ceHolder mSu易做图ceHolder; 
    private boolean mIsRunning = false; 
    private int TIME_IN_FRAME = 50; 
    GameActivity gameActivity; 
 
    public GameView(Context context, int width, int height) { 
        super(context); 
        //setFocusable(true);  
        //activity是 context的一个子类。  
        gameActivity = (GameActivity) context; 
        this.width = width; 
        this.height = height; 
         
        mSu易做图ceHolder = getHolder(); 
        mSu易做图ceHolder.addCallback(this); 
    } 
 
    public void mDraw() { 
        //设置画布的颜色  
        mCanvas.drawColor(Color.WHITE); 
        drawBG(mCanvas); 
    } 
 
    public void drawBG(Canvas mCanvas) { 
        Paint mPaint = new Paint(); 
        mPaint.setColor(Color.BLACK); 
        //设置透明度  
        mPaint.setAlpha(50); 
        //设置抗锯齿  
        mPaint.setAntiAlias(true); 
        float h = height * 0.01666667f; 
        for (int i = 0; i < height; i += h) { 
            mCanvas.drawLine(0, i, width, i, mPaint); 
        } 
    } 
    public void su易做图

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,