私はConwayのゲームの試合をシミュレートしています。私は色で四角形をマーキングすることにいくつか問題があります。私は四角形の行列を使用しています。私が四角形をクリックすると、値が0から1に変更されます。それはそのようなものです。 私はこのコードを最初に試してみましたが、問題は、クリックしたときに、マークが付けられていないマークからマークされたマークなどに急速に変更されたことでした。Conwayのライフゲームの試合で四角をマークすると、色が速く変わります。
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONUP:
if grid[y][x] == 0:
mouse_x,mouse_y = pygame.mouse.get_pos()
x = mouse_x // (size + 1)
y = mouse_y // (size + 1)
grid[y][x] = 1
elif grid[y][x] == 1:
mouse_x,mouse_y = pygame.mouse.get_pos()
x = mouse_x // (size + 1)
y = mouse_y // (size + 1)
grid[y][x] = 0
しかし、ここで問題が四角はもうマークされませんということです。私は他のコードを試してみたたより
if pygame.mouse.get_pressed()[0]:
if grid[y][x] == 0:
mouse_x,mouse_y = pygame.mouse.get_pos()
x = mouse_x // (size + 1)
y = mouse_y // (size + 1)
grid[y][x] = 1
elif grid[y][x] == 1:
mouse_x,mouse_y = pygame.mouse.get_pos()
x = mouse_x // (size + 1)
y = mouse_y // (size + 1)
grid[y][x] = 0
。
'pygame.mouse.get_pressed()'を含む解決策は、この種の問題を起こすでしょう。 2回目のコードは正しいアイデアです( 'MOUSEBUTTONUP'イベントは1回のクリックで1回だけ発生します)。実際にクリック位置から計算する前に' x'と 'y'を使用しているため、おそらく失敗します。 – jasonharper
@jasonharper代わりに何をすべきですか? 'grid_ [y] [x] == 1'の前に' mouse_x、mouse_y'を設定する必要がありますか? – AV13
'if grid [y] [x] == 0:'の前に、実際には、これらの3行のコードを2つの場所に複製して使用することはありません。 – jasonharper