|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
|
|