塔防游戏代码实现原理_塔防游戏源码
塔防游戏代码实现原理是一个值得探讨的话题,它涉及到许多方面的知识和技能。我将尽力为您解答相关问题。
1.??????Ϸ????ʵ??ԭ??
??????Ϸ????ʵ??ԭ??
package?com.lxi;
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;
}
}
}
如下1、Python猜拳小游戏代码:
2、import random #导入随机模块
3、
4、num = 1
5、yin_num = 0
6、shu_num = 0
7、while num ?2:
12、 print('不能出大于2的值')
13、 else:
14、 data = ['石头', '剪刀', '布']
15、 com = random.randint(0, 2)
16、 print(您出的是{},电脑出的是{}.format(data[user], data[com]))
17、 if user == com:
18、 print('平局')
19、 continue
20、 elif (user == 0 and com == 1) or (user == 1 and com == 2) or (user == 2 and com == 0):
21、 print('你赢了')
22、 yin_num += 1
23、 else:
24、 print('你输了')
25、 shu_num += 1
26、 num += 1
27、Python数字炸弹小游戏代码:
28、import random
29、import time
30、
31、bomb = random.randint(1, 99)
32、print(bomb)
33、start = 0
34、end = 99
35、while 1 == 1:
36、
37、 people = int(input('请输入{}到{}之间的数:'.format(start, end)))
38、 if people > bomb:
39、 print('大了')
40、 end = people
41、 elif people < bomb:
42、 print('小了')
43、 start = people
44、 else:
45、 print('BOOM!!!')
46、 break
47、 print('等待电脑了输入{}到{}之间的数:'.format(start, end))
48、 time.sleep(1)
49、 com = random.randint(start + 1, end - 1)
50、 print('电脑输入:{}'.format(com))
51、 if com > bomb:
52、 print('大了')
53、 end = com
54、 elif com < bomb:
55、 print('小了')
56、 start = com
非常高兴能与大家分享这些有关“塔防游戏代码实现原理”的信息。在今天的讨论中,我希望能帮助大家更全面地了解这个主题。感谢大家的参与和聆听,希望这些信息能对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。