pygam第4课——颜色监测(迷宫小游戏)

前言:前三节课我们学习了,窗口的创建、图片的加载、常用鼠标事件的等。今天我们学一个颜色的监测,并自制一个迷宫小游戏。那我们一下来看看吧

前面的三节课在这里,大家记得关注收藏一下:

在这里插入图片描述

视频演示

在这里插入图片描述

1、界面搭建

  • 背景图片(800x600):
    在这里插入图片描述

上一节课我们学习了,鼠标事件,这一节课我们学习一下按键事件

按键事件的代码用法:

while True:
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
		        exit()
		if event.type == pygame.KEYDOWN:
		    if event.key == pygame.K_LEFT:
		        按下左键执行的代码块
		    elif event.key == pygame.K_RIGHT:
		        按下右键执行的代码块
		    elif event.key == pygame.K_UP:
		        按下上键执行的代码块
		    elif event.key == pygame.K_DOWN:
		        按下下键执行的代码块
		   ...
		   ...
		   ...
  • 常见的按键事件
pygame.K_LEFT 左键
pygame.K_RIGHT 右键
pygame.K_UP 上键
pygame.K_DOWN 下键

颜色检测:

sc.get_at((x,y))
sc : 窗口对象
get_at((x,y)),函数里是一个元祖,表示当前坐标所处的颜色,颜色返回值为(r,g,b)

sc.get_at((x-9,y))

逻辑分析:

  • 1、以迷宫背图片为窗口背景(800x600)
  • 2、利用上节课的画圆形代码,绘制一个小圆
  • 3、获取小圆的四个顶点坐标
  • 4、判断小圆四个顶点坐标所处的颜色,如果碰到了黑线。返回(0,0,0),则表示游戏失败;如果碰到了终点的绿色方框,则表示游戏胜利。

按键的持续监测与间隔时间

如果不写这一行,小球将无法持续运动

pygame.key.set_repeat(1,10)

完整版代码:

# 完整代码
# 请完成迷宫游戏
import pygame,sys
import time
pygame.init()
#2_2 :设置持续按键时间间隔
pygame.key.set_repeat(1,10)
#设定好颜色变量,方便下面使用
red = (255,0,0)
black = (0,0,0)
green = (0,255,0)
# 3_2:设置变量,判断是否胜利
win = False
#知识进阶,计算时间
mytime1 = time.time()
# 1:创建窗口、贴上小球
sc = pygame.display.set_mode((860,660))
bg = pygame.image.load("./image/maze.png")
title = pygame.display.set_caption("迷宫")
sc.blit(bg,(0,0))
#由于小球的位置是会变化的,所以要线设置变量
# x = 760 作弊坐标
# y = 600 作弊坐标

x = 25
y = 25

# replay = input("xxxxxxxxxxxxxxxxxxxxx")
def gong(x,y):
    while True:
        sc.blit(bg,(0,0))
        pygame.draw.circle(sc,red,(x,y),8)
        pygame.display.update( )
        # 2_1:获取键盘事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                    exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x-=1
                elif event.key == pygame.K_RIGHT:
                    x+=1
                elif event.key == pygame.K_UP:
                    y-=1
                elif event.key == pygame.K_DOWN:
                    y+=1
        # 3_1 : 侦测颜色,判断输赢
        if sc.get_at((x-9,y))==black or sc.get_at((x+9,y))==black or sc.get_at((x,y+9))==black or sc.get_at((x,y-9))==black:
            # 3_2:设置变量,判断是否胜利
            win = False
            break
        if sc.get_at((x-9,y))==green or sc.get_at((x+9,y))==green or sc.get_at((x,y+9))==green or sc.get_at((x,y-9))==green:
            win = True

            break
gong(x,y)
#3_3 判断胜利或失败
while True:
    if win == True:
        mytime2 = time.time()
        mytime = int(mytime2-mytime1)
        print("恭喜,你逃出了迷宫,用时:%s秒"%mytime)
        replay = input("你想再玩一遍吗?(y or n )")
        if replay == "y":
            gong(x,y)
        else:
            print("退出游戏")
            sys.exit()
    else:
        print("真遗憾,你输了")
        replay = input("你想再玩一遍吗?(y or n )")
        if replay == "y":
            gong(x,y)
        else:
            print("退出游戏")
            sys.exit()

希望对大家有帮助

致力于办公自动化的小小程序员一枚#

都看到这了,关注+点赞+收藏=不迷路!!

如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!

猜你喜欢

转载自blog.csdn.net/weixin_42636075/article/details/130804267
今日推荐