期末作业3

在上次我们制作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();
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值