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

运行界面

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

  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值