python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...
文章目录
用python开发一个有趣的猜数字小游戏
用于字符串的格式化,通过 {} 和 : 来代替以前的 %
1、 python的GUI编程
1.1 pythonGUI常用库对比
Python 提供了多个(GUI)图形开发界面的库,几个常用 Python GUI 库如下:
Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 ,可良好地运行在绝大多数平台中。Tkinter 是内置到 python 的安装包中,只要安装好 Python 之后就能 import Tkinter 库,而且 IDLE 也是用 Tkinter 编写而成,对于简单的图形界面 Tkinter 还是能应付自如。
wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。
1.2 tkinter组件
1.2.1 tkinter组件列表
1.2.1 tkinter组件共同标准属性
1.2.1 tkinter组件位置管理方法
2、 游戏代码详细解释
# -*- coding: utf-8 -*
import tkinter as tk
import tkinter.messagebox
import random
import re
from PIL import ImageTk, Image **#1、导入需要用到的模块**
game = tk.Tk() **#2、生成主窗口**
game.geometry('400x200') # 设定主窗口大小
game.title('欢迎来到猜数字小游戏') #设定主窗口的标题
answer = random.randint(1, 20) #随机产生正确答案,该答案在猜测数字过程中不能改变,因此必须设置为全局变量
label1 = tk.Label(game, fg ='RoyalBlue',text="游戏规则:系统随机生成1到20之间的一个数,请你猜这个数。"
"如果猜中系统将会提示你猜测成功,不幸如果猜错,"
"系统将会提示你猜大或者猜小,至你猜出正确答案为止,祝你玩得开心!",
wraplength=250,justify='center',font = ('微软雅黑',10))
**#3、组件建立。建立第一个标签,说明游戏规则**
# bg:标签中文本的颜色
# fg:标签中文本的背景色
# text:标签中文本内容
# wraplength:指定多少单位后开始换行(经测试默认字体情况下,一个汉字或中文标点的长度大约wraplength=12单位,
# 一个英文字符(字母,标点等)占6~9个单位,)根据文本中的字符占位,设置wraplength个单位后,字符换行
# justify:指定多行的对齐方式,必须是 left, right, or center
#font:文本字体设置
label1.grid(row=0,columnspan=2,rowspan=2,padx=20, pady=8) **#使用grid函数对组件进行布局**
#Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列
#row:指定组件所在行数,从0开始,0代表第一列
#column:没有写,默认为0
#columnspan:表示这个组件占据的列数,columnspan=2表示占据两列
#rowspan:同理
#padx:设置控件周围水平方向空白区域保留大小
#pady:同理
label2 = tk.Label(game, text='请输入你猜测的数字:',bg='LightSeaGreen',font = ('微软雅黑',10)) **#建立第二个标签,提示输入**
label2.grid(row=2,column=0,sticky='w',padx=5)
#sticky:默认的控件在窗口中的对齐方式是居中。使用sticky选项指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果。
text = tk.Entry(game, width=20) **#建立一个Entry文本框**
# Entry和Text文本部件的区别:
# Entry:用于接受用户Entry小窗口部件单行文本字符串
# Text:文本小部件提供先进的功能,可以编辑多行文本格式,如改变颜色和字体样式
text.grid(row=2,column=1,sticky='w')
pilImage = Image.open("pig.jpg")
tkImage = ImageTk.PhotoImage(image=pilImage)
#ImageTk.PhotoImage:创建一个Tkinter兼容的照片图像(photo image)
label3 = tk.Label(image=tkImage) **#建立一个标签,用于放图片**
label3.grid(row=0,rowspan=2,column=2, pady=10)
def hit(): **#定义一个函数,在鼠标触发确定按钮时实现该函数**
guess_number = text.get() #使用get函数获取文本框中的内容
if guess_number =='' :
tk.messagebox.showerror("警告", "Oh!输入不能为空")
if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字
tk.messagebox.showerror("警告", "Oh!只能输入一个数字")else:
guess_number = int(float(guess_number))
if guess_number > answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")
if guess_number < answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")
if guess_number == answer:
tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")
**# 建立一个按钮**
button2 = tkinter.Button(game, text='确定', command=hit,width=10,bg='RoyalBlue',font = ('微软雅黑',10))
#command:通过按钮触发hit函数
button2.grid(row=2,column=2,sticky='s',padx=8, pady=8)
# 使用mainloop进入事件(消息)循环。
game.mainloop()
3、 纯净可运行版代码和程序实现界面
# -*- coding: utf-8 -*
import tkinter as tk
import tkinter.messagebox
import random
import re
from PIL import ImageTk, Image #导入需要用到的模块
game = tk.Tk() # 生成主窗口
game.geometry('400x200')
game.title('欢迎来到猜数字小游戏')
answer = random.randint(1, 20)
label1 = tk.Label(game, fg ='Teal',text="游戏规则:系统随机生成1到20之间的一个数,请你猜这个数。"
"如果猜中系统将会提示你猜测成功,不幸如果猜错,"
"系统将会提示你猜大或者猜小,至你猜出正确答案为止,祝你玩得开心!",
wraplength=250,justify='center',font = ('微软雅黑',10))
label1.grid(row=0,padx=20, pady=8,columnspan=2,rowspan=2)
label2 = tk.Label(game, text='请输入你猜测的数字:',bg='LightSeaGreen',font = ('微软雅黑',10))
label2.grid(row=2,column=0,sticky='w',padx=5)
text = tk.Entry(game, width=20)
text.grid(row=2,column=1,sticky='w')
pilImage = Image.open("pig.jpg")
tkImage = ImageTk.PhotoImage(image=pilImage)
label3 = tk.Label(image=tkImage)
label3.grid(row=0,rowspan=2,column=2, pady=10)
def hit(): #定义一个函数,在鼠标触发确定按钮时实现该函数
guess_number = text.get() #通过get函数获取文本框中的内容
if guess_number =='' :
tk.messagebox.showerror("警告", "Oh!输入不能为空")
else:
if not re.findall('[0-9]+',str(guess_number)):
tk.messagebox.showerror("警告", "Oh!只能输入数字")
else:
guess_number = int(float(guess_number))
if guess_number > answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")
if guess_number < answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")
if guess_number == answer:
tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")
button2 = tkinter.Button(game, text='确定', command=hit,width=10,bg='RoyalBlue',font = ('微软雅黑',10))
button2.grid(row=2,column=2,sticky='s',padx=8, pady=8)
game.mainloop()
运行效果:
当输入为空时:
当输入非数字文本时:
当输入的数字为小数时:
猜对时:
4、 tips(遇到的问题和规律总结)
4.1、 随机数产生
import random
answer = random.randint(1, 20)
4.2、 弹出不同类型的消息框
if guess_number =='' :
tk.messagebox.showerror("警告", "Oh!输入不能为空")
if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字
tk.messagebox.showerror("警告", "Oh!只能输入一个数字")else:
guess_number = int(float(guess_number))
if guess_number > answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")
if guess_number < answer:
tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")
if guess_number == answer:
tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")
4.3、 确保只接受数字输入
if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字
tk.messagebox.showerror("警告", "Oh!只能输入一个数字")
4.4、 GUI插入图片
pilImage = Image.open("pig.jpg")
tkImage = ImageTk.PhotoImage(image=pilImage)
#ImageTk.PhotoImage:创建一个Tkinter兼容的照片图像(photo image)
label3 = tk.Label(image=tkImage)
label3.grid(row=0,rowspan=2,column=2, pady=10)
4.5、 获取文本框内容实现信息交互
text = tk.Entry(game, width=20)
text.grid(row=2,column=1,sticky='w')
guess_number = text.get()
4.6、 Grid网格布局管理器
4.7、 点击按钮触发事件
button2 = tkinter.Button(game, text=‘确定’, command=hit,width=10,bg=‘RoyalBlue’,font = (‘微软雅黑’,10))
#command:通过按钮触发hit函数
在command指定的函数里进行触发后操作的声明
python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...相关推荐
- 教你如何用C语言设计一个有趣的猜数字小游戏
目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...
- 简单有趣的猜数字小游戏
用c语言设计一款猜数字小游戏,只需四步就能轻松搞定! 第一步.生成1~100的随机数 1.该如何生成随机数呢? 首先我们先一步到位,上个截图 图1 1.1.srand C语⾔中提供了⼀个函数叫 sra ...
- Python:有趣的猜数字小游戏
目录 程序要求 程序源代码 random模块使用 if--elif--else语句介绍 print()的作用 格式化字符(format方法) time模块介绍 结语 程序要求 1.系统将随机生成一个1 ...
- JS_小工具_自己写了一个画像素画的小工具
自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...
- 送女朋友的java小程序_用C编写一个送给女朋友的情人节小程序 可爱!
本文实例为大家分享了C编写送给女朋友的小程序,供大家参考,具体内容如下 #include #include #include #include #include using namespace std ...
- python猜数字小游戏制作
教大家做一个简易的猜数字的游戏,但确实蛮简单的,我这个四年级的小盆友也才学了一天,所以给那些不会的教一下. 我们先来看导入模块: """ 简易python猜数小游戏&qu ...
- 【c语言】和【Java】版本的猜数字小游戏
目录 前言 一.c语言版本 1.游戏设计思路 2.rand()及srand()函数的使用 2.取模确定取值范围 3.条件运算符 4.利用二分法进行猜测 二.java版本 1.Math.random() ...
- 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏
题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...
- python编写一个简单的猜数字小游戏
该脚本包含了python基础的部分内容,python初学者既可以学习借鉴,也可以向朋友去装13. 本次编写的内容需要导入一个第三方模块random,可获得规定范围的随机数. 首先打开pycharm中下 ...
最新文章
- Ubuntu 13.10 安装Terminalx 后更改默认终端设置
- HDU 2573 HDOJ 2573 Typing ACM 2573 IN HDU
- js中两个对象的比较
- 简易的bbs论坛开发过程上(后台开发)
- 音视频技术开发周刊(第120期)
- ORACLE基础应用学习-- 各种故障的恢复方法总结
- 阿里云服务器被[kthreaddi]挖矿病毒攻击
- python中的zip模块
- ios定位权限plist_iOS-info.plist 中添加定位权限
- Java PipedInputStream receive()方法与示例
- 【华为云实战开发】4.如何使用TortoiseGit进行云端代码托管
- 这份字节、阿里内部秘传的面经,被我搞到手了……
- 属性绑定v-bind指令
- 第三方支付接口开发原理
- 红蓝军模拟对抗三维电子沙盘开发教程第十课 wpf建立3D GIS数字地球
- 74HC595级联电路编程篇(三)
- 谈谈小程序的赚钱方式
- 1053: 正弦函数 C语言
- 从苏宁电器到卡巴斯基(第二部)第03篇:我在卡巴的日子 III
- 使用Nmap对靶机进行信息收集以及Nessus的安装并对靶机进行的漏洞扫描