Java写的main方法小游戏

这篇博客分享了一位初学者使用Java编写的一个小型角色扮演游戏。游戏中,玩家可以选择战士、法师或刺客职业,与怪物战斗,怪物会有随机躲避攻击的能力。玩家还可以通过加点提升角色属性。游戏包含简单的战斗系统和剧情设定,展现了Java用于游戏开发的可能性。
摘要由CSDN通过智能技术生成

这是去年闲暇时间写的一段代码,那时刚接触java,就想写一个小游戏玩玩,在网上搜索时,大部份人都说java不能写游戏,占内存什么的。不说了上代码

英雄人物类:

public class Person {
    private String name;
    private int HP;
    private int DC;
    private int AC;
    private int Grade=0;
    private int gn;
    private String otk;

    public int getGn() {
        return gn;
    }

    public void setGn(int gn) {
        this.gn = gn;
    }

    public int getGrade() {
        return Grade;
    }

    public void setGrade(int grade) {
        Grade = grade;
    }

    public Person(String name, int HP, int DC, int AC) {
        this.name = name;
        this.HP = HP;
        this.DC = DC;
        this.AC = AC;
    }

    @Override
    public String toString() {
        return name+"血量:"+HP+",攻击:"+DC+",防御:"+AC+",终极技能:"+otk;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHP() {
        return HP;
    }

    public void setHP(int HP) {
        this.HP = HP;
    }

    public int getDC() {
        return DC;
    }

    public void setDC(int DC) {
        this.DC = DC;
    }

    public int getAC() {
        return AC;
    }

    public void setAC(int AC) {
        this.AC = AC;
    }

    public String getOtk() {
        return otk;
    }

    public void setOtk(String otk) {
        this.otk = otk;
    }

    public Person(String name, int HP, int DC, int AC, String otk) {
        this.name = name;
        this.HP = HP;
        this.DC = DC;
        this.AC = AC;
        this.otk = otk;
    }

    public Person() {
    }
}

启动游戏类:


import java.util.Random;
import java.util.Scanner;

public class s1 {
    //终极技能伤害
    //战士
    static int zs=50;
    //法师
    static int fs=80;
    //刺客
    static int ck=70;
    //随机0-99之间
    static int rand=100;
    //鱼人怪物
    static Person yr=new Person("鱼人",250,40,20,"");
    public static void main(String[] args) throws InterruptedException {
        String str1="欢迎进入异世界,世界之大需要你来开启你的旅程请选择职业:";

        for (int i = 0; i < str1.length(); i++) {
            Thread.sleep(100);
            System.out.print(str1.charAt(i));
        }
        System.out.println();
        System.out.println("1.战士,2.法师,3.刺客");
        //选人界面
        Person o=null;
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        if(s.equals("1")){
            o = new Person("战士", 100, 30, 30, "狂怒");
            o.setGn(50);
        }
        if(s.equals("2")){
            o = new Person("法师", 100, 21, 30, "朔风");
            o.setGn(fs);

        }
        if(s.equals("3")){
            o = new Person("刺客", 100, 50, 10, "背刺");
            o.setGn(70);
            o.setGrade(1);
        }
        System.out.println(o);
        //打怪方法
        run1(o,yr);
        String str="进入主城回复hp";
        //血量>0过关否则游戏结束
        if(o.getHP()>0){
            System.out.println("恭喜过关");

        }else {
            System.out.println("游戏结束");
            return;
        }
        for (int i = 0; i < str.length(); i++) {
            Thread.sleep(300);
            System.out.print(str.charAt(i));
        }
        System.out.println();
        o.setHP(100);

        String str2="老者:拯救异世界的任务就交给你了,你从万千从中脱颖而出的英雄,人民百姓正在被魔龙窟的魔兽追杀,刚刚的鱼人就是魔龙窟的人," +
                "\r\n希望你能帮助我们拯救这里的百姓,现在你有点数加成点数越高战力越高";
        for (int i = 0; i < str2.length(); i++) {
            Thread.sleep(100);
            System.out.print(str2.charAt(i));
        }
        //技能加点
        System.out.println();
        //技能加点方法
        jia(o,10);
        //第二关
        System.out.println("魔龙窟在提格森林,异常危险。是否进入:1:是,2:否");
        int i = sc.nextInt();
        if(i==1){
            System.out.println("勇士交给你了。");
        }else {
            System.out.println("老者默默离开说道:看来是看错人了");
            System.out.println("游戏结束");
            return;
        }
        System.out.println("进入森林你发现森林中有两条路可以选,一条路路上湿漉漉,另外一条树木普遍高大请选择:1.湿漉漉,2:高树木");
        int x = sc.nextInt();
        //两种选择,遇见两种不同怪物
        if(x==1){
            System.out.println("路上很湿,杂草时不时有物穿过");
            String strm="糟了,遇上鱼人守卫,这可比刚刚的鱼人大太多了";
            for (int i1 = 0; i1 < strm.length(); i1++) {
                Thread.sleep(100);
                System.out.print(strm.charAt(i));
            }
            System.out.println();
            Person py1 = new Person("鱼人守卫", 400, 40, 10);
            run1(o,py1);
        }else if(x==2){
            System.out.println("高大的树之上蝙蝠众多,突然眼前一群蝙蝠飞过将你盖住,感觉身体被什么咬了一口。");
            System.out.println("血蝠挡在你面前准备应战");
            Person py1 = new Person("血蝠", 270, 60, 10);
            run1(o,py1);
        }

    }

