[原创]雷电小游戏app设计

相信雷电是很多人的童年回忆,本文就尝试用android studio做一个简单的雷电小游戏。

游戏界面如下:

项目结构如下:

设计思路:

游戏机制设计

游戏目前的场景比较简单,为我军飞机对战敌军Boss飞机。我军飞机目前只有普通子弹攻击一种方式,我军飞机的移动方式为手指在屏幕上移动控制。为了增加游戏难度,为敌军飞机设计了三种攻击模式:

1)Boss飞机满血量为1000.当Boss飞机血量大于600时,Boss飞机会左右移动,对我军飞机进行规律地激光攻击;

2)Boss飞机血量在[300,600]之间时,Boss飞机移动会加速,会左右移动,追踪我军飞机并进行向无规律地激光攻击;

3)Boss飞机血量小于300时,会启动死亡撞击模式,一边攻击,一边试图撞击我军飞机。死亡撞击演示gif如下:

敌军飞机被击毁后,会掉落物品,游戏中设计了小水晶作为掉落物品,我军飞机获取后处于无敌状态,被光罩笼罩。为后续的设计做铺垫。

总结发现,在上述场景中,出现了飞机、掉落物品、子弹、爆炸效果等概念,将其抽象为类。

工程部分UML图如下:

飞机和敌机相撞,会导致我军飞机被击毁,另外飞机获取物品时也要做碰撞检测、子弹击中飞机时,还是要做碰撞检测。这些逻辑有共通之处,可以抽出一个公共的类,具有检测碰撞的公共方法。这样就避免了在代码到处去写和修改碰撞的逻辑。该公共类如下:

package com.example.demonstar.common;import android.content.Context;
import android.graphics.Bitmap;public class CommonObject {protected int positionX;protected int positionY;protected Bitmap skin;protected Context context;public CommonObject(Context context) {this.context = context;}public CommonObject(Context context, int positionX, int positionY) {this.context = context;this.positionX = positionX;this.positionY = positionY;}public boolean isCollided(CommonObject object) {return this.detectCollision(object) || object.detectCollision(this);}protected boolean detectCollision(CommonObject object) {if (object == null) {return false;}if (isVertexInArea(this.positionX, this.positionY, object)) {return true;}if (isVertexInArea(this.positionX + this.skin.getWidth(), this.positionY, object)) {return true;}if (isVertexInArea(this.positionX, this.positionY + this.skin.getHeight(), object)) {return true;}if (isVertexInArea(this.positionX + this.skin.getWidth(), this.positionY + this.skin.getHeight(), object)) {return true;}return false;}protected boolean isVertexInArea(int abscissa, int ordinate, CommonObject object) {return this.isAbscissaInRange(abscissa, object) && this.isOrdinateInRange(ordinate, object);}protected boolean isAbscissaInRange(int abscissa, CommonObject object) {return abscissa < object.getPositionX() + object.getSkin().getWidth() &&abscissa > object.getPositionX();}protected boolean isOrdinateInRange(int ordinate, CommonObject object) {return ordinate > object.getPositionY() &&ordinate < object.getPositionY() + object.getSkin().getHeight();}public int getPositionX() {return positionX;}public void setPositionX(int positionX) {this.positionX = positionX;}public int getPositionY() {return positionY;}public void setPositionY(int positionY) {this.positionY = positionY;}public Bitmap getSkin() {return skin;}public void setSkin(Bitmap skin) {this.skin = skin;}public Context getContext() {return context;}public void setContext(Context context) {this.context = context;}
}​

isCollided(CommonObject object)就是检测碰撞的公共方法。

以上图来说明一下碰撞检测的逻辑:

飞机总是需要一个原始图片去绘制到画布上的,碰撞检测实际上是在检测图片之间有无重叠。考虑我军飞机图片进入敌机图片区域的情形:当我军飞机位图的任意一个顶点位于ABCD的范围时,即可认为检测到碰撞的发生。敌机进入我军飞机HIJK区域时,同样也会发生碰撞。

时间所限,有空再写完。

