基于Java文本的游戏-如何实现类选择功能?
我正在尝试用java制作一个角色扮演游戏。 我是java新手,所以我不懂所有的东西。 我需要帮助来实现类选择功能 这是我的密码:基于Java文本的游戏-如何实现类选择功能?,java,text-based,Java,Text Based,我正在尝试用java制作一个角色扮演游戏。 我是java新手,所以我不懂所有的东西。 我需要帮助来实现类选择功能 这是我的密码: package com.rpg.entities; import java.util.Scanner; public class Character extends Entity { private int EXP; // experience points private int gold; // player money privat
package com.rpg.entities;
import java.util.Scanner;
public class Character extends Entity {
private int EXP; // experience points
private int gold; // player money
private double critChance; // critical chance
private int strength; // attack damage
private int defense; // reduce taken damage
private int dexterity; // accuracy only for bow and spells
private int intelligence; // spell damage
private int evasion; // dodge attacks
// armor parts
private String helmet;
private String chest;
private String boots;
public void setEXP(int exp) {
this.EXP = exp;
}
public int getEXP() {
return EXP;
}
public void setGold(int gold) {
this.gold = gold;
}
public int getGold() {
return gold;
}
public void setCritChance(int crit) {
this.critChance = crit;
}
public double getCritChance() {
return critChance;
}
public void setStrength(int str) {
this.strength = str;
}
public int getStrength() {
return strength;
}
public void setDefense(int def) {
this.defense = def;
}
public int getDefense() {
return defense;
}
public void setDexterity(int dex) {
this.dexterity = dex;
}
public int getDexterity() {
return dexterity;
}
public void setIntelligence(int inte) {
this.intelligence = inte;
}
public int getIntelligence() {
return intelligence;
}
public void setEvasion(int eva) {
this.evasion = eva;
}
public int getEvasion() {
return evasion;
}
public void checkLevel(int playerExp, int playerLevel, Character a) {
int[] levelArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000, 2200,
2400, 2600, 2800, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000 }; // 30
if (playerExp >= levelArray[playerLevel]) {
// level up player
if (playerExp >= levelArray[playerLevel + 1]) {
a.setEXP(levelArray[playerLevel]);
} else {
System.out.println("Level up!");
a.setLevel(playerLevel + 1);
}
}
}
public String chooseClass() {
return "";
}
}
我想写一个在角色类中选择玩家类的方法,然后
在main函数中调用它,但我不确定这是否是好的做法。而且,
我不知道它应该返回字符串吗
换句话说,类字符应该有方法chooseClass(),您可以使用它选择类,例如:
If(name == "warrior") {
Warrior player = new Warrior();
} else if (name == "mage") {
Mage player = new Mage();
} else
System.out.println("Invalid class");
If(name == "warrior") {
Warrior player = new Warrior();
} else if (name == "mage") {
Mage player = new Mage();
} else
System.out.println("Invalid class");
然后将player返回到主类,这样我就可以使用这个变量了
用于执行以下操作:player.setHealth()等
更多课程:
package com.rpg.classes;
import com.rpg.entities.Character;
public class Archer extends Character {
public Archer() {
this.setMaxHP(100);
this.setHP(100);
this.setMaxMP(100);
this.setMP(100);
this.setLevel(1);
this.setDamage(10); //
this.setGold(0);
this.setCritChance(0);
this.setStrength(0);
this.setDefense(0);
this.setDexterity(10);
this.setIntelligence(0);
this.setEvasion(0);
this.setEXP(100);
}
}
package com.rpg.classes;
import com.rpg.entities.Character;
public class Mage extends Character {
public Mage() {
this.setMaxHP(100);
this.setHP(100);
this.setMaxMP(100);
this.setMP(100);
this.setLevel(1);
this.setDamage(10); // popravi posle
this.setGold(0);
this.setCritChance(0); // dodaj mehanizam
this.setStrength(0);
this.setDefense(0);
this.setDexterity(0);
this.setIntelligence(10);
this.setEvasion(0);
this.setEXP(100);
}
}
不知道你需要什么。但在main方法中,您可以通过某种方式从用户检索所需的字符类型。为了这个,我假设是法师。因此,如果它是一个法师将与法师初始化,等等
Character character;
String char_type = "Mage";
switch(char_type){
case "Mage":
character = new Mage();
break;
case "Archer":
character = new Archer();
break;
}
我希望这能帮助你或给你一些想法
编辑:由于某种原因,我没能阅读你所有的描述
我想写一个在角色中选择玩家类的方法
类,然后在主函数中调用它,但我不确定这是否正确
良好做法。还有,我不知道它是否应该返回字符串
换句话说,类字符应该有方法chooseClass()和
使用它,您可以选择类,例如:
If(name == "warrior") {
Warrior player = new Warrior();
} else if (name == "mage") {
Mage player = new Mage();
} else
System.out.println("Invalid class");
If(name == "warrior") {
Warrior player = new Warrior();
} else if (name == "mage") {
Mage player = new Mage();
} else
System.out.println("Invalid class");
然后将player返回到主类,这样我就可以使用该变量
做一些事情,比如:player.setHealth()等
那么在你的主要方法中,你会有这样的东西
public static void main(String[] args){
Character player = Character.chooseClass();
player.setHealth(100);
}
对我来说,看起来所有角色类都具有相同的属性和相同的行为,具有不同的初始值 我会考虑一个表示类的枚举和一个按类创建字符的工厂。工厂可以从单例映射中克隆一些原型,从JSON等资源进行反序列化,或者使用一些自定义代码进行初始化 自定义代码初始化通常会创建角色,设置普通属性(如level和gold),并可能按类覆盖开关中的特殊属性 我知道这不是最佳的OO实践,但它会使代码保持简单,并将“丑陋”隐藏在工厂中。如果您想在以后更改更多属性时进行更复杂的升级,它将保持灵活性
您应该使类枚举属性为最终的,并考虑使某些SET非公共的,特别是针对类特定属性,以确保一致的字符实例。 考虑将属性更改责任放在何处。在角色内部或外部,可能在工厂从上面。由于你的角色现在看起来更像一个POJO,我会避免在那里加入太多的逻辑,最终导致混合类型
因为我不知道你们的目标是什么,所以我只能给出一些想法和想法。没有唯一的方法,这取决于。具体帮助什么?这太宽泛了,您甚至还没有给出“类选择功能”应该包括什么的规范。我无法确切理解您想要什么,但您可以使用switch/case和return String,这取决于用户选择。我想在类字符中有一个方法,如果用户选择选项1,它将选择Warriro类并创建warrior类的实例,然后将其返回到main,这样我就可以使用它了谢谢!它起作用了。我将修改此代码,仅此而已。:)嘿,谢谢你的回答和意见。我的游戏还在早期阶段,我没有添加所有属性、技能等。。我想有一些基本的功能,然后我会添加更多的东西。我还是新手,所以我不知道Java的好部分,但我每天都在学习。。我正在编写这个游戏,这样我就可以练习我的知识,而这个游戏毫无意义。我喜欢rpg游戏,所以我选择在这种项目上练习。