在使用android的朋友们,相信大家对android的游戏不陌生吧,像愤怒的小鸟,植物大战僵尸等等优秀的游戏,给我们带来了很好的用户体验

下面我来教大家一点android游戏开发的一点基础,大家可以参照这个方法框架来设计一些像贪吃蛇,俄罗斯方块,雷电等小游戏,从而激发大家学习的兴趣。

下面来看看这个程序的运行效果图:


这个红色小矩形就是我们可以操控的对象,我们可以用手机方向键控制它移动,也可以用触控的方式设置其位置,这是一些小游戏的雏形,大家可以再次深度开发,后面代码部分我会有详细的注释和源码下载,这里不再介绍

代码部分:

————————–GameActivity.java-—————————

package jiabin.activity; import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.view.WindowManager; public class GameActivity extends Activity{    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口没有标题        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示        setContentView(new GameView(this));//布局不采用静态布局,而是采用view方法                                           //不需要在资源文件中layout写XML文件    }}

————————–GameView.java—————————-

package jiabin.activity; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View; //这里我们继承Viewpublic class GameView extends View{     int left,top;    int w,h;    public GameView(Context context)    {        super(context);        left = 20;        top = 20;        w = 20;        h = 20;        setFocusable(true);        //这里要注意,别忘了加入setFocusable        //如果不加上这个,View被显示时,没有获得焦点,就是说,按键动作没有发送给View,所以需要在构造函数中增加这个函数    }     //复写onTouchEvent方法    @Override    public boolean onTouchEvent(MotionEvent event) {        // TODO Auto-generated method stub        int x = (int) event.getX();//获取touch事件的横坐标        int y = (int) event.getY();//获取touch事件的纵坐标        left = x;        top = y;        postInvalidate();//和invalidate()相似,都是是用来刷新View的。具体区别可以参考http://blog.csdn.net/ssstudio/article/details/6758917        return super.onTouchEvent(event);    }     //复写onDraw方法,这里有详细的参考博客,我就不再赘述了。http://daimajishu.iteye.com/blog/1080624    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        super.onDraw(canvas);        Paint paint =new Paint();        paint.setColor(Color.RED);        canvas.drawRect(left, top, left+w, top+h, paint);//画个矩形,也可以从资源文件中生成位图,方法见博客    }     //复写onKeyDown方法,该方法用来捕捉手机键盘被按下的事件    //使用方法可以参考博客:http://book.51cto.com/art/201010/231845.htm    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        // TODO Auto-generated method stub        switch(keyCode)        {            case KeyEvent.KEYCODE_DPAD_UP://按键响应事件                top-=10;//每次移动10像素,如果移动1像素的话会很慢,大家可以试试                postInvalidate();//这个刷新方法上面已经讲过                break;            case KeyEvent.KEYCODE_DPAD_DOWN:                top+=10;                postInvalidate();                break;            case KeyEvent.KEYCODE_DPAD_LEFT:                left-=10;                postInvalidate();                break;            case KeyEvent.KEYCODE_DPAD_RIGHT:                left+=10;                postInvalidate();                break;            default:                break;        }        return super.onKeyDown(keyCode, event);    }


————————————————————————

源码下载:

GameActivity

更多相关文章

  1. Android中导入工程出现Project has no default.properties file!
  2. Android实现定时器的几种方法
  3. android aidl和普通service
  4. Anroid ListView分组和悬浮Header实现
  5. RecyclerView的功能扩展(Android图片选择器)
  6. 关于Android(安卓)draw中的画布的说明
  7. 自定义View 篇一--------《自定义View流程分析》
  8. Android中保存图片的两种方式
  9. 在mac上无法使用Android(安卓)Studio的解决方法

随机推荐

  1. Android之Adapter优化
  2. Android(安卓)蓝牙开启关闭
  3. 如何去掉Android(安卓)6.0 UI界面上的搜
  4. 高德地图实现Marker模拟gif动画
  5. Android中背光系统架构
  6. 在Android应用中定制菜单
  7. Android(安卓)技能图谱学习路线
  8. Android(安卓)init.rc文件解析过程详解
  9. android icon适配最新版本
  10. Android(安卓)MTK去除移动网络