[原创]雷电小游戏app设计相关推荐

  1. 基于Java+Swing实现雷电小游戏

    基于Java+Swing实现雷电小游戏 一.系统介绍 二.功能展示 三.其他系统 四.获取源码 一.系统介绍 基于java的雷电游戏基本功能包括:敌方飞机随机飞行.我方飞机手动控制飞行,射击比拼,游戏 ...

  2. HarmonyOS(鸿蒙)运动手表第二个小游戏app——数字华容道

    前言 这次博客是学完鸿蒙应用开发之后,自行开发的鸿蒙小游戏--数字华容道,这篇博客详细地讲了数字华容道的开发思路. 概述 本个demo将从零基础开始完成鸿蒙小游戏APP在可穿戴设备上的编译,此处以运动 ...

  3. 扫雷小游戏的设计思路以及实现的细致讲解

    大家好,今天博主来介绍扫雷小游戏的设计思路以及实现,会很细致的呦,喜欢的话还请给个三连吧! 目录 设计思路 一,基础框架 二,基础框架的填充和完善 代码实现 一,初始化函数 二,埋雷函数 三,展示雷区 ...

  4. c语言课时设计猜坐标游戏,c语言小游戏课程设计报告.docx

    c语言小游戏课程设计报告 中国地质大学 本科生课程论文封面 课程名称c语言课程设计 教师姓名陈喆老师 本科生姓名周宜诺 本科生学号XX 本科生专业土地资源管理 所在院系公共管理学院 类别: 日期: 课 ...

  5. 微信小游戏的设计和开发

    微信平台不但承载了聊天相关的基础属性,同时也有公众号的媒体属性.小程序的工具属性和支付的金融属性,是一个大而全的平台.因此越来越多的开发者基于小程序进行游戏开发,简单易用,支付方便,也是游戏开发者一个 ...

  6. 基于H5 网页的打豆豆小游戏的设计与实现

    目 录 摘 要 I Abstract II 第1章 绪论 1 1.1研究背景及意义 1 1.2研究现状 2 1.3研究主要内容 3 第2章 技术分析 4 2.1 HTML5简介 4 2.2游戏引擎 4 ...

  7. C++/QT 贪吃蛇小游戏 界面设计

    C++/QT 贪吃蛇小游戏 界面设计 前言:本文所写的贪吃蛇是笔者初学QT练手的小项目,做出来的界面较为粗糙.由于很久没有接触C++,程序中类封装的不是很规范.写这篇文章,权当是记录生活了,手动狗头. ...

  8. 【三子棋小游戏的设计思路以及代码实现】

    目录 一,设计思路 二, 代码实现 首先,欢迎各位点进我的文章.话不多说,正如标题一样,接下来,我来给大家讲解三子棋小游戏的设计思路以及代码实现.            一,设计思路 一. 大家应该都 ...

  9. 基于Java的飞机雷电射击游戏的设计实现(Eclipse开发)

    资源下载地址:https://download.csdn.net/download/sheziqiong/86937281 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. 高通创投在中国区的投资重点,目前主要聚焦在AI+5G、XR+5G、机器人/自动驾驶+5G、物联网+5G四个方面。
  2. [case12]演进式架构
  3. Wake-On-LAN待机或休眠模式中唤醒
  4. 在Docker启动Cloudera并开始体验
  5. 计蒜客(三角形的内点)
  6. Android免Root环境下Hook框架Legend原理分析
  7. 海量数据实时在线分析QuickBI
  8. 财务软件开发_财务独立对软件开发人员的重要性
  9. SpringCloud Eureka自我保护机制介绍及配置
  10. 网易云深度学习第一课第三周编程作业
  11. jsp网页实现自动刷新和自动跳转页面
  12. egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
  13. Blueprint:一个让你获取示例代码的Flash Builder扩展
  14. 计数译码显示电路实验报告总结_译码器及其应用
  15. 要想成功必须具备的九种手段
  16. python发展调研报告_实战 | Python自动生成PPT调研报告
  17. Mac和iphone利用自带邮件客户端添加263企业邮箱
  18. 如何在前端html获取cookie
  19. 关于uni.appd打包H5 图片在IOS 上不显示的问题
  20. 版权登记助手大师小程序开发

热门文章

  1. 巯基吡啶PEG巯基吡啶,OPSS-PEG-OPSS
  2. Python手写实现LDA与QDA算法
  3. python表达式3or5的值为_表达式 3 or 5 的值为
  4. http 500错误 Java_HTTP状态 500 - 内部服务器错误
  5. 使用IBM InfoSphere Guardium Encryption Expert保护您的敏感数据
  6. android获得键盘高度,Android获取软键盘高度
  7. 广州宇信易诚科技有限公司面试题
  8. java第一个程序编译失败,零基础java第一个程序HelloWorld,编译,环境变量,运行,注释...
  9. 基于UA-DETRAC车辆数据集在windows10系统下yolov3模型训练
  10. php最大公约数辗转相除程序,[转]辗转相除求最大公约数