鱼C论坛

 找回密码
 立即注册
查看: 3756|回复: 7

[原创] 学习python 不到一个月 自编一个文字游戏,勇者大冒险

[复制链接]
发表于 2018-1-30 14:47:24 | 显示全部楼层 |阅读模式

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

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

x
import easygui as e
import random
生命 = 100
等级 = 1
经验 = 0
金钱 = 0
木材 = 0
石头 = 0
宝石 = 0
线 = 0
ATK = int(random.randint(5,15))
DEF = int(random.randint(5,10))
打怪 = '打怪'
武器店 = '武器店'
防具店 = '防具店'
冒险 = '冒险'
返回 = '返回'
挖矿 = '挖矿'
退出 = '退出'
背包 = '背包'
苹果数量 = 0
title = '勇者大冒险'

攻击 = '攻击'
逃跑 = '逃跑'
使用苹果 = '使用苹果'
继续攻击 = '继续攻击'

小刀 = '小刀'
长剑 = '长剑'
大砍刀 = '大砍刀'
巨剑 = '巨剑'
屠龙刀 = '屠龙刀'

买 = '买'
不买 = '不买'

砍伐大树 ='砍伐大树'
采石 = '采石'


小怪物_atk = 10
小怪物_def = 2
小怪物_life = 30


巨齿龙_atk = 20
巨齿龙_def = 10
巨齿龙_life = 80

def use_apple():
    global 苹果数量
    global 生命
    if 苹果数量 > 0:
        苹果数量 -= 1
        生命 += 10
        e.msgbox('你用掉一个苹果,现在生命为%d,还剩余%d个苹果' % (生命,苹果数量))
        fight_小河边()
    else:
        e.msgbox('你的苹果数量不足,请去打怪后获得')
        fight_小河边()

def use_apple10():
    global 苹果数量
    global 生命
    if 苹果数量 > 0:
        苹果数量 -= 1
        生命 += 10
        fight_小森林()
    else:
        e.msgbox('你的苹果数量不足,请去打怪后获得')
        fight_小森林()


def beibao():
    beibao_name =('''
                     木材有%d 个,
                     石头有%d 个,
                     宝石有%d 个,
                     苹果有%d 个,
                     攻击力 %d ,
                     防御力 %d ''' % (木材, 石头, 宝石, 苹果数量, ATK, DEF))
    beibao_val = []
    beibao_val = e.msgbox(beibao_name, title)
    主界面()

def fight():
    fight_msg = '请问你想去哪里冒险'
    小河边 = '小河边'
    小森林 = '小森林'
    雪山 = '雪山'
    where = e.buttonbox(fight_msg, title, choices = (小河边, 小森林, 雪山, 返回))
    if where == '小河边':
        fight_小河边()
    if where == '小森林':
        fight_小森林()
    if where == '雪山':
        fight_雪山()
    else:
        主界面()

def fight_小河边():
    小怪物_msg = '小怪物 攻击力 10, 防御力 2 , 生命 30'
    fight_小怪物 = e.buttonbox(小怪物_msg,title, choices = (攻击, 逃跑, 使用苹果, 返回))
    if fight_小怪物 == '攻击':
        gongji()
    if fight_小怪物 == '逃跑':
        e.msgbox('你已逃出来')
        fight()
    if fight_小怪物 == '返回':
        主界面()
    else:
        use_apple()

def 开始打怪10():
    巨齿龙_msg = '巨齿龙 攻击力 20, 防御力 10 , 生命 80'
    fight_巨齿龙 = e.buttonbox(巨齿龙_msg,title, chioices =(攻击, 逃跑, 使用苹果, 返回))
    if fight_巨齿龙 == '攻击':
        巨齿龙_gongji()
    if fight_巨齿龙 == '逃跑':
        e.msgbox('你已逃出来')
        fight()
    if fight_巨齿龙 == '返回':
        主界面()
    else:
        use_apple10()
   
   
   
