在上次我们制作Persond的各个子类,现在我们要做一个工具类来区分我们最后创建的对象。
import java.util.Scanner;
public class Game {
public void StarttheGame(){
int ai=1;//确认完成
String sex= String.valueOf(1);
int num=0,number=0;
while (ai==1){
Scanner sc=new Scanner(System.in);
System.out.print("请输入游戏名字");
String name= sc.nextLine();
while (ai==1) {
System.out.print("请选择你游戏角色的性别(0.男性,1.女性,2.不男不女):");
int number1 = sc.nextInt();
if (number1 == 0) {
sex = "男";
break;
} else if (number1 == 1) {
sex = "女";
break;
} else if (number1 == 2) {
sex = "不男不女";
break;
} else
System.out.print("请输入正确的序号");
}
System.out.print("“请选择你游戏角色的种族(0.人类,1.精灵,2.兽人,3.矮人,4.蜥蜴人)");
int number2 = sc.nextInt();
switch (number2){//选择职业
case 0: {
Person h = new Human(name, sex,0);//创建人类对象
h.Ability();
number=h.CarrerChoice();//调用子类的方法
OccupationalAttributes.zhiyesuxin();
// h.zhiyesuxin();
h.show();
fenpei.fempri();
// h.fempri();
num =0;
break;
}
case 1:{
Person f = new Elf(name, sex,1);//创建精灵对象
f.Ability();
number=f.CarrerChoice();//调用子类的方法
OccupationalAttributes.zhiyesuxin();
// f.zhiyesuxin();
f.show();
fenpei.fempri();
// f.fempri();
num =1;
break;
}
case 2:{
Person z= new Orcish(name, sex,2);//创建兽人对象
z.Ability();
number=z.CarrerChoice();//调用子类的方法
OccupationalAttributes.zhiyesuxin();
// z.zhiyesuxin();
z.show();
fenpei.fempri();
// z.fempri();
num =2;
break;
}
case 3:{
Person x = new Dwarf(name, sex,3);//创建矮人对象
x.Ability();
number=x.CarrerChoice();//调用子类的方法
OccupationalAttributes.zhiyesuxin();
// x.zhiyesuxin();
x.show();
fenpei.fempri();
// x.fempri();
num =3;
break;
}
case 4:{
Person t = new Lizardmen(name, sex,4);//创建蜥蜴人对象
t.Ability();
number=t.CarrerChoice();//调用子类的方法
OccupationalAttributes.zhiyesuxin();
// t.zhiyesuxin();
t.show();
fenpei.fempri();
// t.fempri();
num =4;
break;
}
default:
System.out.println("请输入正确的数字");
}
System.out.println("是否重新选择:0.不重新,1.重新");
ai = sc.nextInt();//判断是否结束while()循环
}
System.out.println("创建对象完毕");
}
}
现在我们实现了对一个人物对象的创建流程,但是我们要给予玩家更高的自由度,让玩家可以自己分配一些初始属性点数。
import java.util.Scanner;
public class fenpei extends Person{
public static int l=0;
public int number;
public static int i =10;
public static int g =0;
public fenpei(String name, String sex,int num) {
super(name, sex,num);
}
static Scanner sc=new Scanner(System.in);
public static void fempri(){
Person y = new fenpei(name, sex,num);
while (q==1){
System.out.println("请选择你要分配的属性0.力量,1.敏捷,2.感知,3.体力,4.智力,5.智慧");
int number10 = sc.nextInt();
switch (number10){
case 0:{System.out.println("请分配力量属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
power=power+number11;
i=i-number11;
break;
}
case 1:{System.out.println("请分配敏捷属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
agility =agility +number11;
i=i-number11;
break;
}
case 2:{System.out.println("请分配感知属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
perceive=perceive+number11;
i=i-number11;
break;
}
case 3:{System.out.println("请分配体力属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
physical =physical +number11;
i=i-number11;
break;
}
case 4:{System.out.println("请分配智力属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
wit=wit+number11;
i=i-number11;
break;
}
case 5:{System.out.println("请分配智慧属性,剩余属性点"+i);
int number11 =sc.nextInt();
if (number11>i){
System.out.println("请重新分配");
break;
}
wisdom =wisdom +number11;
i=i-number11;
break;
}
default:
System.out.println("请输入有效数字");
break;
}
y.show1();
if (i==0){q=0;}
}
}
public int CarrerChoice() {
return l;
}
public int Ability() {
return l;
}
这样就可以在创建对象的时候实现分配点数的功能,
我们在做一个启动类来启动这个程序
public class menu {
public static void main(String[] args) {
Game g = new Game();//建立工具类的对象
g.StarttheGame();
}
}