【Java】Java小游戏之Shoot游戏源码及详解

2024-06-14 01:32

本文主要是介绍【Java】Java小游戏之Shoot游戏源码及详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【Java】Java小游戏之Shoot游戏源码及详解


Shoot游戏是模仿微信中打飞机小游戏,这个游戏虽然简单,但通过这个游戏小项目,可以练习很多小的知识点,提高对面向对象的理解,还能提高逻辑思维能力。总之,好处多多,下面我将对游戏的结构及代码进行详细说明:

游戏运行状态界面:

1)游戏中类的结构图:

2)游戏步骤01:

1.class FlyingObject{image,width,height,x,y}
2.interface Enemy{int getScore();}
3.interface Award{DOUBLE_FILE,LIFEint getType();}
4.class Airplane extends 1 implements 2{speedAirplane(){}重写getScore()}
5.class Bee extends 1 implements 3{xSpeed,ySpeed,awardTypeBee(){}重写getType()}
6.class Bullet extends 1{speedBullet(int x,int y){}}
7.class Hero extends 1{life,doubleFire,images,indexHero(){}}
8.class ShootGame extends JPanel{WIDTH,HEIGHTbackground,start,pause,gameoverairplane,bee,bullet,hero0,hero1hero(Hero)flyings(FlyingObject[])bullets(Bullet[])ShootGame(){初始化对象}static{}重写paint(g){画背景图paintHero(g);paintFlyingObjects(g);paintBullets(g);}paintHero(g){} //画英雄机paintFlyingObjects(g){} //画敌人paintBullets(g){} //画子弹main(){...frame.setVisible(true);}}

3)游戏步骤02:

1.敌人入场的实现步骤:1)main(){ game.action(); }2)action(){...run(){ //10毫秒定时执行enteredAction(); //敌人入场repaint();}}3)int index = 0;enteredAction(){ //10毫秒index++;if(index%40==0){  //40*10毫秒FlyingObject one = nextOne(); //创建一个敌人对象flyings = Arrays.copyOf(flyings,flyings.length+1); //扩容flyings[flyings.length-1] = one; //将敌人对象添加到敌人数组中}}4)nextOne(){生成0到19间的随机数为0时return new Bee();否则return new Airplane();}
2.飞行物走一步的实现步骤:1)FlyingObject----抽象方法step();2)Airplane,Bee,Bullet,Hero---重写step()3)action(){run(){enterAction();stepAction();repaint(); //重画}}4)stepAction(){遍历所有敌人,调用step()遍历所有子弹,调用step()hero.step();}
3.子弹入场的实现步骤:1)Hero---shoot()英雄机发射子弹2)action(){run(){...shootAction(); //发射子弹repaint();}}3)int shootIndex = 0;shootAction(){ //10毫秒走一次shootIndex++;if(shootIndex%30==0){ //300毫秒调用Hero的shoot()得到发射出的子弹数组bs将bullets扩容将bs追加到bullets数组中--System.arraycopy()}}
4.英雄机随着鼠标移动的实现步骤:1)Hero---moveTo(int x,int y)2)action(){MouseAdapter l = new MouseAdapter(){重写MouseMoved(){获取鼠标的x和yhero.moveTo(x,y); //移动}};this.addMouseMotionListener(l);this.addMouseListener(l);run(){...}}
5.子弹和敌人碰撞的实现步骤:1)FlyingObject---shootBy(Bullet b)2)Hero----addDoubleFire(),addLife()3)action(){run(){...bangAction(); //检查碰撞repaint();}}4)bangAction(){遍历所有子弹,将子弹传给bang()方法}5)bang(Bullet b){ //1发子弹与所有敌人撞遍历所有敌人,获取每一个敌人f判断f是否与b撞上了若撞上了:5.1)得分或得奖励5.1.1)得到被撞敌人对象5.1.2)判断是敌人还是奖励若是敌人则增分若是奖励则得奖励类型判断不同的奖励类型:增命或增火力值5.2)将被撞对象从flyings中删除5.2.1)将被撞敌人与最后一个元素交换(追尾并绕圈)5.2.2)缩容---删除最后一个元素(被撞的对象)}

4)游戏步骤03:

1.画分和画命的实现步骤:1)hero---getLife()获取命2)paint(g){......paintScore(g); //画分和命}3)paintScore(g){设置颜色g.setColor(...)设置字体g.setFont(...)画分g.drawString(...);画命g.drawString(...);}
2.删除越

这篇关于【Java】Java小游戏之Shoot游戏源码及详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

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

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

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

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

Java中Integer128陷阱

《Java中Integer128陷阱》本文主要介绍了Java中Integer与int的区别及装箱拆箱机制,重点指出-128至127范围内的Integer值会复用缓存对象,导致==比较结果为true,下... 目录一、Integer和int的联系1.1 Integer和int的区别1.2 Integer和in

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

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

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

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定