浔川五子棋——浔川python社

第一部分代码

用户登录界面的实现:

  • 导入了tkinter库和tkinter.messagebox库,用于创建图形界面和弹窗功能。
  • 创建了一个名为root的窗口,并设置了窗口的标题、大小和位置。
  • 创建了两个StringVar类型的变量log_name和log_pwd,用来保存用户输入的用户名和密码。
  • 定义了一个按钮点击事件btn_login,通过判断用户名和密码是否正确来显示相应的弹窗信息。
  • 创建了两个Label和两个Entry组件,用于显示账号和密码的输入框。
  • 创建了一个Button组件,用于点击后退出登录界面。
  • 最后调用了root.mainloop()方法显示图形界面。

第二部分代码

五子棋游戏界面的实现:

  • 导入了tkinter库和tkinter.messagebox库,用于创建图形界面和弹窗功能。
  • 创建了一个名为root的窗口,并设置了窗口的标题。
  • 创建了一个Canvas组件w1,并设置了宽度、高度和背景色。
  • 使用循环创建了一条横线和一条竖线,用于绘制棋盘的网格。
  • 使用create_oval方法绘制了五个黑色的圆形棋子,用于标记起始位置。
  • 创建了两个numpy数组A和B,用于保存棋盘状态和棋子颜色。
  • 定义了一个回调函数callback,用于处理用户点击事件。
  • 在回调函数中判断用户点击的位置,根据当前轮次的不同绘制黑色或白色的棋子,并更新棋盘状态。
  • 使用循环遍历四个方向,判断当前棋子是否连成五个,如果是则弹窗提示获胜。
  • 绑定了鼠标点击事件和回调函数。
  • 创建了一个退出按钮,并绑定了退出函数。
  • 最后调用了mainloop()方法显示图形界面。

需要注意的是,这两部分代码是分开的,并不是连续执行的。用户需要先登录成功,才能进入游戏界面。

from tkinter import *
from tkinter.messagebox import *
 
 
# 设置主界面的容器大小和位置
root = Tk()
root.title('浔川五子棋用户登录界面')
root.geometry("800x400+100+150")
 
#声明组件变量
log_name = StringVar()
log_pwd = StringVar()
 
#组件的使用
def btn_login():
    if log_name.get() == '浔川五子棋' and log_pwd.get() == '浔川123':
        showinfo('提示信息','登录成功~')
    else:
        showwarning('提示信息','用户名或密码输入有误~')
 
#组件的使用
Label(root,text='账号:',font=('幼圆',20)).place(x=200,y=80)
Entry(width=27,font=('幼圆',20),textvariable=log_name).place(x=280,y=88)
Label(root,text='密码:',font=('幼圆',20)).place(x=200,y=150)
Entry(width=27,font=('幼圆',20),show='*',textvariable=log_pwd).place(x=280,y=150)
 
Button(text='前往五子棋游戏',
       background='white',     # 背景色
       foreground='black',      # 前景色
       width=20,font=('幼圆',20),     #字体  大小
       command=lambda:root.quit()).place(x=400,y=220)
 
# 显示图形界面
root.mainloop()


from tkinter import *
import tkinter.messagebox  # 弹窗库
import numpy as np
 
root = Tk()                                 #创建窗口
root.title("五子棋游戏")                  #窗口名字
w1 = Canvas(root, width=600,height=600,background='chocolate')
w1.pack()
 
for i in range(0, 15):
    w1.create_line(i * 40 + 20, 20, i * 40 + 20, 580)
    w1.create_line(20, i * 40 + 20, 580, i * 40 + 20)
w1.create_oval(135, 135, 145, 145,fill='black')
w1.create_oval(135, 455, 145, 465,fill='black')
w1.create_oval(465, 135, 455, 145,fill='black')
w1.create_oval(455, 455, 465, 465,fill='black')
w1.create_oval(295, 295, 305, 305,fill='black')
 
num=0
A=np.full((15,15),0)
B=np.full((15,15),'')
def callback(event):
    global num ,A
    for j in range (0,15):
        for i in range (0,15):
            if (event.x - 20 - 40 * i) ** 2 + (event.y - 20 - 40 * j) ** 2 <= 2 * 20 ** 2:
                break
        if (event.x - 20 - 40 * i) ** 2 + (event.y - 20 - 40 * j) ** 2 <= 2*20 ** 2:
            break
    if num % 2 == 0 and A[i][j] != 1:
        w1.create_oval(40*i+5, 40*j+5, 40*i+35, 40*j+35,fill='black')
        A[i][j] = 1
        B[i][j] = 'b'
        num += 1
    if num % 2 != 0 and A[i][j] != 1 :
        w1.create_oval(40*i+5, 40*j+5, 40*i+35, 40*j+35,fill='white')
        A[i][j] = 1.
        B[i][j] = 'w'
        num += 1
 
    f = [[-1, 0], [-1, 1], [0, 1], [1, 1]]
    for z in range(0, 4):
        a, b = f[z][0], f[z][1]
        count1, count2 = 0, 0
        x, y = i, j
        while B[x][y] == B[i][j]:
            count1 += 1
            if x + a >= 0 and y + b >= 0 and x + a < 15 and y + b < 15 and B[x + a][y + b] == B[i][j]:
                [x, y] = np.array([x, y]) + np.array([a, b])
            else:
                x, y = i, j
                break
        while B[x][y] == B[i][j]:
            count2 += 1
            if x - a < 15 and y - b < 15 and x - a >= 0 and y - b >= 0 and B[x - a][y - b] == B[i][j]:
                [x, y] = np.array([x, y]) - np.array([a, b])
            else:
                break
        if count1 + count2 == 6:
            if B[i][j] == 'b':
                tkinter.messagebox.showinfo('提示', '黑棋获胜')
            else:
                tkinter.messagebox.showinfo('提示', '白棋获胜')
 
w1.bind("<Button -1>",callback)
w1.pack()
def quit():
    root.quit()
 
u=Button(root,text="退出",width=10,height=1,command=quit,font=('楷体',15))
u.pack()
 
mainloop()

账号:浔川五子棋

密码:浔川123

友情链接:浔川python社-CSDN博客

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值