A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

飞鸟sama

初级黑马

  • 黑马币:19

  • 帖子:11

  • 精华:0

         楼主杭州校区Java13期学员,0基础开始学习Java,目前上了9天课,所以基础知识掌握还很少。由于热爱游戏,所以在完成课业之余,有了运用所学知识去编写游戏的念头。从最简单的逻辑和代码开始,慢慢往游戏中添加新的编程方法和新的功能。
         以下是作品展示,由于技术有限,代码很简单,也可能会有很多逻辑漏洞,但是重要的不在于成品,而在于将学习和兴趣结合起来,提高学习积极性。


代码1:该代码是秦可同学的作品,给了我启发。
import java.util.Random;
import java.util.Scanner;

public class GameDemo01 {
        public static void main(String[] args) {
                Random life = new Random();
                Scanner sc = new Scanner(System.in);
                System.out.println("勇士,请告诉我你的名字:");
                String name = sc.nextLine();
                int lifeNum = life.nextInt(9000) + 1001;
                System.out.println("Boss的生命值为:" + lifeNum);
                while (true) {
                        System.out.println("请选择您要进行的攻击方式(1:物理攻击 2:魔法攻击):");
                        int attackType = sc.nextInt();                //
                        switch (attackType) {
                        case 1:
                                Random r1 = new Random();
                                int ad = r1.nextInt(2000)+1; //物理攻击伤害值(1~2000)
                                lifeNum -= ad;
                                System.out.println("你对BOSS造成了"+ad+"点"+"物理伤害");
                                break;
                        case 2:
                                Random r2 = new Random();
                                int ap = r2.nextInt(2000)+1001;//魔法攻击伤害值(1001~3000)
                                lifeNum -= ap;
                                System.out.println("你对BOSS造成了"+ap+"点"+"魔法伤害");
                                break;
                        default:
                                System.out.println("请确认您的攻击方式是否有误。");
                                break;
                        }
                        if(lifeNum>0) {
                                System.out.println("BOSS剩余生命值:"+lifeNum);
                        }else {
                                System.out.println(name+"阁下"+",你终结了BOSS。");
                                break;
                        }
                       
                }
        }

}






代码2:受了秦可同学的启发,在代码1的基础上添加了新的元素。


        1.0版本
*                 感谢秦可同学。
*                        
*         2.0版本
*                 boss也会攻击啦
*                 增加职业与技能:
*                         1 战士:物理攻击 和 致命一击
*                                 物理攻击:null
*                                 技能:30%概率释放,造成200%伤害
*                         2 法师:火焰冲击 和 炎爆
*                                 火焰冲击:null
*                                 技能:造成300%伤害,耗费魔法值
*                
*                 3 牧师:神圣惩击 和 快速治疗
*                                 神圣惩击:null
*                                 技能:治疗自己,血量增加,耗费魔法值
*/
import java.util.Random;
import java.util.Scanner;

