我打算用gpio按钮用pygame制作游戏。这是代码:
from gpiozero import Button
import pygame
from time import sleep
from sys import exit
up = Button(2)
left = Button(3)
right = Button(4)
down = Button(14)
fps = pygame.time.Clock()
pygame.init()
surface = pygame.display.set_mode((1300, 700))
x = 50
y = 50
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if up.is_pressed:
y -= 5
if down.is_pressed:
y += 5
if left.is_pressed:
x -= 5
if right.is_pressed:
x += 5
surface.fill((0, 0, 0))
pygame.draw.circle(surface, (255, 255, 255), (x, y), 20, 0)
pygame.display.update()
fps.tick(30)
但是,当我按下窗口顶部的X按钮时,它不会关闭。有可能解决这个问题吗?
编辑:每个人都给出相同的答案,我没有添加for循环来检查事件并退出。我确实把它放在我的代码中:
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
我也试过sys.exit()
。
编辑2 :@Shahrukhkhan让我在for event in pygame.event.get():
循环中放置一个print语句,这样循环就像这样:
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
print "X pressed"
break
root@raspberrypi:~/Desktop# python game.py
X pressed
X pressed
答案 0 :(得分:1)
有两种方法可以关闭pygame窗口。
import sys
while 1:
.......
pygame.quit()
sys.exit()
2.而不是放置一个break语句,在as之后立即替换break for for循环
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
......
答案 1 :(得分:0)
你需要制作一个事件,你需要退出pygame
viewDidLoad