楼主杭州校区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不在话下!
|
|