Android游戏——飞行射击游戏1945最简单的实现

2024-03-22 00:20

本文主要是介绍Android游戏——飞行射击游戏1945最简单的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:准备考研了,前段时间电脑硬盘坏了,郁闷!!!这几天学习了下不用引擎如何用java做一个小游戏。关卡和菜单什么的没做,主要做了玩起来的部分。
声明:转载请注明出处。

开发环境

  • eclipse+android4.4(测试android6.0运行也没问题)
  • 总目录如下:MainActivity.java是引导类、MainGame.java是游戏总体框架类、Hero.java是玩家的战机、Npc.java是敌人的战机、BulletHero.java和BulletNpc.java是子弹类、GameUtils.java是工具类包括常量也在里面。
    这里写图片描述

框架类介绍
基本大部分游戏的运行流程都如下面框架类所示:永远是先逻辑,在绘画,如此循环而已。首先把logo、Init、Menu、都跑一边,做初始化工作。然后开始游戏后一直循环调用Deal_Paly()和Draw_Paly()。具体看源代。
http://download.csdn.net/detail/sinat_18127633/9396449

package src.com;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;/** 框架类*/
public class Game extends View implements Runnable {// 游戏的当前状态int Game_State;// ------------------------------------ 游戏的状态// 游戏的Logo 状态public static final int GAME_LOGO = 0X0001;// 游戏的加载 状态public static final int GAME_INIT = 0X0002;// 游戏的菜单 状态public static final int GAME_MENU = 0X0003;// 游戏的进行 状态public static final int GAME_PLAY = 0X0004;// 游戏的暂停 状态public static final int GAME_PAUSE = 0X0005;// 游戏的退出 状态public static final int GAME_EXIT = 0X0006;// 屏幕的宽度和高度int Screen_w, Screen_h;Paint paint;// 线程Thread thread;// 线程开关boolean isRun;// ----------------------------- 触屏相关int Point_x, Point_y;//判断是否触屏boolean isPoint;/*** 框架类的构造方法(是负责给框架类的数据做初始化用的)* * @param context*/public Game(Context context, Display display) {super(context);// ---------------- 获取当前手机的屏幕的宽度和高度this.Screen_w = display.getWidth();this.Screen_h = display.getHeight();// ---------------- 游戏开始时是从游戏的Logo状态开始的this.Game_State = GAME_LOGO;// ----------------this.paint = new Paint();// ---------------- 线程相关初始化this.isRun = true;this.thread = new Thread(this);this.thread.start();// 这行代码执行后,系统就会找run()这个方法自动执行}/*** 线程运行方法*/public void run() {// 循环( 逻辑--》绘画--》时间的间隔)while (this.isRun) {// 1.逻辑this.Deal();// ----------------------// 2.调用总绘画this.postInvalidate();// ------------------ 3.时间的间隔(20分之一秒)try {Thread.sleep(50);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// -------------------------------------/*** 总绘画(画布)*/public void onDraw(Canvas canvas) {// --------------switch (this.Game_State) {case GAME_LOGO:this.Draw_Logo(canvas);break;case GAME_INIT:this.Draw_Init(canvas);break;case GAME_MENU:this.Draw_Menu(canvas);break;case GAME_PLAY:this.Draw_Play(canvas);break;case GAME_PAUSE:this.Draw_Pause(canvas);break;case GAME_EXIT:this.Draw_Exit(canvas);break;}}/*** 绘画_Logo* * @param canvas*/public void Draw_Logo(Canvas canvas) {}/*** 绘画_Init* * @param canvas*/public void Draw_Init(Canvas canvas) {}/*** 绘画_Menu* * @param canvas*/public void Draw_Menu(Canvas canvas) {}/*** 绘画_Play* * @param canvas*/public void Draw_Play(Canvas canvas) {}/*** 绘画_Pause* * @param canvas*/public void Draw_Pause(Canvas canvas) {}/*** 绘画_Exit* * @param canvas*/public void Draw_Exit(Canvas canvas) {}/*** 触屏事件(系统方法)*/public boolean onTouchEvent(MotionEvent me) {this.Point_x = (int) me.getRawX();this.Point_y = (int) me.getRawY();switch (me.getAction()) {case MotionEvent.ACTION_DOWN:this.isPoint = true;break;case MotionEvent.ACTION_UP:this.isPoint = false;break;}//这里一定要返回true, 否则ACTION_MOVE里获取不到Point_x, Point_yreturn true;}// -------------------------------------/*** 总逻辑方法*/public void Deal() {switch (this.Game_State) {// 如果游戏的当前状态是LOGO状态时case GAME_LOGO:this.Deal_Logo();break;// 如果游戏的当前状态是初始化状态时case GAME_INIT:this.Deal_Init();break;// 如果游戏的当前状态是菜单状态时case GAME_MENU:this.Deal_Menu();break;// 如果游戏的当前状态是进行状态时case GAME_PLAY:this.Deal_Play();break;// 如果游戏的当前状态是暂停状态时case GAME_PAUSE:this.Deal_Pause();break;// 如果游戏的当前状态是退出状态时case GAME_EXIT:this.Deal_Exit();break;}}// ----------------------/*** 逻辑_Logo*/public void Deal_Logo() {// .....// ----------------this.Game_State = GAME_INIT;}/*** 逻辑_Init*/public void Deal_Init() {this.Game_State = GAME_MENU;}/*** 逻辑_Menu*/public void Deal_Menu() {// .....// ----------------this.Game_State = GAME_PLAY;}/*** 逻辑_Play*/public void Deal_Play() {}/*** 逻辑_Pause*/public void Deal_Pause() {}/*** 逻辑_Exit*/public void Deal_Exit() {}
}

这是游戏运行截图
无

这篇关于Android游戏——飞行射击游戏1945最简单的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834157

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期