当前位置: 首页 > news >正文

安装wordpress配置文件/河北seo基础教程

安装wordpress配置文件,河北seo基础教程,浙江建筑信息网查询,b s架构做网站好处井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…

井字棋

  • 1.设计登录界面
    • 1.1导入需要的工具包
    • 1.2窗口显示
    • 1.3登录界面图片显示
    • 1.6标签按钮输入框显示
  • 2.登录功能实现
    • 2.1用户数据存储
  • 2.2登录和注册
    • 2.2.1登录功能实现
    • 2.2.2注册功能实现
  • 3.井字棋游戏
    • 3.1 导入需要的工具包
    • 3.2 窗口显示
    • 3.2 按钮标签显示
    • 3.3 棋盘设置初始状态
    • 3.4 游戏设计
      • 3.4.1创建白布
      • 3.4.2 画出九宫格
  • 在每个格子中心绘制数字或 "X"
  • 3.6设置输赢条件
  • 3.7 进一步处理用户输入
  • 3.8设置AI步数
  • 3.9 清空棋盘状态
  • 效果图

1.设计登录界面

1.1导入需要的工具包

import tkinter as tk
from PIL import Image, ImageTk
import pickle
from tkinter import messagebox
import subprocess

1.2窗口显示

window = tk.Tk()
window.title("Welcome")
window.geometry('500x600')

1.3登录界面图片显示

image = Image.open("welcome.gif")
photo = ImageTk.PhotoImage(image)

函数解析 ImageTk.PhotoImage 是 Python 中用于处理图像的模块,通常与 PIL(Python Imaging
Library)一起使用。它允许你在 Tkinter 程序中加载和显示图像。
1.5 用户名设置默认值

value = "GaoYue"
entry_var = tk.StringVar(window)
entry_var.set(value)

解释:
创建了一个StringVar对象entry_var,用于绑定到一个Entry控件,以便可以在用户输入时更新该控件的值。然后,给entry_var设置了一个初始值value,这样在Entry控件中显示的文本就是value的值,并设置初始值为@qq.com,这样在Entry控件中显示的文本就是。

1.6标签按钮输入框显示

label1_image = tk.Label(window,image=photo)
label1_image.place(x=10,y=10)
label2 = tk.Label(window,text='User name',width=10,height=5)
label2.place(x=40,y=130)
label3 = tk.Label(window,text='password',width=10,height=5)
label3.place(x=40,y=180)
label4 = tk.Entry(window,width=30,bd=5)
label4.place(x=140,y=210)
label5 = tk.Entry(window,textvariable=entry_var,width=30,bd=5)
label5.place(x=140,y=160)button1 = tk.Button(window,text='Loign',width=10,command=usr_login)
button1.place(x=140,y=280)
button2 = tk.Button(window,text='Sign up',width=10,command=usr_sign_up)
button2.place(x=250,y=280)

2.登录功能实现

2.1用户数据存储

def usr_login():usr_name = label5.get()usr_pwd=label4.get()print(usr_name)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)

解释:

两个输入框(label5,label4)使用get()函数,获取用户输入的数据,接下来使用使用了Python中的异常处理机制。在try使用with语句打开"usrs_info.pickle"文件,设置为只读二进制模式,将”usrs_info.pickle”二进制文件加载到内存里面,转换到usrs_info变量中,输出出来。当读取的文件不存在报错时,跳转到except代码块中执行相应的异常处理,使用with语句打开二进制写入模式打开文件,文件不存在时创建相对应文件,用一个变量(usrs_info)接收一个字典(
{‘admin’:‘admin’})用来存储用户信息或者账户信息,用于验证用户身份,将字典序列化为字节流(二进制数据)并写入usr_file文件中永久保存。

2.2登录和注册

2.2.1登录功能实现

print("ok")
print("usr_name:",usr_name)
if usr_name in usrs_info:print("3")if usr_pwd  == usrs_info[usr_name]:tk.messagebox.showinfo(title="Welcome",message="How are you"+usr_name)tk.messagebox.showinfo(title="Game Start", message="Let's start the game!")subprocess.run(["python", "飞机大战.py"])else:tk.messagebox.showerror(message="Error,your password is wrong,try again.")
else:print("4")is_sign_up = tk.messagebox.askyesno(title="Welcome",message="You have not sign up yet.sign up today?")

