import java.io.BufferedReader
import java.io.InputStreamReader
public class Rpg {
@SuppressWarnings("unchecked")
public static void main(String[] args) 培弊throws Exception {
System.out.println("在这里输入两个人物进行PK,以英文逗号分隔: [BM,DH,MK]")
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
Class<Person> c1
Class<Person> c2
try {
String temp = br.readLine()
String[] str = temp.split(",")
if (str.length != 2) {
throw new Exception("输入格式有误,按默认PK")
}
c1 = (Class<Person>) Class.forName("com.lxi."
+ str[0].toUpperCase())
c2 = (Class<Person>) Class.forName("com.lxi."
+ str[1].toUpperCase())
} catch (Exception e) {
// TODO Auto-generated catch block
c1 = 乎物(Class<Person>) Class.forName("com.lxi.BM")
c2 = (Class<Person>) Class.forName("com.lxi.DH")
}
try {
Person p1 = c1.newInstance()
Person p2 = c2.newInstance()
long time = System.currentTimeMillis()
long nextTime1 = (long) (time + p1.coldTime*1000) //
long nextTime2 = (long) (time + p2.coldTime*1000) //发动攻击的时间
System.out.println("---游戏开始---")
while (true) {
long currenTime = System.currentTimeMillis()
if (nextTime1 < currenTime) { //时间到则发动攻击
p1.hit(p2)
nextTime1 += p1.coldTime*1000 + p1.waitTime*1000 //下次攻击时间=冷却时间+被晕眩时间
p1.waitTime = 0 //回合结束,重置被晕眩时间为0
}
if (nextTime2 < currenTime) {
p2.hit(p1)
nextTime2 += p2.coldTime*1000 + p2.waitTime*1000
p2.waitTime = 0
}
}
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (Exception e) {
岁中液 e.printStackTrace()
}
}
} package com.lxi
import java.util.Random
class BM extends Person {
public BM() {
val = 650
coldTime = 1.5
fight = 40
chanceHit = 3
chanceDefense = 3
waitTime = 0
}
int count = 0 //防御技能发动的次数
int temp = 40 //攻击力,值同fight
boolean hitFlag = false
boolean defenseFlag = false
Random rand = new Random()
public void hit(Person p) {
if (rand.nextInt(10) < chanceHit) {
fight = fight * 2 //发动双倍攻击
hitFlag = true
}
int hurt = p.defense(this)
p.val = p.val - hurt
fight = temp //还原为单倍攻击
if (p.val <= 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!")
System.exit(0)
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val)
hitFlag = false
defenseFlag = false
}
public int defense(Person p) {
if (rand.nextInt(10) < chanceDefense) {
if (count != 0) {
p.val = p.val - p.fight
count++
defenseFlag = true
if (p.val <= 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!")
System.exit(0)
}
}
}
return p.fight
}
}
class MK extends Person {
public MK() {
val = 700
coldTime = 2.5
fight = 50
chanceDefense = 6
chanceHit = 3
waitTime = 0
}
boolean hitFlag = false
boolean defenseFlag = false
Random rand = new Random()
public void hit(Person p) {
if (rand.nextInt(10) < chanceHit) {
p.waitTime = 3 //使对方晕眩3s
hitFlag = true
}
int hurt = p.defense(this)
p.val = p.val - hurt
if (p.val <= 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!")
System.exit(0)
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val)
hitFlag = false
defenseFlag = false
}
public int defense(Person p) {
if (rand.nextInt(10) < chanceDefense) {
defenseFlag = true
return p.fight / 2 //防御技能发动,伤害减半
}
return p.fight
}
} package com.lxi
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.Random
//三个人物的基类
abstract class Person {
int val //生命值
double coldTime //冷却时间
int waitTime //晕眩时间
int fight //攻击力
int chanceHit //发起主动技能的概率
int chanceDefense //发起防御技能的概率
abstract void hit(Person p) //攻击技能
abstract int defense(Person p) //防御技能,返回被伤害点数
}
class DH extends Person {
public DH() {
val = 600
coldTime = 1.0
fight = 30
chanceHit = 3 //表示30%的概率
chanceDefense = 3
waitTime = 0
}
Random rand = new Random()
boolean hitFlag = false //主动技能发动的标识
boolean defenseFlag = false //防御技能发动的标识
public void hit(Person p) {
if (rand.nextInt(10) < chanceHit) { //发动主动技能
int hurt = p.defense(this)
p.val = p.val - hurt
if (p.val <= 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!")
System.exit(0)
}
val = val + hurt
if (val > 600)
val = 600
hitFlag = true //标记主动技能已经发动
} else { //进行普通攻击
int hurt = p.defense(this)
p.val = p.val - hurt
if (p.val <= 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!")
System.exit(0)
}
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val)
hitFlag = false //
defenseFlag = false //重置标记,下次重用
}
public int defense(Person p) {
if (rand.nextInt(10) < chanceDefense) {
defenseFlag = true //标记防御技能已经发动
return 0
} else {
return p.fight
}
}
}
你说袭滑的是《魔塔》好玩强烈推荐:《植物大战僵尸》
【最经典的 益智游戏 创意游戏 独立游戏 合集】以下90%的游戏我都玩过!
《植物大战僵尸》《aquaria》《怪怪水族箱》《机械迷城》《明朗》
《粘粘世界》《放牧幽浮》《时空幻境》《三位一体》《蓝莓花园》
《音乐方块》《重力世界》《几何战争》《防御阵型:觉醒》《伊特》
《蜡笔物理学》《疯狂机器》《橡胶小子疯狂历险记》《线条滑雪2》
《伊特》《小熊回家》《表层指挥》《平衡球》《拍搭腊置换魔球》《眩晕球》
《我是一颗小枝困水珠》《疯狂机器1、2、3》《律动舞者》《幻幻球》
《幻幻球之夜》《魔法水滴》《天才教授》《整蛊邻居1、2》
《真菌世界》《无厘头太空战》
【解谜类】
《幽灵庄园的秘密2》《失落文明-玛雅公主》
以上游戏我都是在verycd上下载的
幻想游戏网上的经典游戏更多!不一一举例了!
《祖玛》等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)