Pygam Lección 4 - Monitoreo de color (juego de laberinto)

Prefacio: Aprendimos en las primeras tres lecciones, creación de ventanas, carga de imágenes, eventos comunes del mouse, etc. Hoy aprendemos a monitorear el color y hacemos un juego de laberinto. Vamos a ver

Las tres lecciones anteriores están aquí, recuerde prestarles atención:

inserte la descripción de la imagen aquí

demostración de vídeo

inserte la descripción de la imagen aquí

1. Construcción de la interfaz

  • Imagen de fondo (800x600):
    inserte la descripción de la imagen aquí

En la última lección aprendimos sobre los eventos del mouse, y en esta lección aprenderemos sobre los eventos de los botones.

Uso de código para evento clave:

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:
		        按下下键执行的代码块
		   ...
		   ...
		   ...
  • Eventos clave comunes
Pygame.K_LEFT botón izquierdo
pygame.K_RIGHT botón derecho del ratón
pygame.K_UP tecla arriba
pygame.K_DOWN tecla abajo

Detección de color:

sc.get_at((x,y))
sc: objeto de ventana
get_at((x,y)), la función es una tupla, que indica el color de las coordenadas actuales, y el valor devuelto por el color es (r,g,b )

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

análisis lógico:

  • 1. Use la imagen posterior del laberinto como fondo de ventana (800x600)
  • 2. Use el código de dibujo de círculos de la lección anterior para dibujar un círculo pequeño
  • 3. Obtener las coordenadas de los cuatro vértices del círculo pequeño
  • 4. Determina el color de las coordenadas de los cuatro vértices del círculo pequeño, si toca la línea negra. Si devuelve (0,0,0), significa que el juego está perdido; si toca el cuadro verde en el punto final, significa que el juego gana.

Monitoreo continuo e intervalo de tiempo de llaves

Si no escribes esta línea, la pelota no podrá seguir moviéndose

pygame.key.set_repeat(1,10)

Código de la versión completa:

# 完整代码
# 请完成迷宫游戏
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()

espero que todos tengan que ayudar

Un pequeño programador dedicado a la ofimática#

He visto esto, sigue + me gusta + marcador = ¡no te pierdas! !

Si desea saber más sobre la automatización de oficinas de Python, ¡preste atención!

Supongo que te gusta

Origin blog.csdn.net/weixin_42636075/article/details/130804267
Recomendado
Clasificación