m0_56343782 2023-01-03 01:39 采纳率: 42.9%
浏览 13
已结题

python如何等待?

我正在编写一款小游戏,可是需要在180行等待用户做出操作后再继续执行,不知道怎么编写,请求热心网友帮帮忙。

import tkinter as tk
import tkinter.messagebox as msgbox
import random
global pit_sp,gold,read,pits,width,hight,x,y,using,enemy_health_max,enemy_health_now,self_health_max,self_health_now,defensive_power_max,defensive_power_now,white,level
read_=open('player.txt','r',encoding='utf-8')
read=read_.readlines()
gold=int(read[0])
pit_sp=int(read[1])
pits={'胶囊兽':['1',10,75,10],'狂风兽':[read[3][0],int(read[3][1:])+20,int(read[3][1:])+100,int(read[3][1:])+25],'暴龙兽':[read[4][0],int(read[4][1:])+25,int(read[4][1:])+75,int(read[4][1:])+20],'猛虎兽':[read[5][0],int(read[5][1:])+40,int(read[5][1:])+100,int(read[5][1:])+10],'无敌兽':[read[6][0],int(read[6][1:])+50,int(read[6][1:])+200,int(read[6][1:])+40]}
using=read[7][:3]
enemy_health_max=int(read[8])*10
enemy_health_now=enemy_health_max
self_health_max=pits[using][2]
self_health_now=self_health_max
defensive_power_max=pits[using][3]
defensive_power_now=defensive_power_max
level=[read[2][1:],read[3][1:],read[4][1:],read[5][1:],read[6][1:]]
lv=read[8][:1]
attack_power=pits[using][1]
window = tk.Tk()
window.title("小游戏1蒋钦宇制作")
width="800"
hight="800"
x="600"
y="10"
def shop(x):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    shop_ = tk.Tk()
    shop_.title('商店')
    shop_.geometry('400x1320+600+0')
    if x==0:
        tk.Label(shop_, text="宠物       攻击力      生命值      防御力", height=10, relief='flat', compound="center", font=("新宋体", 7)).grid()
        tk.Label(shop_, text="狂风兽     10         100        25", height=10, relief='flat', compound="center", font=("新宋体", 7)).grid()
        btn_determine = tk.Button(shop_, text="购买 100宠物碎片", relief='flat', compound="center", height=10, command=lambda: shop(1))
        btn_determine.grid(row=1,column=1)
        tk.Label(shop_, text="暴龙兽     20         75        20", height=10, relief='flat', compound="center", font=("新宋体", 7)).grid()
        btn_determine = tk.Button(shop_, text="购买 500宠物碎片", relief='flat', compound="center",height=10, command=lambda: shop(2))
        btn_determine.grid(row=2,column=1)
        tk.Label(shop_, text="猛虎兽     40         100        10", height=10, relief='flat', compound="center", font=("新宋体", 7)).grid()
        btn_determine = tk.Button(shop_, text="购买 1000宠物碎片", relief='flat', compound="center", height=10, command=lambda: shop(3))
        btn_determine.grid(row=3,column=1)
        tk.Label(shop_, text="无敌兽     50         200        40",height=18, relief='flat', compound="center", font=("新宋体", 7)).grid()
        btn_determine = tk.Button(shop_, text="购买 2000宠物碎片", relief='flat', compound="center", height=10, command=lambda: shop(4))
        btn_determine.grid(row=4,column=1)
        shop_.mainloop()
    elif x<6:
        price=[100,500,1000,2000]
        if read[x+2]=='0':
            if pit_sp>=price[x-1]:
                pit_sp-=price[x-1]
                msgbox.showwarning('购买结果', '购买成功')
            else:
                msgbox.showwarning('购买结果', '货币不足')
        else:
            msgbox.showwarning('购买结果', '已拥有')
    else:
        if gold>100:
            gold-=100
            msgbox.showwarning('升级结果', '升级成功')
        else:
            msgbox.showwarning('升级结果', '货币不足')
    white=open('player.txt','w',encoding='utf-8')
    white.write(str(gold)+'\n'+str(pit_sp)+'\n'+list(pits.values())[0][0]+level[0]+list(pits.values())[1][0]+level[1]+list(pits.values())[2][0]+level[2]+list(pits.values())[3][0]+level[3]+list(pits.values())[4][0]+level[4]+using+str(lv))
    white.close()