解释:
If语句如果用户名在字典中执行下一个if语句用户密码是否等于usrs_info中键usr_name的值,如果等于弹出消息框((title=“Welcome”,message=“How
are you”+usr_name),(title=“Game Start”, message=“Let’s start the
game!”),使用subprocess.run函数以python解释器,执行井字棋.py文件,如果不等于弹出消息框(message=“Error,your
password is wrong,try
again.”),如果第一个if语句没有达到条件,弹出一个对话框,内容是title=“Welcome”,message=“You have
not sign up yet.sign up today?”。

2.2.2注册功能实现

def sign_up():nn = entry9.get()np = entry10.get()npf = entry11.get()with open('usrs_info.pickle','rb') as usr_file:exist_usr_info = pickle.load(usr_file)if np != npf:tk.messagebox.showerror("Error","The user has already signed up!")elif nn in exist_usr_info:print("已经注册过了")tk.messagebox.showerror("Error","The user has already signed up!")else:exist_usr_info[nn] = npwith open("usrs_info.pickle","wb") as usr_file:pickle.dump(exist_usr_info,usr_file)tk.messagebox.showinfo("Welcome","You have successfully signed up!")window.destroy()
button3 = tk.Button(window, text='Sign up', width=10,command=sign_up)
button3.place(x=140, y=150)
print("开始注册")

解释:
三个输入框获取用户输入的用户名,注册密码,重复密码,打开二进制文件,将二进制文件数据转换为python对象,用一个变量exist_usr_info保存,然后if判断注册密码是否与重复密码相等,如果不相等就弹出消息框(“Error”,“The
user has already signed
up!”),反之文件中的用户名中的密码等于注册密码,将变量exist_usr_info中的数据通过with语句和pickle函数保存在二进制文件中,然后弹出消息框(“Welcome”,“You
have successfully signed up!”),窗口销毁,将函数sign_up与按钮进行连接,最后输入开始注册。

3.井字棋游戏

3.1 导入需要的工具包

import tkinter as tk
from tkinter import messagebox

3.2 窗口显示

window = tk.Tk()
window.geometry("600x500")
window.title("Welcome")

3.2 按钮标签显示

label2 = tk.Label(text="请输入要落下棋子的位置(1-9):", width=30, height=2)
label2.pack()
label2.place(x=190, y=310)
entry2 = tk.Entry(width=20)
entry2.pack()
entry2.place(x=220, y=350)
button11 = tk.Button(text="落下棋子", width=10, height=2,command=message2)
button11.pack()
button11.place(x=250, y=380)
button22 = tk.Button(text="重新开始", width=10, height=2)
button22.pack()
button22.place(x=250, y=430)

解释: 设置标签和按钮,按钮与函数相连接

3.3 棋盘设置初始状态

gameover = False
board = ['']*9
step = 0

解释: 设置游戏初始化为结束,设置棋盘状态为九个空字符串的列表,step为初始化棋盘步数为0

3.4 游戏设计

3.4.1创建白布

canvas = tk.Canvas(window, width=300, height=300, bg="white")
canvas.pack()

函数解析: tk.Canvas 是 Tkinter
中用于绘制图形的组件,你可以在其中绘制直线、矩形、椭圆等形状,也可以放置文本、图像等元素。

3.4.2 画出九宫格

def draw_nume(canvas,width,height,line_color='black'):cell_width = width / 3cell_height = height / 3for i in range(3):x = i * cell_widthcanvas.create_line(x, 0, x, height, fill=line_color)  # 垂直线for i in range(3):y = i * cell_heightcanvas.create_line(0, y, width, y, fill=line_color)  # 水平线

解释:
定义一个draw_nume函数传入形参(canvas,width,height,line_color=‘black’),’line_color='black’表示线条颜色,width,height,cell_width
= width / 3和cell_height = height / 3计算了每个单元格的宽度和高度,第一个for循环是画垂直线(起点坐标,终点坐标) fill=line_color填充方式为线条,计算当前列的
x 坐标为 i * cell_width。第二个for循环是画水平线,计算当前行的 y坐标为 i *
cell_height,canvas.create_line()画水平线。

在每个格子中心绘制数字或 “X”

for i in range(3):for j in range(3):x = i * cell_width + cell_width / 2y = j * cell_height + cell_height / 2index = i * 3 + jif board[index] == 'X':canvas.create_text(y, x, text="X", font=("Helvetica", 20))else:canvas.create_text(y, x, text=str(index + 1), font=("Helvetica", 20))

解释: 第一个for循环为行的中心位置,第二个for循环为列的中心位置,在x,y找到中心位置 index = i * 3 +
j是在九宫格上写上数字的索引,如果board[index] == ‘X’:,就在x,y的中心位置画X,如果不是在index索引加一。
3.5设置输入限制

def message():Iemet = entry2.get()if not Iemet.isdigit():tk.messagebox.showinfo("输入错误", "请输入一个数字。")elif int(Iemet) > 9:tk.messagebox.showinfo("输入错误", "输入的数字不能大于 9。")

解释: 如果判断不是数字,弹出消息框(“输入错误”, “请输入一个数字。”),接着判断输入的是大于9 的弹出消息框(“输入错误”,
“输入的数字不能大于 9。”)

3.6设置输赢条件

def iswins():global gameoverwins = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]for w in wins:if (board[w[0]]!=" " and board[w[0]]==board[w[1]]==board[w[2]]):gameover = Truetk.messagebox.showinfo(title="你别挣了",message="我赢了")returnif step>=5:gameover =Truereturn tk.messagebox.showinfo(title="你别挣了",message="都没有赢了")return