def gongji():
    global 生命
    global 经验
    global 等级
    global 苹果数量
    damge = ATK - 小怪物_def
    小怪物_newlife = 小怪物_life - damge
    生命 = 生命 + (DEF - 小怪物_atk)
    if 生命 > 0:
        if 小怪物_newlife <= 0:
            苹果数量 += 1
            经验 += 20
            e.msgbox('恭喜你胜利了,获得一个苹果, 获得20点经验,当前苹果数为%d,当前经验为%d' % (苹果数量,经验))
            if 经验 >= 100:
                等级 += 1
                e.msgbox('恭喜你升级了等级-->%d' % 等级)
                经验 -= 100
            fight_小河边()
        elif 生命 < 0:
            e.msgbox('你已经死了,重新开始')
            生命 = 100
            主界面()
        else:
            while 小怪物_newlife > 0:
                e.msgbox('小怪物剩余血量%d, 你剩余生命%d' % (小怪物_newlife, 生命))
                小怪物_choices = e.buttonbox('小怪物还剩余%d的血' % 小怪物_newlife,title, choices = (继续攻击,使用苹果,逃跑))
                if 小怪物_choices == '继续攻击':
                    小怪物_newlife -= damge
                    e.msgbox('小怪物剩余血量%d, 你剩余生命%d' % (小怪物_newlife, 生命))
                    if 小怪物_newlife <= 0:
                        苹果数量 += 1
                        经验 += 20
                        e.msgbox('恭喜你胜利了,获得一个苹果, 获得20点经验,当前苹果数为%d,当前经验为%d' % (苹果数量,经验))
                        if 经验 >= 100:
                            等级 += 1
                            e.msgbox('恭喜你升级了等级-->%d' % 等级)
                            经验 -= 100
                            break
                    else:
                        continue
                elif 小怪物_choices == '使用苹果':
                    if 苹果数量 > 0:
                        生命 += 10
                        苹果数量 -= 1
                        return 苹果数量
                        return 生命
                        e.msgbox('现在生命为%d' % 生命)
                        continue
                    else:
                        e.msgbox('你的苹果数量不足,请去打怪后获得')
                        continue
                        
                else:
                    小怪物_choices == '逃跑'
                    e.msgbox('你已逃出来')
                    fight()
        fight_小河边()            
            
                                    
    else:
        e.msgbox('你已经死了,重新开始')
        生命 = 100
        主界面()
        
   
def 巨齿龙_gongji():
    global 生命
    global 经验
    global 等级
    global 苹果数量
    damge = ATK - 巨齿龙_def
    巨齿龙_newlife = 巨齿龙_life - damge
    生命 = 生命 + (DEF - 巨齿龙_atk)
    if 生命 > 0:
        if 巨齿龙_newlife <= 0:
            苹果数量 += 1
            经验 += 80
            e.msgbox('恭喜你胜利了,获得一个苹果, 获得80点经验,当前苹果数为%d,当前经验为%d' % (苹果数量,经验))
            if 经验 >= 100:
                等级 += 1
                e.msgbox('恭喜你升级了等级-->%d' % 等级)
                经验 -= 100
            fight_小森林()
        elif 生命 < 0:
            e.msgbox('你已经死了,重新开始')
            生命 = 100
            主界面()
        else:
            while 巨齿龙_newlife > 0:
                e.msgbox('巨齿龙剩余血量%d, 你剩余生命%d' % (巨齿龙_newlife, 生命))
                巨齿龙_choices = e.buttonbox('巨齿龙还剩余%d的血' % 巨齿龙_newlife,title, choices = (继续攻击,使用苹果,逃跑))
                if 巨齿龙_choices == '继续攻击':
                    巨齿龙_newlife -= damge
                    e.msgbox('巨齿龙剩余血量%d, 你剩余生命%d' % (巨齿龙_newlife, 生命))
                    if 巨齿龙_newlife <= 0:
                        苹果数量 += 1
                        经验 += 80
                        e.msgbox('恭喜你胜利了,获得一个苹果, 获得80点经验,当前苹果数为%d,当前经验为%d' % (苹果数量,经验))
                        if 经验 >= 100:
                            等级 += 1
                            e.msgbox('恭喜你升级了等级-->%d' % 等级)
                            经验 -= 100
                            break
                    else:
                        continue
                elif 巨齿龙_choices == '使用苹果':
                    生命 += 10
                    e.msgbox('现在生命为%d' % 生命)
                    continue
                else:
                    巨齿龙_choices == '逃跑'
                    e.msgbox('你已逃出来')
                    fight()
        fight_小森林()            
            
                                    
    else:
        e.msgbox('你已经死了,重新开始')
        生命 = 100
        主界面()


      

