Версия Python: 2.7.8
Цель: Сделать игру Minesweeper (хотя бы попытаться) на python с библиотекой PyGame.
Код:
import pygame, random, sys
from pygame.locals import *
pygame.init()
width, height = 400, 400
clock = pygame.time.Clock()
DRAWSURF = pygame.display.set_mode((width, height))
pygame.display.set_caption("Matt's Minesweeper")
background = pygame.Surface(DRAWSURF.get_size())
background.fill((255, 255, 255))
DRAWSURF.blit(background, (0, 0))
pygame.display.flip()
board = []
class Square():
isMine = None
val = 0
count = 0
def draw(self):
BLACK = (0, 0, 0)
val = self.val
count = self.count
x = 100 + val * 60
y = 0 + 60 * count
pygame.draw.rect(DRAWSURF, BLACK, (x, y, 60, 60), 5)
return self.isMine
class DrawBoard():
def draw(self, grid):
item = Square()
for i in range(0, grid):
item.val = i
select = item.draw()
board.append(select)
for j in range(grid):
item.count = j
select_2 = item.draw()
board.append(select_2)
class MineSet():
temp = Square()
def mineSet(self, mines):
temp = self.temp
for i in range(0, mines):
test = random.choice(board)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
clock.tick(30)
# Insert drawings here
game = DrawBoard()
game.draw(5)
print board
pygame.display.update()
Проблема: у меня есть каждый отдельный квадрат как отдельный объект, как показано в классе Square(). В функции рисования класса Square она возвращает логическое значение None (переменная isMine), и когда я вызываю ее позже в классе DrawBoard, она добавляет объект в список «доска». Чтобы назначить мины для игры, я хочу случайным образом выбрать один из созданных объектов Square и изменить логическое значение с None на True. Может быть, это не лучший способ назначать мины, но я стараюсь изо всех сил. Любая помощь приветствуется.
temp
илиtest
в MineSet. - person Padraic Cunningham   schedule 20.02.2015select = item.draw()
должен делать? Метод ничего не возвращает (по умолчанию None), поэтому вы устанавливаете select на None - person Padraic Cunningham   schedule 20.02.2015