    /**
     * 技能加点
     * @param p 人物
     * @param count 点数
     */
    public static void jia(Person p,int count){
        //输入加点
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请选择要加的技能点数:1.血量,2.防御,3.攻击,4.终极技能。5.加一点命中率,总共点数:" + count);
            int c = sc.nextInt();
            if (c == 1) {
                System.out.println("血量加几个点数:");
                int i = sc.nextInt();
                if (i > count) {
                    System.out.println("点数不够请重试");
                } else {
                    p.setHP(p.getHP() + i);
                    count = count - i;
                }
            }
            if (c == 2) {
                System.out.println("防御加几个点数:");
                int i = sc.nextInt();
                if (i > count) {
                    System.out.println("点数不够请重试");
                } else {
                    p.setAC(p.getAC() + i);
                    count = count - i;
                }
            }
            if (c == 3) {
                System.out.println("攻击加几个点数:");
                int i = sc.nextInt();
                if (i > count) {
                    System.out.println("点数不够请重试");
                } else {
                    p.setDC(p.getDC() + i);
                    count = count - i;
                }
            }
            if(c==4){
                System.out.println("终极技能加几个点数:");
                int i = sc.nextInt();
                if (i > count) {
                    System.out.println("点数不够请重试");
                } else {
                    p.setGn(p.getGn() + i);
                    count = count - i;
                }
            }
            if(count==1){
                System.out.println("是否加1点命中率");
                if(c==5){
                    int i = sc.nextInt();
                    if(i==1){
                        p.setGrade(p.getGrade()+1);
                    }else {
                        continue;
                    }
                }
            }
            if (count == 0) {
                System.out.println("点数赋值完毕");
                System.out.println(p);
                return;
            }
        }
    }

    /**
     *
     * @param p 人物
     * @param p1 怪物
     * @throws InterruptedException
     */
    public static void run1(Person p,Person p1) throws InterruptedException {
        Scanner sc = new Scanner(System.in);
        String str = "遇上"+p1.getName()+"准备应战";
        for (int i = 0; i < str.length(); i++) {
            Thread.sleep(300);
            System.out.print(str.charAt(i));
        }
        System.out.println(p1);
        Random r = new Random();

        pk(p, p1, sc, r);
        return;
    }

    /**
     *
     * @param p 人物
     * @param p1 怪物
     * @param sc 控制台录入
     * @param r 随机怪物攻击或躲避
     */
    public static void pk(Person p, Person p1, Scanner sc, Random r) {
        int count=0;
        while (true) {
            System.out.println("发起进攻:1:进攻,2:闪躲,3:终极技能");
            int i1 = r.nextInt(rand)+1-p.getGrade() ;
            if(count>=5){
                System.out.println("终极技能准备就绪是否发动");
            }
            int i = sc.nextInt();
            if(i==3&&count>=5){
                System.out.println(p.getName()+"发起终极技能:"+p.getOtk());
                if(i1>=95){
                    System.out.println(p1.getName()+"闪躲");
                    count--;
                }else {
                    p1.setHP(p1.getHP() + p1.getAC() - p.getGn());
                }
                System.out.println(p.getName()+"血量:"+p.getHP()+","+p1.getName()+"血量:"+p1.getHP());
                count=0;
            }else if(i==3&&count<5){
                System.out.println("终极技能未准备就绪");
            }
            if(i==1){
                count++;
                if(i1>90){
                    System.out.println("鱼人闪躲");
                    count--;
                }
                if(i1>=70&&i1<=90){
                    System.out.println(p.getName()+"发起进攻,"+p1.getName()+"发起进攻");
                    p.setHP(p.getHP()+p.getAC()-p1.getDC());
                    p1.setHP(p1.getHP()+p1.getAC()-p.getDC());
                    System.out.println(p.getName()+"血量:"+p.getHP()+","+p1.getName()+"血量:"+p1.getHP());
                }
                if(i1<=50){
                    System.out.println(p.getName()+"发起进攻");
                    p1.setHP(p1.getHP()+p1.getAC()-p.getDC());
                    System.out.println(p.getName()+"血量:"+p.getHP()+","+p1.getName()+"血量:"+p1.getHP());
                }
                if(i1>50&&i1<70){
                    System.out.println(p1.getName()+"发起进攻");
                    p.setHP(p.getHP()+p.getAC()-p1.getDC());
                    System.out.println(p.getName()+"血量:"+p.getHP()+","+p1.getName()+"血量:"+p1.getHP());
                }
            }
            if(i==2){

                if(i1>=70){
                    System.out.println("闪躲失败");
                    System.out.println(p1.getName()+"发起进攻");
                    p.setHP(p.getHP()+p.getAC()-p1.getDC());
                    System.out.println(p.getName()+"血量:"+p.getHP()+","+p1.getName()+"血量:"+p1.getHP());
                }else {
                    System.out.println("闪躲成功");
                    count++;
                }

            }

            if (p.getHP() < 1) {
                System.out.println("对战失败");
                return;
            }
            if (p1.getHP() < 1) {
                System.out.println("战斗胜利");
                return;
            }
        }
    }
}

我这游戏有个很有意思的点,就是怪物会随机在你发动进攻的时候躲闪,还有就是在你攻击时还可以还击你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值