def pit():
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    pits_ = tk.Tk()
    pits_.title('宠物')
    pits_.geometry('75x350+600+600')
    for i in pits.keys():
        if pits[i][0]=='1':
            btn_determine = tk.Button(pits_, text=i + '升级', relief='flat', compound="center",command=lambda: level_up(i))
            btn_determine.grid()
            btn_determine = tk.Button(pits_, text=i + '使用', relief='flat', compound="center",command=lambda: use(i))
            btn_determine.grid()
    pits_.mainloop()
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def level_up(x):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    level_up_ = tk.Tk()
    level_up_.title('升级')
    level_up_.geometry('200x350+600+600')
    tk.Label(level_up_, text=x, relief='flat', compound="center",
             font=("新宋体", 7)).grid()
    tk.Label(level_up_, text='升级前', relief='flat', compound="center",
             font=("新宋体", 7)).grid()
    tk.Label(level_up_, text='升级后', relief='flat', compound="center",
             font=("新宋体", 7)).grid(row=1, column=1)
    tk.Label(level_up_, text='攻击力'+str(pits[x][1]), relief='flat', compound="center",
             font=("新宋体", 7)).grid()
    tk.Label(level_up_, text=str(pits[x][1]+1), relief='flat', compound="center",
             font=("新宋体", 7)).grid(row=2, column=1)
    tk.Label(level_up_, text='生命值'+str(pits[x][2]), relief='flat', compound="center",
             font=("新宋体", 7)).grid()
    tk.Label(level_up_, text=str(pits[x][2]+1), relief='flat', compound="center",
             font=("新宋体", 7)).grid(row=3, column=1)
    tk.Label(level_up_, text='防御力'+str(pits[x][3]), relief='flat', compound="center",
             font=("新宋体", 7)).grid()
    tk.Label(level_up_, text=str(pits[x][3]+1), relief='flat', compound="center",
             font=("新宋体", 7)).grid(row=4, column=1)
    btn_determine = tk.Button(level_up_, text='100金币升级', relief='flat', compound="center", command=lambda: shop(6))
    btn_determine.grid()
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def use(x):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    using=x
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def health_up(self_health_now):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, defensive_power_max, defensive_power_now, white, level
    if self_health_max-self_health_now<5:
        self_health_now=self_health_max
    else:
        self_health_now+=5
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def defensive_power_up(defensive_power_now):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, white, level
    if defensive_power_max - defensive_power_now < 5:
        defensive_power_now = defensive_power_max
    else:
        defensive_power_now += 5
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def attack(attack_power,enemy_health_now):
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    if enemy_health_now-attack_power<0:
        enemy_health_now=0
    else:
        enemy_health_now-=attack_power
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
def game():
    global pit_sp, gold, read, pits, width, hight, y, using, enemy_health_max, enemy_health_now, self_health_max, self_health_now, defensive_power_max, defensive_power_now, white, level
    playing_ = tk.Tk()
    playing_.title('游戏')
    playing_.geometry('800x800+600+600')
    while enemy_health_now>0:
        tk.Label(playing_, text='敌方血量' + str(enemy_health_max) + '/' + str(enemy_health_now), relief='flat',
                 compound="center",
                 font=("新宋体", 7)).grid(row=0,column=0)
        tk.Label(playing_, text=using+'血量' + str(self_health_max) + '/' + str(self_health_now)+'护盾'+str(defensive_power_max)+'/'+str(defensive_power_now), relief='flat',
                 compound="center",
                 font=("新宋体", 7)).grid(row=1,column=0)
        btn_determine = tk.Button(playing_, text='回复5点血量', relief='flat', compound="center",
                                  command=lambda: health_up(self_health_now))
        btn_determine.grid(row=2, column=0)
        btn_determine = tk.Button(playing_, text='回复5点护盾', relief='flat', compound="center",
                                  command=lambda: defensive_power_up(defensive_power_now))
        btn_determine.grid(row=3, column=0)
        btn_determine = tk.Button(playing_, text='攻击'+str(attack_power)+'点血量', relief='flat', compound="center",
                                  command=lambda: attack(attack_power,enemy_health_now))
        btn_determine.grid(row=4, column=0)
        #这里是我不会的等待,等以上3个函数的其中一个结束再执行下面的代码
        random_number=random.randint(1,lv)
        tk.Label(playing_, text='敌方对你造成了'+str(random_number)+'点伤害', relief='flat',
                 compound="center",
                 font=("新宋体", 7)).grid(row=1, column=0)
        if defensive_power_now<random_number:
            defensive_power_now=0
            random_number-=defensive_power_now
        else:
            defensive_power_now-=random_number
            random_number=0
        self_health_now-=random_number
    white = open('player.txt', 'w', encoding='utf-8')
    white.write(
        str(gold) + '\n' + str(pit_sp) + '\n' + list(pits.values())[0][0] + level[0]+ list(pits.values())[1][0] + level[
            1]+ list(pits.values())[2][0] + level[2]+ list(pits.values())[3][0] + level[3]+
        list(pits.values())[4][0] + level[4]+ using + '\n' + str(lv))
    white.close()
window.geometry('75x150+600+600')
btn_determine=tk.Button(window,text="商店",relief='flat',compound="center",command=lambda:shop(0))
btn_determine.grid()
btn_determine=tk.Button(window,text="宠物",relief='flat',compound="center",command=lambda:pit())
btn_determine.grid()
btn_determine=tk.Button(window,text="开始",relief='flat',compound="center",command=lambda:game())
btn_determine.grid()
tk.Label(window, text="金币 "+str(gold),relief='flat', compound="center",
             font=("新宋体", 7)).grid()
tk.Label(window, text="宠物碎片 "+str(pit_sp),relief='flat', compound="center",
             font=("新宋体", 7)).grid()
window.mainloop()
white=open('player.txt','w',encoding='utf-8')
white.write(str(gold)+str(pit_sp)+list(pits.values())[0][0]+level[0]+list(pits.values())[1][0]+level[1]+list(pits.values())[2][0]+level[2]+list(pits.values())[3][0]+level[3]+list(pits.values())[4][0]+level[4]+using+str(lv))
white.close()

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-01-03 04:05
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 创建了问题 1月3日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画