Advertisement
namemkazaza

Controller

Feb 8th, 2020
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. class Controller:
  2.     def __init__(self, h, w, matrix):
  3.         self.h = h
  4.         self.w = w
  5.         self.matrix = matrix
  6.  
  7.     def give_available_tiles(self, x, y):
  8.         tiles = []
  9.         for i in range(x - 1, x + 2):
  10.             for j in range(y - 1, y + 2):
  11.                 if 0 <= i <= len(self.matrix) and 0 <= j <= len(self.matrix):
  12.                     tiles.append([i, j])
  13.         return tiles
  14.  
  15.     def fill(self):
  16.         self.matrix = [[int(i) for i in input().split()] for i in range(self.h)]
  17.  
  18.     def modify(self, x, y):
  19.         if self.matrix[x][y] == "X":
  20.             print('This tile is blown up')
  21.         if self.matrix[x][y] == "0":
  22.             print('This tile is empty')
  23.         if self.matrix[x][y] == 1:
  24.             tiles = self.give_available_tiles(x, y)
  25.             for line in tiles:
  26.                 a = int(line[0])
  27.                 b = int(line[1])
  28.                 if self.matrix[a][b] == 2:
  29.                     continue
  30.                 elif self.matrix[a][b] == 1:
  31.                     continue
  32.                 elif self.matrix[a][b] == "X":
  33.                     continue
  34.                 else:
  35.                     self.matrix[a][b] = 1
  36.         if self.matrix[x][y] == 2:
  37.             tiles = self.give_available_tiles(x, y)
  38.             for line in tiles:
  39.                 a = int(line[0])
  40.                 b = int(line[1])
  41.                 self.matrix[a][b] = "X"
  42.  
  43.  
  44. class Model:
  45.     def __init__(self, matrix):
  46.         self.matrix = matrix
  47.  
  48.  
  49. class View:
  50.     def __init__(self, matrix):
  51.         self.matrix = matrix
  52.  
  53.     def show(self):
  54.         for line in self.matrix:
  55.             print(*line)
  56.  
  57.  
  58. f = []
  59. field = Model(f)
  60. height, width = map(int, input().split())
  61. ctrl = Controller(height, width, field)
  62. ctrl.fill()
  63. field_output = View(ctrl.matrix)
  64. while True:
  65.     x_field, y_field = map(int, input().split())
  66.     if x_field == -1 and y_field == -1:
  67.         exit(1)
  68.     ctrl.modify(x_field, y_field)
  69.     field_output.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement