Не працює код Python
Програма має викликати вікно Pygame зеленого кольору. Тим не менше, викликається вікно ЧОРНОГО кольору. Де може бути помилка?
Мій код:
# шаблон import pygame import random # Setup PyGame pygame.init() # установка невоторых цветов BLACK = (0, 0, 0) GREEN = (0, 200, 0) WHITE = (255, 255, 255) color_glass = GREEN # размер окна WIDTH = 10 # hight of the glass HEIGHT = 20 # blank square constant EMPTY = 0 # full square constant FULL = 1 # size of a square CELL_SIZE = 30 # размер стакана (окна) size = [WIDTH*CELL_SIZE, HEIGHT*CELL_SIZE] # Установка ширины и высоты экрана [ширина, высота] screen = pygame.display.set_mode(size) O = [[[1, 1], [1, 1]]] I = [[[1, 1, 1, 1]], [[1], [1], [1], [1]]] J = [[[1, 0, 0], [1, 1, 1]], [[0, 1], [0, 1], [1, 1]], [[1, 1, 1], [0, 0, 1]], [[1, 1], [1, 0], [1, 0]]] L = [[[0, 0, 1], [1, 1, 1]], [[1, 1], [0, 1], [0, 1]], [[1, 1, 1], [1, 0, 0]], [[1, 0], [1, 0], [1, 1]]] T = [[[0, 1, 0], [1, 1, 1]], [[0, 1], [1, 1], [0, 1]], [[1, 1, 1], [0, 1, 0]], [[1, 0], [1, 1], [1, 0]]] S = [[[0, 1, 1], [1, 1, 0]], [[1, 0], [1, 1], [0, 1]]] Z = [[[1, 1, 0], [0, 1, 1]], [[0, 1], [1, 1], [1, 0]]] FORMS = [O, I, J, L, T, S, Z] class Field: def __init__(self, width, height, color=BLACK): self.width = width self.height = height self.color = color self.glass = [] for i in range(height): string = [FULL] + [EMPTY]*self.width + [FULL] self.glass.append(string) string = [FULL]*(self.width + 2) self.glass.append(string) self.draw(screen) def draw(self, screen): screen.fill(self.color) for y in range(self.height): for x in range(1, self.width+1): if self.glass[y] != EMPTY: pygame.draw.rect(screen, self.glass[y][x], [(x-1)*CELL_SIZE, y*CELL_SIZE, CELL_SIZE, CELL_SIZE]) class Figure(): def __init__(self, field, screen, forms, turn): self.x = field.width // 2 - 1 self.y = 0 self.forms = forms self.turn = turn self.form = forms[turn] R = random.randint(50, 255) G = random.randint(50, 255) B = random.randint(50, 255) self.color = (R, G, B) field = Field(WIDTH, HEIGHT, color_glass) figure_random = random.choice(FORMS) figure = Figure(field, screen, figure_random, 0) # заголовок окна pygame.display.set_caption("Tetris") # переменная для цикла. Пока пользователь не нажмет кнопку закрытия, цикл работает. done = True # -------- Основной цикл программы ----------- while done: # обработка всех событий for event in pygame.event.get(): if event.type == pygame.QUIT: screen.fill(BLACK) done = False # обновление всего того, что нарисовано на экране pygame.display.flip() # корректный выход из программы pygame.quit()
Правильний код:
import pygame import random # Setup PyGame pygame.init() # установка невоторых цветов BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 200, 0) color_glass = GREEN # настройки стакана # ширина стакана в квадратиках WIDTH = 5 # высота стакана HEIGHT = 7 # показатель того, что квадратик пустой EMPTY = 0 # показатель того, что квадратик заполнен FULL = 1 # сторона квадратика CELL_SIZE = 30 # размер стакана (окна) size = [WIDTH * CELL_SIZE, HEIGHT * CELL_SIZE] # Установка ширины и высоты экрана [ширина, высота] screen = pygame.display.set_mode(size) O = [[[1, 1], [1, 1]]] I = [[[1, 1, 1, 1]], [[1], [1], [1], [1]]] J = [[[1, 0, 0], [1, 1, 1]], [[0, 1], [0, 1], [1, 1]], [[1, 1, 1], [0, 0, 1]], [[1, 1], [1, 0], [1, 0]]] L = [[[0, 0, 1], [1, 1, 1]], [[1, 1], [0, 1], [0, 1]], [[1, 1, 1], [1, 0, 0]], [[1, 0], [1, 0], [1, 1]]] T = [[[0, 1, 0], [1, 1, 1]], [[0, 1], [1, 1], [0, 1]], [[1, 1, 1], [0, 1, 0]], [[1, 0], [1, 1], [1, 0]]] S = [[[0, 1, 1], [1, 1, 0]], [[1, 0], [1, 1], [0, 1]]] Z = [[[1, 1, 0], [0, 1, 1]], [[0, 1], [1, 1], [1, 0]]] FORMS = [O, I, J, L, T, S, Z] class Field: def __init__(self, width, height, color=BLACK): self.width = width self.height = height self.color = color self.glass = [] for i in range(height): string = [FULL] + [EMPTY] * self.width + [FULL] self.glass.append(string) # дно стакана string = [FULL] * (self.width + 2) self.glass.append(string) self.draw(screen) def draw(self, screen): screen.fill(self.color) for y in range(self.height): for x in range(1, self.width + 1): if self.glass[y][x] != EMPTY: pygame.draw.rect(screen, self.glass[y][x], \ \ [(x - 1) * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE]) class Figure(): def __init__(self, field, screen, forms, turn): self.x = field.width // 2 - 1 self.y = 0 self.forms = forms self.turn = turn self.form = forms[turn] R = random.randint(50, 255) G = random.randint(50, 255) B = random.randint(50, 255) self.color = (R, G, B) field = Field(WIDTH, HEIGHT, color_glass) figure_random = random.choice(FORMS) figure = Figure(field, screen, figure_random, 0) # заголовок окна pygame.display.set_caption("Tetris") # переменная для цикла. Пока пользователь не нажмет кнопку закрытия, цикл работает. done = True # -------- Основной цикл программы ----------- while done: # обработка всех событий for event in pygame.event.get(): if event.type == pygame.QUIT: screen.fill(BLACK) done = False # обновление всего того, что нарисовано на экране pygame.display.flip() # корректный выход из программы pygame.quit()
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів