猜数字游戏python

import tkinter
import tkinter.messagebox
import random



num_play = 0
num_list = [1,2,3,4]
def random_list():
    global num_list
    a = [i for i in range(10)]
    x1 = random.choice(a)
    a.remove(x1)
    x2 = random.choice(a)
    a.remove(x2)
    x3 = random.choice(a)
    a.remove(x3)
    x4 = random.choice(a)
    a.remove(x4)

    num_list = [x1, x2, x3, x4]
reminder_list = []
zuofei_list = []

def compare():
        global num_play
        global num_list
        global reminder_list
        global zuofei_list
        try:
            i_1, i_2, i_3, i_4 = map(int, text.get())

            input_num = [i_1, i_2, i_3, i_4]
            set_input = list(set(input_num))

        except ValueError:
            tkinter.messagebox.showinfo('警告', '错误输入')

        if len(set_input) != len(input_num):
            tkinter.messagebox.showinfo('警告', '有重复数字,第{}次结果作废。'.format(num_play+1))
            zuofei_list.append(num_play+1)

        A = 0
        B = 0
        for i, j in enumerate(input_num):
            for m, n in enumerate(num_list):
                if j == n:
                    if i == m:
                        A += 1
                    else:
                        B += 1


        tkinter.messagebox.showinfo('结果:','%dA%dB'%(A,B))
        num_play += 1
        tkinter.messagebox.showinfo('警告', '玩的次数:{}'.format(num_play))
        # tkinter.messagebox.showerror('答案', '%d%d%d%d' % (num_list[0], num_list[1], num_list[2], num_list[3]))
        if A==4 and B==0:
            tkinter.messagebox.showinfo('恭喜:', '你猜对了\n正确答案是%d%d%d%d'% (num_list[0], num_list[1], num_list[2], num_list[3]))
            tkinter.messagebox.showinfo('提醒:', '你猜对了,请点击更新以重来更改四位随机数,或退出游戏。')
            reminder_list = []
        if num_play == 8:
            tkinter.messagebox.showinfo('答案是:','答案是:%d%d%d%d' % (num_list[0], num_list[1], num_list[2], num_list[3]))
            tkinter.messagebox.showinfo('提醒:', '你已经玩了八次了,请点击更新以更新四位随机数以重来,或退出')

            num_play = 0
            reminder_list = []
        reminder_list.append('%dA%dB'%(A,B))
        tkinter.messagebox.showinfo('经验',"这是结果列表:{},这是作废列表:{}".format(reminder_list,zuofei_list))
    # print("%dA%dB" % (A, B))
    # print(num_list)



shuzi = tkinter.Tk()
#生成主窗口
shuzi.title('猜数字游戏')                #主窗口加标题
shuzi.geometry('1200x1200')
# 建立一个文本,设置字的颜色,内容,字的字体、大小
label1 = tkinter.Label(shuzi, fg='black', text="猜数字", font=('宋体', 35, 'bold'))
# 设置文本框的位置
label1.grid(padx=0)

label2 = tkinter.Label(shuzi, fg='black', text="游戏规则:\n输入没有重复数字的四位数字", font=('宋体', 15, 'bold'))
label2.grid(padx=10, pady=10)

label3 = tkinter.Label(shuzi, fg='black', text="请输入你所猜测的四位数字:", font=('宋体', 15, 'bold'))
label3.grid(padx=10, pady=10)

text = tkinter.Entry(shuzi)
text.grid(padx=100)

# 建立一个按钮,command:通过按钮触发比较函数
button1 = tkinter.Button(shuzi, text='输入非重复四位数字',command=compare, width=20, font=('微软雅黑', 10,))
# 设置按钮的位置
button1.grid(padx=10,pady=10)

# 建立一个按钮,command:通过按钮触发界面退出,bg是背景颜色
button2 = tkinter.Button(shuzi, text='更新',command=random_list, width=10, bg='yellow', font=('微软雅黑', 10,))
button2.grid(padx=10,pady=10)
# 设置主窗口的大小
button3 = tkinter.Button(shuzi, text='退出游戏',command=shuzi.quit, width=10, bg='yellow', font=('微软雅黑', 10,))
button3.grid(padx=10,pady=10)
shuzi.mainloop()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值