def fight_小森林():
    if 等级 <= 10:
        e.msgbox('你等级太低啦,建议到10级再来冒险吧')
        fight()
    else:
        开始打怪10()

def fight_雪山():
    if 等级 <= 40:
        e.msgbox('那里太危险了,建议40级以后再来吧')
        fight()
    else:
        e.msgbox('程序员还在开发中')
        主界面()

def xiaodao():
    global 木材
    global 石头
    global ATK
    e.msgbox('制作材料需要5个木材 和 5个石头,您现在拥有%d 个木材 和 %d个石头' %(木材,石头),title,)
    g = e.buttonbox('是否需要购买小刀 增加2点攻击力',title , choices = (买, 不买))
    if g == '买':
        if 木材 >=5 and 石头 >=5:
            木材 -= 5
            石头 -= 5
            ATK += 2
            e.msgbox('恭喜你购买成功,攻击力加2.目前攻击力为 %d, 剩余木材为%d, 剩余石头为%d' % (ATK, 木材, 石头),title)
            sword()
        else:
            e.msgbox('你拥有的材料不足,请去挖矿。 剩余木材为%d, 剩余石头为%d' % (木材, 石头),title)
            sword()
    if g == '不买':
        e.msgbox('我靠,客官你逗我呢。 不买赶紧走~~~~',title)
        sword()


def dakandao():
    global 木材
    global 石头
    global ATK
    e.msgbox('制作材料需要10个木材 和 10个石头,您现在拥有%d 个木材 和 %d个石头' %(木材,石头))
    g = e.buttonbox('是否需要购买大砍刀 增加5点攻击力',title , choices = (买, 不买))
    if g == '买':
        if 木材 >=10 and 石头 >=10:
            木材 -= 10
            石头 -= 10
            ATK += 5
            e.msgbox('恭喜你购买成功,攻击力加5.目前攻击力为 %d, 剩余木材为%d, 剩余石头为%d' % (ATK, 木材, 石头),title)
            sword()
        else:
            e.msgbox('你拥有的材料不足,请去挖矿。 剩余木材为%d, 剩余石头为%d' % (木材, 石头),title)
            sword()
    if g == '不买':
        e.msgbox('我靠,客官你逗我呢。 不买赶紧走~~~~',title)
        sword()            

def changjian():
    global 木材
    global 石头
    global ATK
    e.msgbox('制作材料需要20个木材 和 20个石头,您现在拥有%d 个木材 和 %d个石头' %(木材,石头))
    g = e.buttonbox('是否需要购买长剑 增加15点攻击力',title , choices = (买, 不买))
    if g == '买':
        if 木材 >=20 and 石头 >=20:
            木材 -= 20
            石头 -= 20
            ATK += 15
            e.msgbox('恭喜你购买成功,攻击力加15.目前攻击力为 %d, 剩余木材为%d, 剩余石头为%d' % (ATK, 木材, 石头),title)
            sword()
        else:
            e.msgbox('你拥有的材料不足,请去挖矿。 剩余木材为%d, 剩余石头为%d' % (木材, 石头),title)
            sword()
    if g == '不买':
        e.msgbox('我靠,客官你逗我呢。 不买赶紧走~~~~',title)
        sword()            


def jujian():
    global 木材
    global 石头
    global ATK
    e.msgbox('制作材料需要40个木材 和 40个石头,您现在拥有%d 个木材 和 %d个石头' %(木材,石头))
    g = e.buttonbox('是否需要购买巨剑 增加35点攻击力',title , choices = (买, 不买))
    if g == '买':
        if 木材 >=40 and 石头 >=40:
            木材 -= 40
            石头 -= 40
            ATK += 35
            e.msgbox('恭喜你购买成功,攻击力加35.目前攻击力为 %d, 剩余木材为%d, 剩余石头为%d' % (ATK, 木材, 石头),title)
            sword()
        else:
            e.msgbox('你拥有的材料不足,请去挖矿。 剩余木材为%d, 剩余石头为%d' % (木材, 石头),title)
            sword()
    if g == '不买':
        e.msgbox('我靠,客官你逗我呢。 不买赶紧走~~~~',title)
        sword()

