jensonl 发表于 2018-1-30 14:47:24

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

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()


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

404NOT 发表于 2018-1-30 15:57:20

顶一下

Ningming 发表于 2018-1-30 16:40:24

厉害

忧郁的大叔 发表于 2018-2-7 22:23:04

咋显示没有easygui模块{:10_261:}

jensonl 发表于 2018-2-8 15:14:58

忧郁的大叔 发表于 2018-2-7 22:23
咋显示没有easygui模块

import easygui as e

哈哈,现在看看这程序写的好low啊。 呵呵

黄金猫 发表于 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'

mamasay 发表于 2018-4-2 20:37:59

黄金猫 发表于 2018-3-7 00:26
运行不了

你们没安装easygui模块而已,楼主的代码没问题

LC_ilmlp 发表于 2018-4-18 23:28:55

谢谢楼主分享,自己也想做个游戏,学习中。。。
页: [1]
查看完整版本: 学习python 不到一个月 自编一个文字游戏,勇者大冒险