设计井字棋游戏(一)

创建游戏登录注册窗口

用户名admin   密码admin(可自行改变)

主页面

1. 导包

import pickle:导入 pickle 模块,这是一个 Python 的内置模块,用于将 Python 对象序列化和反序列化。序列化是指将对象转换为字节流,以便可以将其保存到文件或数据库中,或者通过网络传输。

from PIL import Image:从 PILPython Imaging Library)模块导入 Image 类。PIL 是一个用于处理图像的第三方库,它提供了广泛的图像处理功能,包括打开、修改和保存不同格式的图像文件。

from tkinter import messagebox tkinter 模块导入 messagebox 子模块。messagebox 提供了显示消息框的函数,这些消息框用于显示警告、错误消息、提示等。

pickle 来存储用户信息,tkinter 来创建用户界面,PIL 来处理图像,以及 messagebox 来显示消息框。

import pickle
import subprocess
import tkinter as tk
from PIL import Image
from tkinter import messagebox
  1. 创建游戏窗口并实现可视化,设置其名称大小,并将窗口循环显示。
win=tk.Tk()
win.title('Welcome')
win.geometry('500x400')

#将窗口循环显示

win.mainloop()

2. 设置加载图片到登录窗口

首先导包,一定要在上面添加此语法,否则图片将无法显示出来

from PIL import Image

以下为加载图片到窗口中,对齐居中设置(要注意图片要和文件平级在一个下面,否则将不可以显示)

img = Image.open("welcome.gif")
photo_img = tk.PhotoImage(file="welcome.gif")
label = tk.Label(image=photo_img)
label.pack()

3. 在游戏窗口内设置两个标签分别为User namePassword并绘制出其对应的输入框

#两个输入框名称
l2 = tk.Label(win, text="User name",width=10, height=1,font=6)
l2.place(x = 80, y = 160)
l3 = tk.Label(win,text="Password",width=10, height=1, font=6)
l3.place(x = 75, y = 200)
#两个输入框
entry1 = tk.Entry(win, width=25)
entry1.place(x = 220, y = 165)
entry2 = tk.Entry(win, width=25)
entry2.place(x = 220,y = 205)

4. 设置用户名

定义初始名为example@python.com,让其在User name输入框中显示
var_usr_name=tk.StringVar()
var_usr_name.set('example@python.com')
entry_usr_name=tk.Entry(win,textvariable=var_usr_name)
entry_usr_name.place(x=220,y=165)

5. 设置密码输入变为*******(隐藏密码不显示)

通过tk.StringVar()来设置隐藏密码,并让其在Password输入框中显示
var_usr_pwd=tk.StringVar()
entry_usr_pwd=tk.Entry(win,textvariable=var_usr_pwd,show='*')
entry_usr_pwd.place(x=220,y=205)

6. 分别定义usr_login()usr_sign_up()函数

def usr_login ():
    pass

def usr_sign_up():

pass

7.在窗口中设置两个按钮分别为LoginSign up,并利用command实现点击触发连接

btn_login=tk.Button(win,text='Login',command=usr_login)
btn_login.place(x=170,y=260)
btn_sign_up=tk.Button(win,text='Sign up',command=usr_sign_up)
btn_sign_up.place(x=270,y=260)

单独创建一个注册页面

  1. 创建游戏窗口并实现可视化,设置其名称大小,并将窗口循环显示。
import tkinter as tk
#设置窗口
win1=tk.Tk()
win1.title('重置密码')
win1.geometry('450x300')

#将窗口循环显示

win.mainloop()
2.在窗口中设置三个标签和其对应的输入框,三个标签分别命名User name、Password、Confirm password。
#设置标签名称
tk.Label(win1,text='User name :',font=10).place(x=30,y=30)
tk.Label(win1,text='Password :',font=3).place(x=30,y=90)
tk.Label(win1,text='Confirm password :',font=1).place(x=30,y=150)
#设置三个输入框
entry1 = tk.Entry(win1, width=25)
entry1.place(x = 230, y = 30)
entry2 = tk.Entry(win1, width=25)
entry2.place(x = 230,y = 90)
entry3 = tk.Entry(win1, width=25)
entry3.place(x = 230, y = 150)

3. 设置密码输入变为*******(隐藏密码不显示

通过tk.StringVar()来设置隐藏密码,并让其在Passwordconfirm password输入框中显示。
var_Password=tk.StringVar()
entry_Password=tk.Entry(win1,textvariable=var_Password,show='*')
entry_Password.place(x = 230,y = 90)
var_Confirm=tk.StringVar()
entry_Confirm=tk.Entry(win1,textvariable=var_Confirm,show='*')
entry_Confirm.place(x = 230, y = 150)
4.定义按钮,命名为Sign up,设置其xy位置
btn_sign_up=tk.Button(win1,text='Sign up',command=usr_sign_up)
btn_sign_up.place(x=180,y=200)

将游戏登录窗口和注册页面进行连接

  1. 将刚刚定义的usr_login()函数加以完善,使得其在点击时可弹出提示框利用get()得到输入框内的用户输入
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()

print(usr_name)

2. 通过try.. .. except来实现报错提示,FileNotFoundError为报错类型

try:
    with open('usrs_info.pickle', 'rb')as usr_file:
        print('1')
        usrs_info = pickle.load(usr_file)
        print(usrs_info)
  except  FileNotFoundError:
    with open('usrs_info.pickle', 'wb') as usr_file:
        print('2')
        usrs_info = {'admin': 'admin'}
        pickle.dump(usrs_info, usr_file)  # 序列化
  print('OK')
  print('usr_name:', usr_name)

3. 再使用if....else语句实现提示窗口的循环交替显示

if usr_name in usrs_info:
    print('3')
    if usr_pwd == usrs_info[usr_name]:
        tk.messagebox.showinfo(title='Welcome', message='How are your?' + usr_name)
    else:
        tk.messagebox.showerror(message='您的密码出错了!!请重新输入')
  else:
    print(4)
  is_sign_up = tk.messagebox.askyesno(title='Welcome', message='您还没有注册!需要去注册吗!')
  if is_sign_up:
    usr_sign_up()
 

4.再将刚刚定义的usr_sign_up()函数进行完善,从而实现与注册界面的连接。

点击按钮输出“开始注册吧”字样

def usr_sign_up():
  print("开始注册吧")
usr_sign_up()函数中再定义sign_up()函数,
def sign_up():
    nn = entry1.get()
    np = entry2.get()
    npf = entry3.get()
通过用户的输入得到注册信息,并打开创建usrs_info.pickle文件
  with open('usrs_info.pickle', 'rb') as usr_file:
        exist_usr_info = pickle.load(usr_file)

通过if…else语句实现报错或创建成功的提示

    if np != npf:
        tk.messagebox.showerror('Error','Password and confirm password must be the same!')
    elif nn in exist_usr_info:
        print("已经注册过了")
        tk.messagebox.showerror('Error','The user has already signed up!')
    else:
        exist_usr_info[nn] = np

打开usrs_info.pickle,显示您已成功注册的提示框

        with open('usrs_info.pickle','wb')as usr_file:
            pickle.dump(exist_usr_info,usr_file)
        tk.messagebox.showinfo('Welcome','You have successfully signed up!')
        btn_sign_up.destroy()

5. 导入之前创建的注册页面(将之前创建的代码复制到)usr_sign_up()函数中。

代码参考上面的单独创建注册页面。

创建游戏窗口

创建游戏窗口并实现可视化,设置其名称大小,并将窗口循环显示。

window = tk.Tk()
window.title('Welcome')
window.geometry('400x500')



window.mainloop()

  • 34
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值