本着实践和动手第一的原则,我稍稍看了一些资料和简单的开发代码之后,对游戏开发有了一个初步的认识。迫不及待想要弄一个小东西。一定要让个什么东西在即的手中动起来。一开始我是想到了之前我都手机上的那个直升飞机游戏。飞机一直下落,按下一个键飞机就飞高。一高一低的躲避前面的障碍物。 不过自己不知道什么原因就想到了一只逃跑的老鼠被人用绳子绑住了尾巴。(看,人们总是这么残忍。)
上一篇文章本来就想写这个demo。结果前面开篇扯了一些游戏的相关知识,没想到就一大篇了,所以上一篇单独一篇作为预备知识(觉的自己很无耻)。
下看看丑陋的最后界面效果图。期望不要太高,本篇只是简单的画图、按键触摸屏的输入响应。只是简单的可以动。
嘿嘿,一直悲惨的老鼠,图片资源来自google图片搜索。
这个project 结构介绍。
其实就是比基本的helloword多了一个自己定义的DrawView该类继承自View,主要用来显示图画。一个Activity类 主要用来接收按键和触屏事件。然后放只老鼠在drawable里面,这里我气的名字叫mouse ,以后我们就可以用R.drawable.mouse 召唤老鼠。
就这么两个java文件。让我先来唧唧歪歪一大段,然后放出大家,如果你觉得罗嗦直接忽略汉字看代码。
先看GameTestActivity (就是该project中唯一的Activity)
直接在Oncrate方法里面设置主view 为我们自定义DrawView。
重写onKeyUp,onKeyDown 方法来接收按键事件,然后处理。(你的手机或者模拟器上需要有按键哦—— 废话么 ~)
重写onTouchEvent方法用来接收触屏事件,然后处理。(亲,你的手机或者模拟器要有屏幕,并且可以触摸或点击哦。——找打!)
然后看我们的DrawView,用来显示动画,负责绘制和刷新画面。
写构造器,构造器里面主要是初始化 画笔 及老鼠的初始坐标。
重写onDraw方法 ,该方法在构造器后执行,用来绘制该view的界面,调用invalidate 可以再次调用该方法,重新绘制view界面。
自己写个让老鼠向左向右移动的方法 moveLeft 和moveRight 。
- void moveLeft() {
- x--;
- invalidate();
- }
-
- void moveRight() {
- x+=3;
- invalidate();
- }
然后需要让这个老鼠自动往左跑。我们添加一个handler 和 timer 以及 timertast ,用来不断更新图像。
注意,这里不是让图像自动更新最好的办法,有待更好的方法。
代码
废话说完了 上代码。更消息的请大家看注释。在代码中注释起来还是比较清楚一些。
GameTestActivity.java
package com.qxjerry.game;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
public class GameTestActivity extends Activity {
DrawView mDrawView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDrawView = new DrawView(this);
setContentView(mDrawView);
}
private void pullMouse(boolean pull){
mDrawView.setPulling(pull);
if(pull){
mDrawView.moveRight();
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
pullMouse(false);
break;
case MotionEvent.ACTION_DOWN:
pullMouse(true);
break;
default:
break;
}
return true;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_SEARCH:
pullMouse(false);
break;
default:
break;
}
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_SEARCH:
pullMouse(true);
break;
default:
break;
}
return true;
}
}
DrawView.java
- DrawView.java代码请查看这里
- 链接:http://www.jerry-zhang.com/index.php/2011/09/28/android-game-dev-1-ondraw-ontouch-onkey-a-mouse/
解释说明
简单解释一下代码中涉及到的一些方法。
Timer的schedule方法介绍
mTimer.schedule(mTimerTask, 5, 50);
该方法第一个参数是一个线程,就是要不断执行的任务描述。这里我们是不断的发送让老鼠向左移动的命令。
第二个参数 是第一次执行该方法间隔的毫秒数
第三个参数 是后面执行该方法时 需要间隔的时间 毫秒单位
一个砍人的现场
你会感觉到 handler像一个刽子手,随时等候各种不动的命令。而timertast 想一个小领导,或者一个发命令的机器。
而timer的schedule 就像是总指挥。
这个时候你就感觉是总指挥给小领导说你每过2分钟给刽子手发个命令。
而小领导就美国2分钟发个命令给刽子手, 每过2分钟给刽子手是 “砍!” 。
而刽子手听到 “砍!” 就直接砍了。
到这里应该比较清楚的说明了这只可怜的丑陋的老鼠是如何被我们玩弄的了。大家可以玩弄自己想玩弄的东西。不要太暴力哦。
刚刚开始学习游戏开发,文章总有不准确或者错误之处,还请各位一定指出。
至于本文中的整体项目代码我计划随着文章的更新,将会有一个比较完善一个的版本,那个时候统一上传,提供大家下载。
不过如果有朋友需要该文章中代码也可以直接联系我索取。
相关推荐
本资源是琴弦jerry的android游戏开发笔记 系列文章1 的代码和文章。文章可以访问http://www.jerry-zhang.com/index.php/2011/09/28/android-game-dev-1-ondraw-ontouch-onkey-a-mouse/ 浏览。代码是该文章中的项目源...
通过对这个源码的学习,开发者不仅可以掌握如何在Android平台上创建一个基本的画图应用,还能深入了解Android图形系统的工作原理,以及如何响应用户输入进行实时绘图。这将有助于提升开发者在Android应用开发领域的...
这个"Android源码——画图程序源码.zip"文件包含了一个简单的Android应用程序,它允许用户在屏幕上自由绘制图形。通过分析这个源码,我们可以深入理解Android图形系统、触摸事件处理以及自定义View的机制。 首先,...
在Android平台上,开发一款画图程序涉及到许多关键的Android SDK组件和编程概念。这份"Android源码——画图程序源码.7z"压缩包包含了实现一个基本Android绘图应用的相关资源,包括图片和源代码文件。让我们深入探讨...
在Android平台上,开发一款能够绘画的应用程序是一项挑战性的工作,涉及到许多关键的技术点。这款"画图"应用的源代码提供了宝贵的实践经验,可以帮助开发者深入理解Android图形系统和用户交互处理。下面将详细讨论与...
在Android平台上,开发一款画图工具涉及到多个技术层面,包括图形绘制、用户交互以及视图更新等。这个"Android源码——画图工具源码.zip"文件可能包含了一个完整的示例项目,帮助开发者理解如何在Android应用中实现...
在安卓(Android)平台上开发应用时,有时我们需要创建具有画图功能的应用,比如手写笔记、涂鸦应用等。这份“安卓Android源码——画图工具源码.zip”压缩包提供了一个实现此类功能的源代码示例。通过分析和学习这份...
在Android平台上,开发一款画图工具涉及到许多核心的Android组件和功能。这个“Android源码——画图工具源码.7z”压缩包很可能是包含了这样一个应用的源代码,以及可能的一些截图或示例图片。从提供的文件名来看,...
在IT领域,编程语言是构建各种应用的基础,而C++是一种强大的、面向对象的编程语言,广泛用于系统软件、游戏开发、图形用户界面(GUI)等。本项目名为"C++程序——画图板",其核心是利用C++来实现一个简单的画图工具...
信息技术教学设计——画图是一份关于信息技术教学的教学设计方案,旨在帮助学生掌握基本的画图技能和认识画图程序的工作界面及工具栏中的工具。该设计方案共分为八个部分:教学目的、教学重难点、教学过程、认识...
信息技术教案——画图.pdf 本教程旨在教授学生如何使用计算机内置的“画图”程序进行基本的绘图操作。教学目标分为两部分:首先,掌握启动与退出“画图”程序的方法;其次,初步了解“画图”程序的功能及其窗口组成...
【标题】"毕业设计——画图程序"是一个典型的个人项目,通常由计算机科学或相关专业的学生在毕业时完成,以展示他们的编程技能和对图形用户界面的理解。这个项目可能包括了设计、编码、测试和文档编写等多个阶段,是...
### 基于VC++MFC程序设计——简易画图板 #### 概述 本文档将详细介绍如何利用VC++中的MFC(Microsoft Foundation Classes)框架来开发一款简易的画图板应用程序。该画图板的主要功能包括但不限于图形的绘制、线型...
在Matlab中,画图是数据分析和可视化的重要部分。这篇学习笔记主要涵盖了基本的二维图形绘制、平滑曲线的绘制、三维曲线以及三维曲面的绘制。以下是对这些知识点的详细解释: 1. **基本画图程序**: 在Matlab中,...
在内蒙古大学计算机学院,学生们可能会接触到一门名为“计算机图形学”的课程,这门课会涉及许多理论与实践的结合,其中一项常见的作业就是设计并实现一个画图工具。这个任务旨在让学生深入理解图形的生成、编辑和...
在这个名为“5解决问题的策略——画图”的PPT文档中,主要探讨了通过画图来解决数学问题,特别是与几何图形相关的计算问题。这个文档特别适用于财务管理类的学习者,因为理解几何图形的基本概念和计算方法在许多实际...
在Android平台上,开发一款简单的画图应用涉及到许多关键知识点,主要集中在Android Studio的使用、UI设计、绘图机制以及交互处理。以下是对这些知识点的详细解释: 1. **Android Studio**: Android Studio是...