私はraspi 3と単純な8x8 LEDマトリックスを手に入れました。それを使って遊んだ後、私はpygameのイベントで単純なスネークゲーム(その行列上に表示)をすることに決めました。私はpygameの以前の経験はありません。 LEDマトリックス以外にスクリーン/ディスプレイは接続されていません。SSH経由のPygameはキーストロークを登録しません(ラズベリーPi 3)
だから、最初の問題は、「pygame.error:ビデオシステムが初期化されていません」でした私は、それはENV変数設定することにより、固定しまったと思いますけれども、: os.putenv('DISPLAY', ':0.0')
を今、私はそれが私がそれを実行する作業しまったことを...とキーストロークが登録されていないので、何も起こりません。 Just this "junk", I don't know how to call it LEDマトリックスのドットが動いていません。ループのどこかでスネークの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のを使用することはできませんいずれかが、私はただの選択肢を知りません)。それがもっと簡単にできれば、私はそれをやり遂げてくれるでしょう。前もって感謝します!
あなたはPuTTYを使用しているようですか? X11転送を設定する方法については、[this](http://superuser.com/q/119792/152529)と[this](http://unix.stackexchange.com/q/12755)をご覧ください。方法。 – Kupiakos