我有以下两个文件
GOL_CORE
from random import choice
import pygame
RECT_COLOR = [200, 200, 0]
class GOL_CLASS:
def __init__(self, SQUARED_LENGTH):
self.SYSTEM = {(x, y):choice([False, False, False, False, True]) for x in range(SQUARED_LENGTH) for y in range(SQUARED_LENGTH)}
def activate(self, TEMPORARY_DICTIONARY, X, Y):
RETURN_VALUE = TEMPORARY_DICTIONARY
RETURN_VALUE[(X, Y)] = True
return RETURN_VALUE
def deactivate(self, TEMPORARY_DICTIONARY, X, Y):
RETURN_VALUE = TEMPORARY_DICTIONARY
RETURN_VALUE[(X, Y)] = False
return RETURN_VALUE
def check(self, X, Y):
Counter = 0
a = [(X+1,Y+1),(X,Y+1),(X-1,Y+1),(X+1,Y),(X-1,Y),(X+1,Y-1),(X,Y-1),(X-1,Y-1)]
for i in range(8):
if a[i] in self.SYSTEM:
if self.SYSTEM[a[i]] == True:
Counter += 1
return Counter
def step(self, SCREEN):
TEMPORARY_DICTIONARY = self.SYSTEM
for x, y in self.SYSTEM:
TEMP = self.check(x, y)
if self.SYSTEM[(x, y)] == False:
if TEMP == 3: #Rule 4
TEMPORARY_DICTIONARY = self.activate(TEMPORARY_DICTIONARY, x, y)
else:
if TEMP < 2: #Rule 1
TEMPORARY_DICTIONARY = self.deactivate(TEMPORARY_DICTIONARY, x, y)
elif (TEMP == 2) or (TEMP == 3): #Rule 2
pass
elif TEMP > 3: #Rule 3
TEMPORARY_DICTIONARY = self.deactivate(TEMPORARY_DICTIONARY, x, y)
else:
raise Exception("You found a bug, congratulation!")
self.apply(SCREEN, TEMPORARY_DICTIONARY)
def apply(self, SCREEN, DICT):
for x, y in DICT:
if self.SYSTEM[(x, y)] == True:
pygame.draw.rect(SCREEN, RECT_COLOR, [(x*10), (y*10), 9, 9], 0)
main
import GOL_CORE as CORE
import pygame, time, random
MAIN_SYSTEM = CORE.GOL_CLASS(100)
pygame.init()
WIDTH, HEIGHT = 1000, 1000
screen = pygame.display.set_mode((WIDTH, HEIGHT))
RUNNING = True
while RUNNING:
for event in pygame.event.get():
if event.type == pygame.QUIT:
RUNNING = False
MAIN_SYSTEM.step(screen)
pygame.display.update()
screen.fill([0, 0, 0])
time.sleep(2)
pygame.quit()
当我试着做一个眼罩时,我发现了这个错误。如果你不知道那是什么,它是一个1乘3的旋转体。可悲的是,它总是以立方体结束。但是为什么呢?我改变了很多东西,重写了我所有的代码,但都不起作用
TEMPORARY_DICTIONARY = self.SYSTEM
不创建系统的副本。它只是创建对同一对象的引用。您必须创建数据的副本:执行算法后,副本是新系统(
self.SYSTEM = TEMPORARY_DICTIONARY
):另见Pygame is running game of life very slowly和Game of life
相关问题 更多 >
编程相关推荐