Bootstrap

Python- 初级游戏 关灯游戏

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

下面是关灯游戏代码

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()

运行界面

(红色为关灯 ,黄色为开灯)(可修改)

;