鱼C论坛

 找回密码
 立即注册
查看: 1521|回复: 17

英雄和怪兽互打

[复制链接]
发表于 2020-5-11 20:49:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
英雄pk怪物
用面向对象的方式编写一个小游戏,实现如下功能:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于0时游戏结束。
游戏输出结果如下所示:
小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 20:51:06 | 显示全部楼层
可以看出来,张三很垃圾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:53:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

哈哈哈哈 这个程序大神可以帮帮忙吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:53:17 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

print('''小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。''')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:53:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:54:10 | 显示全部楼层

?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:54:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:56:04 | 显示全部楼层
乘号 发表于 2020-5-11 20:54
https://fishc.com.cn/thread-168765-1-1.html

没有……
主要是楼主的题目描述就是输出这些东西……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:56:45 | 显示全部楼层
a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

你直接 while 循环 if 判断就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:58:55 | 显示全部楼层
a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

用 while 循环 if 判断(很简单的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:10:41 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

额,随机伤害,随机血量……
张三确实很lj
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:34:17 From FishC Mobile | 显示全部楼层
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

附上测试:
Screenshot_20200511_213340_com.huawei.fastapp.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:35:43 From FishC Mobile | 显示全部楼层
_2_ 发表于 2020-5-11 21:34
附上测试:

果然还是小强厉害啊
@永恒的蓝色梦想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:47:40 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-11 21:49 编辑


TA要求用面向对象的方式来写
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())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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('小强你被杀死了!胜败乃兵家常事 请重新来过。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 22:13:47 | 显示全部楼层
_2_ 发表于 2020-5-11 21:35
果然还是小强厉害啊
@永恒的蓝色梦想

看我的哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 07:30:37 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-5-11 22:13
看我的哈哈哈

我直接粗暴地 hit1 & hit2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 07:37:09 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

老哥你戳中我笑点了哈哈哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 07:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表