马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 txxcat 于 2020-3-20 11:03 编辑
#作为写的第一个游戏,一直想写成图形版,现在开始学GUI终于可以改造了,作业的要求还是要输入答案,不仅不符合图形界面的玩法,而且要防止输入错误字符而写入异常处理代码,现在改写成纯按钮选择,可以节省不少代码,而且不容易出错。#guessnumber_easygui_0.1
import random
import easygui as g
import sys
while True:
secret = random.randint(1,10)
title='数字小游戏'
msg='不妨猜一下小甲鱼现在心里想的是哪个数字:'
choices=('1', '2', '3','4','5','6','7','8','9','10')
times=3
while True:
temp=g.buttonbox(msg=msg, title=title, choices=choices, image=None, images=None, default_choice=None, cancel_choice=None, callback=None, run=True)
if type(temp)==str: #如果选择按钮就转换,选择关闭窗口或按ESC就退出
guess = int(temp)
else:
sys.exit(0)
times-=1
if times==0 and guess!=secret:
if g.ccbox("三振出局,你没有机会了,正确答案是"+str(secret)+"!\n你想重新开始小游戏吗?"):
break
else:
sys.exit(0)
if guess>secret:
g.msgbox("哎呀,猜大了,你还有"+str(times)+"次机会,请重新选择吧!")
elif guess<secret:
g.msgbox("哎呀,猜小了,你还有"+str(times)+"次机会,请重新选择吧!")
else:
if g.ccbox("我草,你是小甲鱼心里的蛔虫吗?!\n哼,猜中了也没有奖励!\n你想重新开始小游戏吗?"):
break
else:
sys.exit(0)
#第二版修改了一下,增加了一个函数,节约了代码量,去掉了猜错的提示窗口,直接在主窗口提示,可以少点一次鼠标,作为游戏也流畅了些^-^#guessnumber_easygui_0.2
import random
import easygui as g
import sys
def restartgame(msg):
if g.ccbox(msg):
return True
else:
sys.exit(0)
while True:
secret = random.randint(1,10)
title='数字小游戏'
msg='不妨猜一下小甲鱼现在心里想的是哪个数字,你有3次机会:'
choices=('1', '2', '3','4','5','6','7','8','9','10')
times=3
while True:
temp=g.buttonbox(msg=msg, title=title, choices=choices, image=None, default_choice=None, cancel_choice=None, callback=None, run=True)
if type(temp)==str: #如果选择按钮就转换,选择关闭窗口或按ESC就退出
guess = int(temp)
else:
sys.exit(0)
times-=1
if times==0 and guess!=secret:
if restartgame("三振出局,你没有机会了,正确答案是"+str(secret)+"!\n你想重新开始小游戏吗?"):
break
if guess>secret:
msg="哎呀,猜大了,你还有"+str(times)+"次机会,请重新选择吧!"
elif guess<secret:
msg="哎呀,猜小了,你还有"+str(times)+"次机会,请重新选择吧!"
else:
if restartgame("我草,你是小甲鱼心里的蛔虫吗?!\n哼,猜中了也没有奖励!\n你想重新开始小游戏吗?"):
break
第三版,弃用os.exit()退出程序;改用更合理的indexbox,不用转换字符为整数了;理顺判断逻辑,减少代码量,去掉函数。#guessnumber_easygui_0.3
import random
import easygui as g
rtmm=False
while True:
if rtmm:
break
secret = random.randint(1,10)
title='数字小游戏'
msg='不妨猜一下小甲鱼现在心里想的是哪个数字,你有3次机会:'
choices=('1', '2', '3','4','5','6','7','8','9','10')
times=3
while True:
temp=g.indexbox(msg=msg, title=title, choices=choices)
if temp==None:
rtmm=True
break
else:
guess =temp+1
times-=1
if guess==secret:
msg="什么!猜对了!你是小甲鱼心里的蛔虫吗?!\n哼,猜中了也没有奖励!\n你想重新开始小游戏吗?"
elif times==0:
msg="三振出局,你没有机会了,正确答案是【 %d 】!\n你想重新开始小游戏吗?" % secret
elif guess>secret:
msg="哎呀,猜大了,你还有"+str(times)+"次机会,请重新选择吧!"
continue
elif guess<secret:
msg="哎呀,猜小了,你还有"+str(times)+"次机会,请重新选择吧!"
continue
if not g.ccbox(msg):
rtmm=True
break
|