解释:
定义全局变量gameover,列出所有的用户赢的可能,for循环用与循环遍历wins列表,if条件使用索引board[w[0]],w的第一个数不能为空,判断board[w[0]]的第一个数和第二个数和第三个数是否相等,如果相等就是wins列表中的一个赢的可能,弹出消息框(title=“你别挣了”,message=“我赢了”),返回,第二个if条件如果我方步数大于等于5返回消息框(title=“你别挣了”,message=“都没有赢了”),返回。

3.7 进一步处理用户输入

def message2():global boardglobal stepIemet = entry2.get()if Iemet.isdigit():number = int(Iemet)if 1 <= number <= 9:index = number - 1board[index] = 'X'draw_nume(canvas, 300, 300)is_Win()step +=1

解释:
定义两个全局变量,获取输入框文本,if语句检查用户输入的文本是否为数字,接着if语句判断是否在1到9之间(包括1-9),井字棋游戏板上的索引位置标记为
‘X’,表示用户的棋子,这是一个函数调用,用来在画布上绘制新的游戏板,调用一个函数is_Win(),用来检查是否获胜,这一行代码增加游戏的步数,以便在每一步后进行检查。将函数放置在按钮上。

3.8设置AI步数

index = ai.AI().decide("AI","高越",board)
r = 20
canvas.create_oval()
board[index] = "AI"
iswins()

解释: 调用了 ai.AI().decide(“AI”,“高越”,board),圆的半径为20,设置棋盘数据为”AI”。

3.9 清空棋盘状态

def reset():global canvascanvas.delete('A')

使用canvas.delete函数清空棋盘状态

效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

Python-井字棋

井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…...

39.客户端与服务端断开事件handler

客户端与服务端断开有两种情况&#xff1a; 1.正常断开&#xff0c;客户端调用了ctx.channel().close(); 2.异常断开&#xff0c;比如客户端挂掉了 服务端定义handler来处理连接断开情况下要进行的逻辑操作&#xff1a; package com.xkj.server.handler;import com.xkj.ser…...

SSL 之 http只用crt格式证书完成SSL单向认证通信

背景 远程调用第三方服务时&#xff0c;之前都是双向认证&#xff0c;服务器提供jks格式的keystore证书&#xff0c;客户端配置好即可。 今天遇到个奇葩需求&#xff0c;服务器只给根公钥证书(root.crt)&#xff0c;还是第三方合法证书&#xff0c;要求单向认证&#xff0c;客户…...

实训作业-人事资源管理系统

