【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

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。