lol — adc厄斐琉斯武器的轮换机制

本文介绍了一个厄斐琉斯武器轮换机制的项目,简化了游戏中武器的子弹数量和消耗规则,通过图形界面展示主副武器剩余子弹,并详细阐述了设计思路和代码结构。
摘要由CSDN通过智能技术生成

(一)项目规则介绍

做一个厄斐琉斯武器轮换机制的简单界面,厄斐琉斯拥有妹妹给与的五把武器,按顺序依次是:
1.通碧
2.断魄
3.坠明
4.荧焰
5.折镜

说明:
游戏中规则为每个武器子弹为50发,平A减一发,Q技能减10发,显示主、副武器子弹数,W技能切换主副武器,当主武器折镜的子弹打完时,主武器重置为通碧重新开始循环,由于Q技能和平A有相同的消耗机制,因此 本项目简化设计为平A机制和W换武器、换子弹机制,每个武器子弹数量简化为5发,主、副武器显示剩余子弹数,游戏中主武器和副武器都显示剩余子弹数,副武器显示在E技能的位置(所以没有E技能)。

(二)图形界面

主界面:
在这里插入图片描述

四个按钮出现的交互窗口:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(三)项目实现与未实现功能介绍

项目实现功能:

1.简单的图形界面————四个按钮一个标题
2.与游戏相匹配的武器轮换机制————点按钮“A”消耗一发子弹,点
按钮“W”主副武器互换,主武器子弹消耗完毕后,主武器切换下一把武器

想要实现却未实现的功能:

想用用按键“A”和“W”代替鼠标点击按钮“A”和“W”,
尝试了如下方法未果:
1.在按钮上添加键盘监听器,但必须要点击按钮后按“A”才有反应
2.在窗体上添加键盘监听器,有一半成功,失败点在于只要点击任意一个按钮,后续再
  按键,就没有反应了。

(四)代码设计思路和简化结构

设计思路(主要是逻辑设计的思路):

1.为什么要用到mainWeaponAfterExchange 来存储换武器后的主武器?

	因为点“W”后,如果要查看主武器,必须再点“主武器及子弹数”才能查看,而方法mainWeaponOrder()
在“主武器及子弹数”按钮的监听器中,所以,如果不用题中变量来存储主武器的话,主武器将不会变化。

2.方法mainWeaponOrder()为什么要在“主武器及子弹数”按钮的监听器中,而不是在别的地方?

	因为该按钮的作用是输出交换后和子弹消耗完后的主武器和子弹数,因此必须写在这两个监听器之后,
所以这里的写法不唯一,也可以把logicDesign()中的第一个方法去除,转而调用在监听器A里的最后面。

代码简化结构(方法调用图) :

	类 extends JFrame{}
		 主函数{
		 	new 本类对象;
	   	 } 
		 构造函数{
		 	添加组件();
		 	添加监听器();
		 }	 
		 添加组件(){
		 	JPanel添加到JFrame中;
			四个按钮一个JLabel添加到一个JPanel中;
		 }
		 添加监听器(){
		 	1.“主武器及子弹数”监听器({
		 		逻辑设计();
			})
		 	2.“副武器及子弹数”监听器({
				逻辑设计();
			});
		  	3.“W”监听器;
		 	4.“A”监听器;	
		 }
		 逻辑设计(){
		 	 主武器顺序();
		 }
		 主武器顺序(){}
	 }

(五)代码

package game;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;

@SuppressWarnings("serial")
public class Lol_LogicOfApheliosWeapon extends JFrame {
   
	private final String tb = "通碧"; // 通碧(步枪):长距离射击,能够标记目标来跟进一次长距离攻击。
	private final String dp = "断魄"; // 断魄(短镰枪):在快速奔跑的同时用两把武器攻击附近的敌人。
	private final String zm = "坠明"; // 坠明(加农炮):禁锢被这把武器减速的所有敌人。
	private final String yy = "荧焰"; // 荧焰(喷火器):引爆锥形范围内的敌人并用你的副手武器攻击他们。
	private final String zj = "折镜"; // 折镜(环刃):部署一个装备着你副手武器的驻灵。
	private JDialog dialog,dialog1,dialog2;
	private JButton btn_SecondaryWeapon,btn_MainWeapon,btn_ChangeWeapon,btn_A;
	private JLabel label_GameName;
	//     	   mainWeapon: 主武器
    //	  secondaryWeapon: 副武器
	private String mainWeapon = tb,secondaryWeapon = dp;
	/*	 	mainBulletNum: 主武器子弹数
	 * secondaryBulletNum: 副武器子弹数
	 *	 				n: 在方法mainWeaponOrder()中做主武器循环的条件变量 
	 *   round1 和 round2: 这两个变量在第一轮中为 round++和round1++,
	 *  				  目的是为了在第一轮主武器循环中让主武器不等于 断魄,而是坠明(因为 n = 2),
	 * 					  而第二轮及以后中,主武器能够等于“断魄”。*/
	private int mainBulletNum 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值