android小游戏制作基础,View实现游戏布局和方法

本文将教你如何使用Android开发简单的游戏,如贪吃蛇、俄罗斯方块、雷电等,通过实例代码和运行效果展示,指导你如何设计和实现这些小游戏,激发学习兴趣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用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;
 
//这里我们继承View
public 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.youkuaiyun.com/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值