这是去年闲暇时间写的一段代码,那时刚接触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;
}
}
}
}
我这游戏有个很有意思的点,就是怪物会随机在你发动进攻的时候躲闪,还有就是在你攻击时还可以还击你。