【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实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.