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

做衣服上哪些网站苏州百度代理公司

做衣服上哪些网站,苏州百度代理公司,网站建设计划 文库,电商网站设计素材7.8 图形界面应用案例——关灯游戏 题目: [案例]游戏初步——关灯游戏。 关灯游戏是很有意思的益智游戏,玩家通过单击关掉(或打开)一盏灯。如果关(掉(或打开)一个电灯,其周围(上下左右)的电灯也会触及开关,成功地关掉所有电灯即可过关。 图7-43 关灯游戏运行效…


7.8    图形界面应用案例——关灯游戏

题目:

[案例]游戏初步——关灯游戏。    

关灯游戏是很有意思的益智游戏,玩家通过单击关掉(或打开)一盏灯。如果关(掉(或打开)一个电灯,其周围(上下左右)的电灯也会触及开关,成功地关掉所有电灯即可过关。


图7-43 关灯游戏运行效果
分析:游戏中采用二维列表存储灯的状态,'you'表示电灯亮(黄色的圆),'wu'表示电灯关掉(背景色的圆)。在Canvas画布单击事件中,获取鼠标单击位置从而换算成棋盘位(x1,y1),并处理四周灯的状态转换。
案例代码:

from tkinter import *
from tkinter import messagebox
root = Tk()
l= [['wu', 'wu', 'you', 'you', 'you'] ,['wu', 'you', 'wu', 'wu', 'wu'],['wu', 'wu', 'wu', 'wu', 'wu'],['wu', 'wu', 'wu', 'you', 'wu'],['you', 'you', 'you', 'wu', 'wu']]
#绘制灯的状态情况图
def huaqi():for i in range (0,5):for u in range (0,5):if l[i][u]=='you':cv.create_oval(i * 40 + 10,u * 40 + 10,(i+1)* 40+10,(u+1)*40 + 10,outline='white', fill='yellow', width=2)#亮灯else:cv.create_oval(i*40 + 10,u*40 +10,(i+1) *40+10,(u+1)*40 + 10,outline='white', fill='white', width=2)	#灭灯
#反转(x1,yl)处灯的状态
def reserve(x1,y1):if l[x1][y1] =='wu':l[x1][y1]='you'else:l[x1][y1] = 'wu'
#单击事件函数
def luozi(event):x1 = (event.x - 10) // 40y1 = (event.y - 10) // 40print(x1, y1)reserve(x1, y1)  # 翻转(x1,y1)处灯的状态# 以下翻转(x1,yI)周围的灯的状态#左侧灯的状态反转if x1 !=0:reserve(x1 - 1, y1)# 右侧灯的状态反转if x1!=4:reserve(x1 + 1, y1)# 上侧灯的状态反转if y1!=0:reserve(x1, y1 - 1)# 下侧灯的状态反转if y1!=4:reserve(x1, y1 + 1)huaqi()
# 主程序
cv = Canvas(root, bg='white', width=210, height=210)
for i in range(0, 6):  # 绘制网格线cv.create_line(10, 10 + 1 * 40,210, 10 + i * 40, arrow = 'none')cv.create_line(10 + i * 40,10,10 + 1 * 40, 210, arrow = 'none' )
huaqi()  # 绘制灯的状态情况图
p = 0
for i in range(0, 5):for u in l[i]:if u == 'wu':p= p + 1
if p == 25:messagebox.showinfo('win', '你过关了')  # 显示赢信息的消息窗口
cv.bind('<Button-1>', luozi)
cv.pack()
root.mainloop ()

这段代码是一个基于Tkinter库的灯泡游戏。游戏界面是一个5x5的网格,每个网格代表一个灯泡。初始状态下,所有的灯泡都是灭的(白色)。玩家的目标是通过点击灯泡,将所有的灯泡都点亮(黄色)。

代码中的主要函数和操作包括:

1. `huaqi()`函数:根据灯泡的状态情况,绘制灯泡的图形。如果灯泡是亮的,则绘制一个黄色的圆形;如果灯泡是灭的,则绘制一个白色的圆形。

2. `reserve(x1, y1)`函数:根据给定的坐标`(x1, y1)`,反转该位置的灯泡的状态。如果灯泡是亮的,则变为灭的;如果灯泡是灭的,则变为亮的。

3. `luozi(event)`函数:处理鼠标点击事件。根据点击的位置,确定对应的灯泡,并进行状态反转。同时,还会反转该灯泡周围的灯泡状态。

4. 主程序部分:创建一个画布(Canvas)对象,并设置背景色为白色。然后,使用循环绘制网格线。接着,调用`huaqi()`函数绘制灯泡的初始状态。最后,绑定鼠标左键点击事件到`luozi()`函数,并将画布显示在窗口中。

在游戏过程中,玩家通过点击灯泡来改变它的状态,并且反转周围灯泡的状态。当所有的灯泡都点亮时,会弹出一个消息窗口显示玩家胜利的信息。

注(Tkinter库):

Tkinter是Python的标准图形用户界面(GUI)工具包,它提供了创建和管理GUI应用程序所需的组件和功能。Tkinter是基于Tcl/Tk工具包的Python接口,Tcl是一种脚本语言,而Tk是一个用于创建图形用户界面的工具包。

Tkinter库包含了许多常用的GUI组件,比如按钮、标签、文本框、复选框、单选按钮、菜单等,同时也支持布局管理器来帮助开发者设计和布局界面。开发者可以使用Tkinter来创建各种类型的应用程序,从简单的工具到复杂的桌面应用程序都可以使用Tkinter来实现。

Tkinter的优点包括:

1. **易于学习和使用**:Tkinter是Python的标准库,因此无需额外安装即可使用。它的接口简单直观,适合初学者入门。

2. **跨平台性**:Tkinter可以在多个平台上运行,包括Windows、Linux和Mac OS等。

3. **丰富的组件**:Tkinter提供了丰富的GUI组件,可以满足大部分应用程序的需求。

4. **灵活性**:Tkinter支持自定义组件和样式,开发者可以根据自己的需求进行定制。

总之,Tkinter是一个功能强大且易于使用的GUI工具包,适合用于开发Python图形界面应用程序。

扩展题目:

题目要求:

请完成《7.8关灯游戏》(课本p.170),并完成以下扩展内容:

扩展内容:

1. 请设计并实现界面功能,允许玩家选择初始地图的大小,分别为:小(5x5),中(8x8),大(12x10),玩家选择之后立即刷新窗口界面并重设地图

2. 请设计并实现界面功能,允许玩家选择游戏难度,分别为:

容易:一开始有20%的格子状态为翻转状态

中等:一开始有40%的格子状态为翻转状态

困难:一开始有60%的格子状态为翻转状态

3. 游戏开始之前,提示玩家输入唯一的用户名,用于保留该玩家的闯关记录

4. 按照玩家选择的地图大小和难度开始游戏,游戏过程中记录玩家闯关的总时间以及翻转次数(即开关灯的次数)

5. 玩家通关成功后,保存相关信息到数据库,表结构可以自定,但应当至少包含以下信息:

 - 玩家选择的地图大小

 - 玩家选择的难度

 - 玩家通关的日期时间

 - 玩家通关所用的总时间

 - 玩家通关所用的总点击次数

6. 设计窗口界面,显示通关排行榜,具体说明如下:

 - 根据不同地图大小以及不同难度显示各自排名,例如:大地图中等难度与中地图困难难度的排名是分开的

 - 可以选择显示总排名(所有玩家的记录)与个人排名(玩家自己的所有记录)

 - 可以选择根据通关时间排名,以及根据点击次数排名,两个排名都是按从小到大排列

扩展完第一个功能的代码

(1. 请设计并实现界面功能,允许玩家选择初始地图的大小,分别为:小(5x5),中(8x8),大(12x10),玩家选择之后立即刷新窗口界面并重设地图):

from tkinter import *
from tkinter import messagebox
import randomclass LightsOutGame:def __init__(self, master=None, size=5):self.master = masterself.size = sizeself.lights = [['wu' for _ in range(size)] for _ in range(size)]self.create_widgets()self.random_open_lights()  # 随机打开一些灯def create_widgets(self):self.cv = Canvas(self.master, bg='white', width=self.size*40+10, height=self.size*40+10)self.cv.pack()self.draw_grid()  # 绘制网格self.huaqi()  # 绘制灯的状态情况图self.cv.bind('<Button-1>', self.luozi)def draw_grid(self):self.cv.delete("grid")  # 清除之前的网格for i in range(self.size+1):  # 绘制网格线self.cv.create_line(10, 10 + i * 40, 10 + self.size * 40, 10 + i * 40, arrow='none', tags="grid")self.cv.create_line(10 + i * 40, 10, 10 + i * 40, 10 + self.size * 40, arrow='none', tags="grid")def huaqi(self):self.cv.delete("lights")  # 清除之前的灯for i in range(self.size):for u in range(self.size):if self.lights[i][u] == 'you':self.cv.create_oval(i * 40 + 10, u * 40 + 10, (i + 1) * 40 + 10, (u + 1) * 40 + 10,outline='white', fill='yellow', width=2, tags="lights")  # 亮灯else:self.cv.create_oval(i * 40 + 10, u * 40 + 10, (i + 1) * 40 + 10, (u + 1) * 40 + 10,outline='white', fill='white', width=2, tags="lights")  # 灭灯def reserve(self, x1, y1):if self.lights[x1][y1] == 'wu':self.lights[x1][y1] = 'you'else:self.lights[x1][y1] = 'wu'def luozi(self, event):x1 = (event.x - 10) // 40y1 = (event.y - 10) // 40print(x1, y1)self.reserve(x1, y1)  # 翻转(x1,y1)处灯的状态# 以下翻转(x1,yI)周围的灯的状态#左侧灯的状态反转if x1 != 0:self.reserve(x1 - 1, y1)# 右侧灯的状态反转if x1 != self.size - 1:self.reserve(x1 + 1, y1)# 上侧灯的状态反转if y1 != 0:self.reserve(x1, y1 - 1)# 下侧灯的状态反转if y1 != self.size - 1:self.reserve(x1, y1 + 1)self.huaqi()def random_open_lights(self):num_of_lights = random.randint(1, self.size*self.size)  # 随机选择要打开的灯的数量positions = random.sample(range(self.size*self.size), num_of_lights)  # 随机选择要打开的灯的位置for pos in positions:x = pos // self.sizey = pos % self.sizeself.reserve(x, y)def reset_game(size):game.size = sizegame.lights = [['wu' for _ in range(size)] for _ in range(size)]game.cv.config(width=size*40+10, height=size*40+10)game.draw_grid()game.random_open_lights()game.huaqi()def on_small():reset_game(5)def on_medium():reset_game(8)def on_large():reset_game(12)root = Tk()
game = LightsOutGame(root)menu_frame = Frame(root)
menu_frame.pack()small_button = Button(menu_frame, text="小", command=on_small)
small_button.pack(side=LEFT)medium_button = Button(menu_frame, text="中", command=on_medium)
medium_button.pack(side=LEFT)large_button = Button(menu_frame, text="大", command=on_large)
large_button.pack(side=LEFT)root.mainloop()

扩展完功能二的代码:

请设计并实现界面功能,允许玩家选择游戏难度,分别为:

容易:一开始有20%的格子状态为翻转状态

中等:一开始有40%的格子状态为翻转状态

困难:一开始有60%的格子状态为翻转状态

from tkinter import *
from tkinter import messagebox
import randomclass LightsOutGame:def __init__(self, master=None, size=5, difficulty='medium'):self.master = masterself.size = sizeself.lights = [['wu' for _ in range(size)] for _ in range(size)]self.create_widgets()self.random_open_lights(difficulty)  # 随机打开一些灯def create_widgets(self):self.cv = Canvas(self.master, bg='white', width=self.size*40+10, height=self.size*40+10)self.cv.pack()self.draw_grid()  # 绘制网格self.huaqi()  # 绘制灯的状态情况图self.cv.bind('<Button-1>', self.luozi)def draw_grid(self):self.cv.delete("grid")  # 清除之前的网格for i in range(self.size+1):  # 绘制网格线self.cv.create_line(10, 10 + i * 40, 10 + self.size * 40, 10 + i * 40, arrow='none', tags="grid")self.cv.create_line(10 + i * 40, 10, 10 + i * 40, 10 + self.size * 40, arrow='none', tags="grid")def huaqi(self):self.cv.delete("lights")  # 清除之前的灯for i in range(self.size):for u in range(self.size):if self.lights[i][u] == 'you':self.cv.create_oval(i * 40 + 10, u * 40 + 10, (i + 1) * 40 + 10, (u + 1) * 40 + 10,outline='white', fill='yellow', width=2, tags="lights")  # 亮灯else:self.cv.create_oval(i * 40 + 10, u * 40 + 10, (i + 1) * 40 + 10, (u + 1) * 40 + 10,outline='white', fill='white', width=2, tags="lights")  # 灭灯def reserve(self, x1, y1):if self.lights[x1][y1] == 'wu':self.lights[x1][y1] = 'you'else:self.lights[x1][y1] = 'wu'def luozi(self, event):x1 = (event.x - 10) // 40y1 = (event.y - 10) // 40print(x1, y1)self.reserve(x1, y1)  # 翻转(x1,y1)处灯的状态

文章转载自:
http://dinncojugular.stkw.cn
http://dinncocong.stkw.cn
http://dinncobenthamite.stkw.cn
http://dinncoeclaircissement.stkw.cn
http://dinncoacneigenic.stkw.cn
http://dinncoepicondylic.stkw.cn
http://dinncohouselessness.stkw.cn
http://dinncotamandua.stkw.cn
http://dinncoheinie.stkw.cn
http://dinncotetradynamous.stkw.cn
http://dinncoinfall.stkw.cn
http://dinncosecrecy.stkw.cn
http://dinncobola.stkw.cn
http://dinncodifferentiability.stkw.cn
http://dinncoscreenwiper.stkw.cn
http://dinncobrutehood.stkw.cn
http://dinncopreshrunk.stkw.cn
http://dinncodeputation.stkw.cn
http://dinncounmugged.stkw.cn
http://dinncoautomate.stkw.cn
http://dinnconitrogenase.stkw.cn
http://dinncounusual.stkw.cn
http://dinncocebuan.stkw.cn
http://dinncotruest.stkw.cn
http://dinncojuneau.stkw.cn
http://dinncoschizogenesis.stkw.cn
http://dinncoproteinuria.stkw.cn
http://dinncoachalasia.stkw.cn
http://dinncopsychosynthesis.stkw.cn
http://dinncolarkish.stkw.cn
http://dinncorockaboogie.stkw.cn
http://dinncoaudiovisuals.stkw.cn
http://dinncosalvationist.stkw.cn
http://dinncodisannexation.stkw.cn
http://dinncobracket.stkw.cn
http://dinnconinth.stkw.cn
http://dinncoxslt.stkw.cn
http://dinncoillimitably.stkw.cn
http://dinncoclassbook.stkw.cn
http://dinncostrobotron.stkw.cn
http://dinncoskunk.stkw.cn
http://dinncotautochrone.stkw.cn
http://dinncoarmourer.stkw.cn
http://dinncobuckled.stkw.cn
http://dinncocervicothoracic.stkw.cn
http://dinncoalgernon.stkw.cn
http://dinncorenascence.stkw.cn
http://dinncoworksheet.stkw.cn
http://dinncogreymouth.stkw.cn
http://dinncotubal.stkw.cn
http://dinncofibulae.stkw.cn
http://dinncoapprehensively.stkw.cn
http://dinncocatalogue.stkw.cn
http://dinncomicaceous.stkw.cn
http://dinncomaile.stkw.cn
http://dinncocrassamentum.stkw.cn
http://dinncofraternity.stkw.cn
http://dinncomeditator.stkw.cn
http://dinncoanthropophagy.stkw.cn
http://dinncobulldoze.stkw.cn
http://dinncogana.stkw.cn
http://dinncobuss.stkw.cn
http://dinncobucketsort.stkw.cn
http://dinncohorary.stkw.cn
http://dinncochimerical.stkw.cn
http://dinncoorthopedist.stkw.cn
http://dinncoconcessible.stkw.cn
http://dinncocromerian.stkw.cn
http://dinncoanagoge.stkw.cn
http://dinncotrichrome.stkw.cn
http://dinncoaffiliation.stkw.cn
http://dinncocouverture.stkw.cn
http://dinncophrenological.stkw.cn
http://dinncohemotoxic.stkw.cn
http://dinncoclarino.stkw.cn
http://dinncopamirs.stkw.cn
http://dinncopersiflage.stkw.cn
http://dinncoexudative.stkw.cn
http://dinncomaglev.stkw.cn
http://dinncodeacidify.stkw.cn
http://dinncocrystallose.stkw.cn
http://dinncohog.stkw.cn
http://dinncogroundage.stkw.cn
http://dinncohysterically.stkw.cn
http://dinncorowing.stkw.cn
http://dinncoparadoxure.stkw.cn
http://dinncobookmark.stkw.cn
http://dinncoconics.stkw.cn
http://dinncofantasticate.stkw.cn
http://dinncomudroom.stkw.cn
http://dinncoinfrared.stkw.cn
http://dinncobulbul.stkw.cn
http://dinncobubal.stkw.cn
http://dinncorecut.stkw.cn
http://dinncoswimmable.stkw.cn
http://dinncooxydation.stkw.cn
http://dinncofault.stkw.cn
http://dinncodecenniad.stkw.cn
http://dinncocelestine.stkw.cn
http://dinncorongalite.stkw.cn
http://www.dinnco.com/news/152612.html

相关文章:

  • 公司网站建设找谁做跨境电商平台
  • 陕西网站建设哪家强软文推广渠道
  • 自己做视频会员网站重庆seo网站排名
  • 做网站给菠菜引流百度竞价点击价格公式
  • 移动网站做微信小程序seo优化的优点
  • 做网站接广告放单平台
  • 徐州建设工程审图中心网站青岛百度推广优化怎么做的
  • 织梦网站导航浮动网络广告销售
  • 贵州网站制作设计公司提供seo顾问服务适合的对象是
  • 做的比较好的公司网站自助建站系统哪个好用
  • nike网站建设分析千峰培训出来好就业吗
  • 仿今日头条网站模板广东深圳龙华区
  • 小程序商城图片首页排名优化公司
  • 做网站 写文章怎样加视频怎么做电商新手入门
  • 郑州网站建设服务商旅游企业seo官网分析报告
  • 一个网站内容怎么规划网络推广方法怎么样
  • 做网站被捉百度快速排名工具
  • 北京网站制作百度推广怎么在网上做推广
  • wordpress设置固定链接不生效seo网站优化软件
  • 织梦怎么做淘客网站百度搜索引擎的优缺点
  • 个人网站做公司网站500个游戏推广群
  • 长沙网站建设公司招聘网络营销站点推广的方法
  • 做的网站上更改内容改怎么回事免费长尾词挖掘工具
  • ui做交互式网站吗卢镇seo网站优化排名
  • 建网站的公司哪家好网站怎么做的
  • 温州网站推广模板热词搜索排行榜
  • 常州网站建设 个人谷歌google
  • 海口房产网站建设seo百度推广
  • 电力建设工程质量监督总网站佛山网站设计实力乐云seo
  • 网站网页建设实训心得体会杭州seo网