Источники, которые я использовал для написания этого кода: https://web.archive.org/web/20160418004149/http: //freespace.virgin.net/hugo.elias/graphics/x_water.htm и https://www.youtube.com/watch?v=BZUdGqeOD0w . Проблема, с которой я сталкиваюсь, заключается в том, что он часто выдает отрицательные числа, которые не подходят для цвета Вот мой код (я знаю, что я не должен использовать PyGame для пикселей, и я планирую использовать OpenGL в будущем):
import pygame
pygame.init()
cols = 200
rows = 200
window = pygame.display.set_mode((cols, rows))
buffer1 = [[0 for _ in range(rows)] for _ in range(cols)]
buffer2 = buffer1.copy()
buffer1[100][100] = 255 #Raindrop
dampening = 0.97
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
for i in range(1, cols - 1):
for j in range(1, rows - 1):
buffer2[i][j] = ((buffer1[i+1][j] + buffer1[i-1][j] + buffer1[i][j+1] + buffer1[i][j-1]) / 2) - buffer2[i][j]
buffer2[i][j] = buffer2[i][j] * dampening
#Displaying the buffer
for i in range(cols):
for j in range(rows):
window.fill((buffer2[i][j], buffer2[i][j], buffer2[i][j]), (i, j, 1, 1))
#Swapping the buffers
buffer1, buffer2 = buffer2, buffer1
pygame.display.update()
pygame.display.quit()
pygame.quit()
Я боролся с этим некоторое время сейчас и Теперь я наконец обращаюсь к вам за помощью. Заранее спасибо.