er图 模型图 DDL与DML DROP TABLE IF EXISTS departments; CREATE TABLE departments (department_id int(11) NOT NULL AUTO_INCREMENT COMMENT 部门ID,department_name varchar(100) NOT NULL COMMENT 部门名称,PRIMARY KEY (department_id),UNIQUE KEY department_name (de…...

Flink 资源静态调度

本内容是根据 Flink 1.18.0-Scala_2.12 版本源码梳理而来。本文主要讲述任务提交时&#xff0c;为 Task 分配资源的过程。 以下是具体步骤讲解&#xff1a; TaskManager 资源注册 TaskManager 在启动时&#xff0c;会向 ResourceManager 注册资源。ResourceManager 会将 Tas…...

upload-labs第十三关教程

upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1&#xff09;0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前&#xff1a;修改之后&#xff1a;进入hex模块&#xff1a; c.放包上传成功&#xff1a; d.使用中国蚁剑进行连接 2&#xff09;%00绕…...

基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;商品信息因为其管理内容繁杂&#xff…...

Fragment与ViewModel(MVVM架构)

简介 在Android应用开发中&#xff0c;Fragment和ViewModel是两个非常重要的概念&#xff0c;它们分别属于架构组件库的一部分&#xff0c;旨在帮助开发者构建更加模块化、健壮且易维护的应用。 Fragment Fragment是Android系统提供的一种可重用的UI组件&#xff0c;它能够作为…...

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的&#xff0c;但是为何头文件定义是从21位开始&#xff1f; 历史原因&#xff1a;Linux最初是基于x86的体系结构设计的&#xff0c;因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…...

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…...

Unity程序开发:1.基本概念及操作

1. 基本概念与操作 Unity 是一个功能强大的游戏开发引擎&#xff0c;广泛用于创建2D和3D游戏。要开始开发游戏&#xff0c;了解游戏对象和组件的基本概念是必不可少的。 游戏对象与组件 什么是游戏对象&#xff08;GameObject&#xff09; 在 Unity 中&#xff0c;游戏对象…...

前端新手小白的第一个AI全栈项目---AI聊天室

前言 ok&#xff0c;大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目&#xff0c;刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题&#xff0c;也是成功之后也是想要将实现过程分享一下&a…...

金升阳电源被制裁,广州顶源电源模块可以完美替换

广州顶源电子科技股份有限公司,座落于国家高新技术开发区---广州科学城&#xff0c;是一家集研发、生产、销售及服务于一体的DC-DC&#xff0c;AC-DC电源的生产厂家。 公司通过了IATF16949汽车认证及ISO9001:2015质量管理体系认证。拥有专家级研发团队&#xff0c;产品研发经过…...

《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…...

JDK 24:Leyden

Project Leyden 发布了其首个早期版本(24-leyden2-8 2024/6/20)。初始版本专注于缩短 Java 应用程序的启动时间。 1.特点 提前编译 Java 方法&#xff0c;以便在应用程序在生产运行中启动时立即本地执行它们&#xff1b;提前解析常量池条目可以让 AOT 编译器生成更好的代码&a…...

对于图片转3d人脸方面的研究

1.一个开源的可以运行的项目&#xff08;face3d/README.md at master yfeng95/face3d GitHub&#xff09; 在配置好环境后&#xff0c;让我们一个一个py文件运行它&#xff08;我将给出中文注释&#xff09; 1&#xff09;1_pipeline.py 将一个3d头像的mat文件转换为jpg…...

.NET C# 八股文 代码阅读(一)

.NET C# 八股文 代码阅读&#xff08;一&#xff09; 目录 .NET C# 八股文 代码阅读&#xff08;一&#xff09;1 两种获10000个数的方式&#xff0c;哪种效率更高&#xff1f;为什么&#xff1f;2 请说出以下代码AB谁先打印&#xff0c;AB打印的值分别为多少&#xff1f;3 关于…...

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示

Crow是一个轻量级、快速的C微框架&#xff0c;用于构建Web应用程序和RESTful API。 将处理前端页面的POST请求以添加数据的逻辑添加到 /submit 路由中&#xff0c;并添加了一个新的路由 / 用于返回包含输入框、按钮和表格的完整页面。当用户向表格添加数据时&#xff0c;JavaS…...

南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?

文章简介 论文名称&#xff1a;Traditional Meiyu–Baiu has been suspended by global warming 第一作者及单位&#xff1a;尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位&#xff1a;王会军&#xff08;院士|南京信息工程大学大气科学学院&#xff09; 文章发…...

程序员如何用ChatGPT解决常见编程问题:实例解析

引言 在现代编程的世界中&#xff0c;技术进步日新月异&#xff0c;程序员们面临着各种各样的挑战和问题。解决这些问题的过程中&#xff0c;找到合适的工具至关重要。ChatGPT作为一种先进的人工智能语言模型&#xff0c;能够帮助程序员迅速、高效地解决常见的编程问题。本文将…...

初识 SpringMVC,运行配置第一个Spring MVC 程序

1. 初识 SpringMVC&#xff0c;运行配置第一个Spring MVC 程序 文章目录 1. 初识 SpringMVC&#xff0c;运行配置第一个Spring MVC 程序1.1 什么是 MVC 2. Spring MVC 概述2.1 Spring MVC 的作用&#xff1a; 3. 运行配置第一个 Spring MVC 程序3.1 第一步&#xff1a;创建Mave…...

STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门

STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 在以往的嵌入式学习中&#xff0c;我们最常用的就是裸机开发&#xff0c;所谓裸机开发就是指在没有操作系…...

杭州代理记账报税全程托管专业实力全面指南

杭州代理记税报税服务可以为企业提供全程托管财务管理解决方案&#xff0c;确保企业的财务工作专业、高效、合规。以下是杭州代理记税报税服务全面指南&#xff1a; https://www.9733.cn/news/detail/185.html 一、代理记账报税服务的内容 基础服务&#xff1a; 每日记&#xf…...

PHP 界的扛把子 Swoole 异步通信利器

大家好&#xff0c;我是码农先森。 引言 我今天主要介绍的内容是包括但不仅限于 Swoole &#xff0c;也有一部分 Go 语言的内容。 为什么要介绍 Swoole ? 先说一说背景吧&#xff0c;我们项目组之前要为《香港 01》开发一个积分系统的项目&#xff0c;这个系统的主要功能包…...

40.连接假死-空闲检测-发送心跳

连接假死情况 1.网络设备出现故障,例如网卡,机房等。底层的TCP连接已经断开,但应用程序没有感知到,仍然占着资源。 2.公网网络不稳定,出现丢包。若果连续出现丢包,这时现象就是客户端数据发不出去,服务端也一直收不到数据,就这么一直耗着。 3.应用程序线程阻塞,无法…...

hdfs高可用文件系统架构

1、整体架构 2、角色简介 2.1、namenode NameNode 是 HDFS 集群中的核心组件&#xff0c;负责管理文件系统的元数据、处理客户端请求、管理数据块、确保数据完整性和高可用性。由于其重要性&#xff0c;NameNode 的性能和可靠性直接影响整个 HDFS 集群的性能和可靠性。在生产…...

从官方源码精简出第1个FreeRTOS程序

一、下载官方源码 1、打开百度搜索freerots&#xff0c;找到官网:FreeRTOS官网 2、将源码解压到没有中文目录的路径下 二、删减目录 1、删除FreeRTOS-Plus和tools 2、删除FreeRTOS/Demo下除CORTEX_STM32F103_Keil外的所有文件 3、删除FreeRTOS\Source\portable下除RVDS和MemM…...

谷歌上搞下来的,无需付费,可以收藏!

在数字化时代&#xff0c;我们越来越依赖于智能设备来获取信息和知识。中国智谋App正是这样一款应用&#xff0c;它将中国古代的智慧与谋略书籍带入了我们的移动设备&#xff0c;让我们能够随时随地学习和领悟。而且提供文言文的原文和译文。 软件下载方式&#xff1a;谷歌上搞…...

宿主机无法通过ip连接wsl2解决方案

文章目录 原因排查网络模式win11防火墙关闭wsl ubuntu防火墙 如果之前能连接现在连接不上可以参考该方案 原因排查 网络模式win11防火墙(win11新增了Hyper-V防火墙)wsl2 ubuntu防火墙 网络模式 wsl2的默认网络模式是NAT&#xff0c;建议修改为镜像模式。在C:\Users\<User…...

Ruby编程语言学习

学习Ruby编程语言&#xff0c;你可以按照以下步骤进行&#xff1a; ### 1. 基础知识入门 #### 安装Ruby - 访问Ruby官网&#xff08;https://www.ruby-lang.org/&#xff09;下载适合你操作系统的版本。 - 对于Linux用户&#xff0c;可以使用包管理器安装。 #### 学习资源 -…...