英雄和怪兽互打
英雄pk怪物用面向对象的方式编写一个小游戏,实现如下功能:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于0时游戏结束。
游戏输出结果如下所示:
小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。 可以看出来,张三很垃圾 永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾
哈哈哈哈 这个程序大神可以帮帮忙吗 永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾
{:10_250:}
print('''小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。''') liuzhengyuan 发表于 2020-5-11 20:53
我怀疑你抄袭{:10_267:} 乘号 发表于 2020-5-11 20:53
我怀疑你抄袭
? liuzhengyuan 发表于 2020-5-11 20:54
?
https://fishc.com.cn/thread-168765-1-1.html 乘号 发表于 2020-5-11 20:54
https://fishc.com.cn/thread-168765-1-1.html
没有……
主要是楼主的题目描述就是输出这些东西……{:10_245:} a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗
你直接 while 循环 if 判断就好了 a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗
用 while 循环 if 判断(很简单的) 永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾
额,随机伤害,随机血量……
张三确实很lj{:10_256:}{:10_250:} import random as r
life_value1, life_value2 = r.randint(50,100), r.randint(50, 100)
while 1:
hit1, hit2 = r.randint(1, 30), r.randint(1, 30)
# 这里设置血量高于伤害,免得打一下就狗带
life_value2 -= hit1
print(f'小强被张三攻击,受到{hit1}点伤害,剩余{life_value2}点生命值')
# 以上张三攻击
if life_value1 <= 0:
print("张三胜利")
break
life_value1 -= hit2
print(f'小强被张三攻击,受到{hit2}点伤害,剩余{life_value1}点生命值')
if life_value2 <= 0:
print("小强胜利")
break
if life_value1 and life_value2:
continue
附上测试:
_2_ 发表于 2020-5-11 21:34
附上测试:
果然还是小强厉害啊{:10_256:}
@永恒的蓝色梦想 本帖最后由 liuzhengyuan 于 2020-5-11 21:49 编辑
_2_ 发表于 2020-5-11 21:34
附上测试:
TA要求用面向对象的方式来写{:10_250:}
class battle():
def out(self):
return '''小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。'''
c = battle()
print(c.out()) 我真的是闲的蛋疼............
添加的闪避效果 哈哈
from random import randint,random
class Hero:
def __init__(self,under_atk=0): # 初始化英雄数据
self.life_value = 100 # 初始化生命值
self.atkmin = 5 # 初始化最小攻击力
self.atkmax = 13 # 初始化最大攻击力
self.dodge = 0.4 # 初始化闪避率
self.under_atk = under_atk # 受到的伤害
def action_attack(self):# 定义攻击动作
judge_dodge = random()# 判断攻击是否miss
if judge_dodge < self.dodge:
return '闪避'
self.actual_atk = randint(self.atkmin,self.atkmax)
return self.actual_atk
class Monster:
def __init__(self,under_atk=0): # 初始化英雄数据
self.life_value = 60# 初始化生命值
self.atkmin = 18 # 初始化最小攻击力
self.atkmax = 26 # 初始化最大攻击力
self.dodge = 0.1 # 初始化闪避率
self.under_atk = under_atk # 受到的伤害
def action_attack(self):# 定义攻击动作
judge_dodge = random()# 判断攻击是否miss
if judge_dodge < self.dodge:
return '闪避'
self.actual_atk = randint(self.atkmin,self.atkmax)
return self.actual_atk
if __name__ == '__main__':
H = Hero()
M = Monster()
round = 0
while M.life_value > 0 and H.life_value > 0:
round += 1
print(f'第{round}回合,轮到张三攻击!')
try:
hero_atk = H.action_attack()
M.life_value -= hero_atk
print(f'小强你被张三攻击,受到了{hero_atk}点伤害!还剩{M.life_value}滴血。')
except TypeError:
print('张三的攻击落空,小强不削的瞟了一眼')
print('-' * 60)
round += 1
print(f'第{round}回合,轮到小强攻击!')
try:
monster_atk = M.action_attack()
H.life_value -= M.action_attack()
print(f'小强你被张三攻击,受到了{monster_atk}点伤害!还剩{H.life_value}滴血。')
except TypeError:
print('小强的攻击落空,使张三感到自信倍增!')
print('-' * 60)
if H.life_value <= 0 :
print('张三你被杀死了!胜败乃兵家常事 请重新来过。')
elif M.life_value <= 0 :
print('小强你被杀死了!胜败乃兵家常事 请重新来过。') _2_ 发表于 2020-5-11 21:35
果然还是小强厉害啊
@永恒的蓝色梦想
看我的哈哈哈 Twilight6 发表于 2020-5-11 22:13
看我的哈哈哈
我直接粗暴地 hit1 & hit2{:10_256:} 永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾
老哥你戳中我笑点了哈哈哈哈哈
页:
[1]