public class BossGame02 {
        public static void main(String[] args) {
                Random life = new Random();
                Scanner sc = new Scanner(System.in);
                System.out.println("勇士,请告诉我你的名字:");
                String name = sc.nextLine();// 取名
                while (true) {
                        System.out.println(name + ",请选择您的职业(1:战士;2:法师;3 牧师):");
                        System.out.println("战士:普通攻击有30%概率暴击!");
                        System.out.println("法师:可以使用炎爆术!");
                        System.out.println("牧师:可以治疗自己!");
                        int job = sc.nextInt();
                        int lifeNum = 1;// 定义boss血量
                        int hp = 1;// 定义人物血量
                        int mp = 100;// 定义魔法值
                        switch (job) {
                        case 1:

                                System.out.println("您选择的职业为:一个威武的战士!开始战斗吧!");

                                lifeNum = life.nextInt(1000) + 9000;
                                hp = life.nextInt(1000) + 4000;
                                System.out.println("Boss的生命值为:" + lifeNum);
                                System.out.println("你的生命值为:" + hp);
                                while (true) {
                                        System.out.println("请选择您要进行的攻击方式(1:物理攻击 ):");
                                        int attackType = sc.nextInt();

                                        switch (attackType) {
                                        case 1:
                                                Random r1 = new Random();
                                                Random r2 = new Random();
                                                int ad = r1.nextInt(300) + 1000; // 物理攻击伤害值(1000~1299)
                                                int prob = r2.nextInt(101);// 定义概率变量,值为0~100
                                                if (prob >= 70) {
                                                        ad *= 2;
                                                        System.out.println("你的物理攻击暴击了!");
                                                }
                                                lifeNum -= ad;
                                                System.out.println("你对BOSS造成了" + ad + "点" + "物理伤害");
                                                break;
                                        default:
                                                System.out.println("你挥舞拳头对boss造成了0点伤害!");
                                                break;
                                        }
                                        /*
                                         * if (lifeNum <= 0) { break; }
                                         */
                                        Random r = new Random();
                                        int at = r.nextInt(150) + 500;
                                        System.out.println("boss对你造成了" + at + "伤害!");
                                        hp -= at;

                                        if (hp > 0) {
                                                System.out.println("您的血量是:" + hp);
                                        } else {
                                                break;
                                        }
                                        if (lifeNum > 0) {
                                                System.out.println("BOSS剩余生命值:" + lifeNum);
                                        } else {
                                                System.out.println(name + "阁下" + ",你终结了BOSS。");
                                                break;
                                        }

                                }
                                break;

                        // 战士

                        case 2:
                                System.out.println("您选择的职业为:一个睿智的法师!开始战斗吧!");
                                lifeNum = life.nextInt(1000) + 9000;

                                System.out.println("您的技能将耗费魔法值,满值为100,每回合回复10.");
                                System.out.println("Boss的生命值为:" + lifeNum);
                                hp = life.nextInt(1000) + 2000;
                                System.out.println("你的生命值为:" + hp);
                                while (true) {
                                        System.out.println("请选择您要进行的攻击方式(1:火焰冲击 2:炎爆):");
                                        int attackType = sc.nextInt();
                                        Random r1 = new Random();
                                        int ad;
                                        switch (attackType) {
                                        case 1:
                                                ad = r1.nextInt(300) + 1000; // 火焰冲击伤害值(1000~1299)
                                                lifeNum -= ad;
                                                System.out.println("您的火焰冲击对BOSS造成了" + ad + "点" + "伤害");
                                                break;
                                        case 2:
                                                if (mp >= 60) {
                                                        ad = r1.nextInt(300) + 1000;// 魔法攻击伤害基础值(1001~3000)
                                                        int ap = ad * 3;
                                                        lifeNum -= ap;
                                                        mp -= 60;
                                                        System.out.println("您的炎爆对BOSS造成了" + ap + "点" + "魔法伤害");
                                                        break;
                                                } else {
                                                        System.out.println("魔法值不够!");
                                                        break;
                                                }
                                        default:
                                                System.out.println("你挥舞拳头对boss造成了0点伤害!");
                                                break;
                                        }
                                        /*
                                         * if (lifeNum <= 0) { break; }
                                         */
                                        Random r = new Random();
                                        int at = r.nextInt(150) + 500;
                                        System.out.println("boss对你造成了" + at + "伤害!");
                                        hp -= at;

                                        if (hp > 0) {
                                                System.out.println("您的血量是:" + hp);
                                        } else {
                                                break;
                                        }
                                        if (lifeNum > 0) {
                                                System.out.println("BOSS剩余生命值:" + lifeNum);
                                                System.out.println("您的血量为:" + hp);
                                                System.out.println("魔法值剩余:" + mp);
                                                if(mp<100){
                                                        mp += 10;
                                                }
                                        } else {
                                                System.out.println(name + "阁下" + ",你终结了BOSS。");
                                                break;
                                        }

                                }
                                break;

                        // 法师

                        case 3:
                                System.out.println("您选择的职业为:一个仁慈的牧师!开始战斗吧!");
                                lifeNum = life.nextInt(1000) + 9000;
                                System.out.println("您的技能将耗费魔法值,满值为100,每回合回复10.");
                                System.out.println("Boss的生命值为:" + lifeNum);
                                hp = life.nextInt(1000) + 2000;
                                int hp1 = hp;
                                System.out.println("你的生命值为:" + hp);
                                while (true) {
                                        System.out.println("请选择您要进行的攻击方式(1:神圣惩击 2:快速治疗):");
                                        int attackType = sc.nextInt();
                                        Random r1 = new Random();
                                        int ad;
                                        switch (attackType) {
                                        case 1:
                                                ad = r1.nextInt(300) + 1200; // 神圣惩击伤害值(1000~1299)
                                                lifeNum -= ad;
                                                System.out.println("您的神圣惩击对BOSS造成了" + ad + "点" + "伤害");
                                                break;
                                        case 2:
                                                if(hp<hp1){
                                                if (mp >= 30) {
                                                        ad = r1.nextInt(300) + 1500;// 节能伤害基础值(1500~1799)
                                                        int ap = ad * 1;// 技能伤害数值
                                                        hp += ap;
                                                        mp -= 30;
                                                        System.out.println("您的快速治疗恢复了" + ap + "点" + "血量");
                                                        break;
                                                } else {
                                                        System.out.println("魔法值不够!");
                                                        break;
                                                }
                                                }else{
                                                        System.out.println("您的血量已满!");
                                                }
                                               
                                        default:
                                                System.out.println("你挥舞拳头对boss造成了0点伤害!");
                                                break;
                                        }
                                        /*
                                         * if (lifeNum <= 0) { break; }
                                         */
                                        Random r = new Random();
                                        int at = r.nextInt(150) + 500;
                                        System.out.println("boss对你造成了" + at + "伤害!");
                                        hp -= at;

                                        if (hp > 0) {
                                                System.out.println("您的血量是:" + hp);
                                        } else {
                                                break;
                                        }
                                        if (lifeNum > 0) {
                                                System.out.println("BOSS剩余生命值:" + lifeNum);
                                                System.out.println("您的血量为:" + hp);
                                                System.out.println("魔法值剩余:" + mp);
                                                if(mp<100){
                                                        mp += 10;
                                                }
                                        } else {
                                                System.out.println(name + "阁下" + ",你终结了BOSS。");
                                                break;
                                        }

                                }
                                break;

                        // 牧师

                        case 4:
                                System.out.println("恭喜你,您发现了隐藏职业!");
                                System.out.println("是否确认开始隐藏职业:1、确认;2、算了(请输入1.2)");
                                int c = sc.nextInt();

                                System.out.println("然而,隐藏职业正在开发中!");
                                break;

                        // 隐藏职业

                        default:
                                System.out.println("请选择正确的职业。");
                                break;

                        }

                        if (hp <= 0) {
                                System.out.println("游戏结束,你死了!");
                                break;
                        }
                        if (lifeNum <= 0) {
                                System.out.println("游戏结束");
                                break;
                        }
                }

        }

}







      最近几天由于新学的内容较难,空闲时间较少,最近几天学的内容还没有加入游戏程序中。准备下一步将战斗方法进行封装,继续在游戏中添加新的元素,比如武器,药品等。
      学习过程中,兴趣是最好的指导老师,游戏写的怎样并不重要,重要的这个过程,不仅可以把已经学过的内容复习一遍,还能在自己应用过程中对学过的知识点有新的理解,学以致用,用反馈学。如此,拿下Java不在话下!

1 个回复

倒序浏览
你总是那么厉害,有理由条的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马