我正在编写一款小游戏,可是需要在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()