def tulongdao():
    global 木材
    global 石头
    global ATK
    e.msgbox('制作材料需要60个木材 和 60个石头,您现在拥有%d 个木材 和 %d个石头' %(木材,石头))
    g = e.buttonbox('是否需要购买屠龙刀 增加135点攻击力',title , choices = (买, 不买))
    if g == '买':
        if 木材 >=60 and 石头 >=60:
            木材 -= 60
            石头 -= 60
            ATK += 135
            e.msgbox('恭喜你购买成功,攻击力加135.目前攻击力为 %d, 剩余木材为%d, 剩余石头为%d' % (ATK, 木材, 石头),title)
            sword()
        else:
            e.msgbox('你拥有的材料不足,请去挖矿。 剩余木材为%d, 剩余石头为%d' % (木材, 石头),title)
            sword()
    if g == '不买':
        e.msgbox('我靠,客官你逗我呢。 不买赶紧走~~~~',title)
        sword()     


def mucai():
    global 木材
    while True:
        g = e.buttonbox('欢迎来到伐木世界',title, choices= (砍伐大树,返回))
        if g == '砍伐大树':
            木材 += 2
            e.msgbox('恭喜获得2个木材 目前拥有 %d 个木材' % 木材 ,title)
            continue
        else:
            e.msgbox('欢迎下次光临,需要的时候再来吧',title)
            主界面()
        

def shitou():
    global 石头
    while True:
        g = e.buttonbox('欢迎来到石头世界',title, choices= (采石,返回))
        if g == '采石':
            石头 += 2
            e.msgbox('恭喜获得2个石头 目前拥有 %d 个石头' % 石头 ,title)
            continue
        else:
            e.msgbox('欢迎下次光临,需要的时候再来吧',title)
            主界面()
        
        
   

def sword():
    g = e.buttonbox('请选择你要购买的武器,可以增加攻击力哦^_^',title, choices = (小刀,大砍刀,长剑, 巨剑, 屠龙刀, 返回))
    if g == '小刀':
        xiaodao()
    if g == '大砍刀':
        dakandao()
    if g == '长剑':
        changjian()
    if g == '巨剑':
        jujian()
    if g == '屠龙刀':
        tulongdao()
    if g == '返回':
        主界面()
   
def wakuang():
    global 木材
    global 石头
    e.msgbox('欢迎来到挖矿世界,在这里你可以获得木材 和石头',title)
    g = e.buttonbox('请选择你要采集的资源', title, choices = ('木材','石头'))
    if g == '木材':
        mucai()
    if g == '石头':
        shitou()

def clothes():
    e.msgbox('哈哈,程序员俺还在开发中,下次再来玩 :-)',title)
    主界面()

def maoxian():
    e.msgbox('哈哈,程序员俺还在开发中,下次再来玩 :-)',title)
    主界面()
   


def 主界面():
    global 生命
    global 经验
    global 等级
    msg = '等级 %d , 经验【%d】,生命 %d' % (等级, 经验, 生命)
    g = e.buttonbox(msg, title, choices = (背包,打怪,武器店,防具店,冒险,挖矿,退出))
    if g == '打怪':
        fight()
    elif g == '武器店':
        sword()
    elif g == '防具店':
        clothes()
    elif g == '冒险':
        maoxian()
    elif g == '挖矿':
        wakuang()
    elif g == '背包':
        beibao()
    else:
        e.msgbox('游戏结束,谢谢',title)
        exit()


主界面()
        
#### 希望可以获得改进代码的指点。谢谢

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-1-30 15:57:20 | 显示全部楼层
顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-30 16:40:24 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-7 22:23:04 | 显示全部楼层
咋显示没有easygui模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 15:14:58 | 显示全部楼层
忧郁的大叔 发表于 2018-2-7 22:23
咋显示没有easygui模块

import easygui as e

哈哈,现在看看这程序写的好low啊。 呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 00:26:33 | 显示全部楼层
运行不了
Traceback (most recent call last):
  File "/Users/yufan/Documents/python编程/damaoxian.py", line 1, in <module>
    import easygui as e
ModuleNotFoundError: No module named 'easygui'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 20:37:59 | 显示全部楼层

你们没安装easygui模块而已,楼主的代码没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-18 23:28:55 From FishC Mobile | 显示全部楼层
谢谢楼主分享,自己也想做个游戏,学习中。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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