游戏规则:玩家通过单击关掉(或打开)一盏灯。如果关掉(或打开)一个电灯,其周围(上下左右)的电灯也会触及开关,成功地关掉所有的电灯即可通关
下面是关灯游戏代码
from tkinter import *
from tkinter.messagebox import *
over=[['wu','wu','wu','wu','you'],
['wu','you','wu','wu','you'],
['you','wu','wu','wu','you'],
['you','wu','wu','you','wu'],
['you','wu','wu','wu','wu']]
def fun(): #灯的初始状态
for i in range(5):
for j in range(5):
if over[i][j]=='you':
cv.create_oval(20+j*52, 30+i*48, 72+j*52, 78+i*48, outline='white', fill='yellow') #亮灯为黄色
elif over[i][j]=='wu':
cv.create_oval(20+j*52, 30+i*48, 72+j*52, 78+i*48, outline='white', fill='red') #熄灯为红色
def victory(): #判断是否胜利
a=0
for i in range(5):
for j in range(5):
if over[i][j]=='wu':
a+=1
if a==25:
showinfo(message="恭喜你胜利了!")
def ovredel(x,y): #将灯的状态反转
if over[x][y]=='wu':
over[x][y]='you'
else:
over[x][y]='wu'
def ovre(event): #获得坐标及翻转周围的灯
y=(event.x-25)//50
x=(event.y-25)//50
if x<0 or y<0:
x=y=0
print(x,y)
ovredel(x,y)
if x!=0:
ovredel(x-1,y)
if x!=4:
ovredel(x+1,y)
if y!=0:
ovredel(x,y-1)
if y!=4:
ovredel(x,y+1)
victory()
fun()
con=Tk()
con.geometry("300x300")
con.title("关灯-界面")
cv=Canvas(con,width=300,height=300)
for i in range(0,6): #绘制方框
line=cv.create_line(20,30+i*48,280,30+i*48,arrow='none') #横向
leni=cv.create_line(20+i*52,30,20+i*52,270,arrow='none') #纵向
fun()
cv.bind("<Button-1>",ovre)
cv.pack()
con.mainloop()
运行界面
(红色为关灯 ,黄色为开灯)(可修改)