所以我得到了 raspi 3 和简单的 8x8 LED 矩阵。在玩了一些之后,我决定用 pygame 的事件制作一个简单的蛇游戏(显示在该矩阵上),我之前没有 pygame 的经验。除了 LED 矩阵之外,没有连接任何屏幕/显示器。
所以最初的问题是“pygame.error:视频系统未初始化”,尽管我认为我通过设置环境变量解决了这个问题:os.putenv('DISPLAY', ':0.0')
现在我已经开始工作了,我运行它......但没有任何反应,就像没有注册任何击键一样。只是这个“垃圾”,我不知道如何称呼它 https://i.stack.imgur.com/ZwZEb.pngLED 矩阵上的点不动。如果我在循环中的某个位置改变蛇的 x 或 y 位置,它就会按预期移动。
我的代码:
#!/usr/bin/python2
import pygame
import max7219.led as led
from max7219.font import proportional, SINCLAIR_FONT, TINY_FONT, CP437_FONT
import numpy as nqp
import os
SIZE = (8, 8)
class Board:
def __init__(self, size, snake):
"Board object for snake game"
self.matrix = np.zeros(size, dtype=np.int8)
self.device = led.matrix()
self.snake = snake
def draw(self):
#add snake
self.matrix = np.zeros(SIZE, dtype=np.int8)
self.matrix[self.snake.x][self.snake.y] = 1
for x in range(8):
for y in range(8):
self.device.pixel(x, y, self.matrix[x][y], redraw=False)
self.device.flush()
def light(self, x, y):
"light specified pixel"
self.matrix[x][y] = 1
def dim(self, x, y):
"off specified pixel"
self.matrix[x][y] = 0
class Snake:
def __init__(self):
"Object representing an ingame snake"
self.length = 1
self.x = 3
self.y = 3
if __name__=="__main__":
os.putenv('DISPLAY', ':0.0')
pygame.init()
snake = Snake()
board = Board(SIZE, snake)
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
snake.y -= 1
elif event.key == pygame.K_DOWN:
snake.y += 1
elif event.key == pygame.K_LEFT:
snake.x -= 1
elif event.key == pygame.K_RIGHT:
snake.x += 1
board.draw()
我使用 pygame 因为我不知道其他任何东西(好吧,我也不能使用 pygame,但我只是不知道任何替代方案)。如果可以做得更简单,我会很乐意这样做。先感谢您!