- 1.游戏玩法
通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数序列,不能让猜的人知道。猜的人就可以开始猜。每猜一次,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。
接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。
- 2.设计思路
1.通过random.sample(range(0,10), 4)生成随机的四位数
2.对键盘输入进行判断(数值、长度)
3.转换输入成为list[],循环判断
for i in range(0, 4):
if array[i] == list1[i]:
a += 1
else:
if any([list1[i] == array[0], list1[i] == array[1], list1[i] == array[2], list1[i] == array[3]]):
b += 1
- 3.代码实现
# coding=utf-8
import tkinter as tk
import tkinter.messagebox
import random
import re
if __name__ == '__main__':
game = tk.Tk()
game.geometry('450x200')
game.title('猜数字小游戏')
# 全局变量:不重复的四位数
list1 = (random.sample(range(0,10), 4))
flag = 1
label1 = tk.Label(game, fg='Teal', text="系统随机生成一个不重复的四位数,请你猜出这个数",
wraplength=250, justify='center', font=('楷体', 10))
label1.grid(row=0, padx=20, pady=8, columnspan=2, rowspan=2)
label2 = tk.Label(game, text='输入一个各位不相同的4位数字', bg='LightSeaGreen', font=('楷体', 10))
label2.grid(row=2, column=0, sticky='w', padx=5)
text = tk.Entry(game, width=20)
text