a聪明叶 发表于 2020-5-11 20:49:30

英雄和怪兽互打

英雄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:06

可以看出来,张三很垃圾

a聪明叶 发表于 2020-5-11 20:53:02

永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

哈哈哈哈 这个程序大神可以帮帮忙吗

liuzhengyuan 发表于 2020-5-11 20:53:17

永恒的蓝色梦想 发表于 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滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。''')

乘号 发表于 2020-5-11 20:53:48

liuzhengyuan 发表于 2020-5-11 20:53


我怀疑你抄袭{:10_267:}

liuzhengyuan 发表于 2020-5-11 20:54:10

乘号 发表于 2020-5-11 20:53
我怀疑你抄袭

?

乘号 发表于 2020-5-11 20:54:32

liuzhengyuan 发表于 2020-5-11 20:54
?

https://fishc.com.cn/thread-168765-1-1.html

liuzhengyuan 发表于 2020-5-11 20:56:04

乘号 发表于 2020-5-11 20:54
https://fishc.com.cn/thread-168765-1-1.html

没有……
主要是楼主的题目描述就是输出这些东西……{:10_245:}

liuzhengyuan 发表于 2020-5-11 20:56:45

a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

你直接 while 循环 if 判断就好了

liuzhengyuan 发表于 2020-5-11 20:58:55

a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

用 while 循环 if 判断(很简单的)

_2_ 发表于 2020-5-11 21:10:41

永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

额,随机伤害,随机血量……
张三确实很lj{:10_256:}{:10_250:}

_2_ 发表于 2020-5-11 21:34:17

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:35:43

_2_ 发表于 2020-5-11 21:34
附上测试:

果然还是小强厉害啊{:10_256:}
@永恒的蓝色梦想

liuzhengyuan 发表于 2020-5-11 21:47:40

本帖最后由 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())

Twilight6 发表于 2020-5-11 22:12:17

我真的是闲的蛋疼............
添加的闪避效果 哈哈
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('小强你被杀死了!胜败乃兵家常事 请重新来过。')

Twilight6 发表于 2020-5-11 22:13:47

_2_ 发表于 2020-5-11 21:35
果然还是小强厉害啊
@永恒的蓝色梦想

看我的哈哈哈

_2_ 发表于 2020-5-12 07:30:37

Twilight6 发表于 2020-5-11 22:13
看我的哈哈哈

我直接粗暴地 hit1 & hit2{:10_256:}

Sweet丶 发表于 2020-5-12 07:37:09

永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

老哥你戳中我笑点了哈哈哈哈哈
页: [1]
查看完整版本: 英雄和怪兽互打