minesweeper/square.py

70 lines
2.3 KiB
Python

import pygame
class Square:
def __init__(self, board, x, y):
self.board = board
self.surface = board.surface
self.size = board.square_size
self.is_clicked = False
self.is_mine = False
self.is_flagged = False
self.is_questioned = False
self.mines_touching = 0
self.coords = (x, y)
self.set_img("png/Minesweeper_unopened_square.png")
def draw_line(self):
RED = (255,0,0)
top_left = self.coords
bottom_right = (self.coords[0]+self.size, self.coords[1]+self.size)
pygame.draw.line(self.surface, RED, top_left, bottom_right, 10)
def update_img(self):
if self.is_mine:
self.set_img("png/bomb.png")
elif self.mines_touching == 0:
self.set_img("png/Minesweeper_0.png")
elif self.mines_touching == 1:
self.set_img("png/Minesweeper_1.png")
elif self.mines_touching == 2:
self.set_img("png/Minesweeper_2.png")
elif self.mines_touching == 3:
self.set_img("png/Minesweeper_3.png")
elif self.mines_touching == 4:
self.set_img("png/Minesweeper_4.png")
elif self.mines_touching == 5:
self.set_img("png/Minesweeper_5.png")
elif self.mines_touching == 6:
self.set_img("png/Minesweeper_6.png")
elif self.mines_touching == 7:
self.set_img("png/Minesweeper_7.png")
elif self.mines_touching == 8:
self.set_img("png/Minesweeper_8.png")
def set_img(self, img):
self.img = pygame.image.load(img)
self.img = pygame.transform.scale(self.img, (self.size, self.size))
self.surface.blit(self.img, self.coords)
def reveal(self):
if not self.is_flagged and not self.is_clicked:
self.is_clicked = True
self.is_questioned = False
self.update_img()
def cycle_flag(self):
if self.is_clicked:
return
elif self.is_flagged:
self.set_img("png/Minesweeper_questionmark.png")
self.is_flagged = False
self.is_questioned = True
elif self.is_questioned:
self.set_img("png/Minesweeper_unopened_square.png")
self.is_questioned = False
else:
self.set_img("png/Minesweeper_flag.png")
self.is_flagged = True