Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Controller:
- def __init__(self, h, w, matrix):
- self.h = h
- self.w = w
- self.matrix = matrix
- def give_available_tiles(self, x, y):
- tiles = []
- for i in range(x - 1, x + 2):
- for j in range(y - 1, y + 2):
- if 0 <= i <= len(self.matrix) and 0 <= j <= len(self.matrix):
- tiles.append([i, j])
- return tiles
- def fill(self):
- self.matrix = [[int(i) for i in input().split()] for i in range(self.h)]
- def modify(self, x, y):
- if self.matrix[x][y] == "X":
- print('This tile is blown up')
- if self.matrix[x][y] == "0":
- print('This tile is empty')
- if self.matrix[x][y] == 1:
- tiles = self.give_available_tiles(x, y)
- for line in tiles:
- a = int(line[0])
- b = int(line[1])
- if self.matrix[a][b] == 2:
- continue
- elif self.matrix[a][b] == 1:
- continue
- elif self.matrix[a][b] == "X":
- continue
- else:
- self.matrix[a][b] = 1
- if self.matrix[x][y] == 2:
- tiles = self.give_available_tiles(x, y)
- for line in tiles:
- a = int(line[0])
- b = int(line[1])
- self.matrix[a][b] = "X"
- class Model:
- def __init__(self, matrix):
- self.matrix = matrix
- class View:
- def __init__(self, matrix):
- self.matrix = matrix
- def show(self):
- for line in self.matrix:
- print(*line)
- f = []
- field = Model(f)
- height, width = map(int, input().split())
- ctrl = Controller(height, width, field)
- ctrl.fill()
- field_output = View(ctrl.matrix)
- while True:
- x_field, y_field = map(int, input().split())
- if x_field == -1 and y_field == -1:
- exit(1)
- ctrl.modify(x_field, y_field)
- field_output.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement