Пример #1
0
 def checkWhirl(self, item, destination: Coord):
     if not item.coordinates:
         return destination
     ship = self.items[[
         i for i in self.items if self.items[i].gamer == item.gamer
         and self.items[i].getClassName() == item.getClassName()
     ][0]]
     if ship.coordinates == Coord(destination.x, destination.y):
         return destination
     currentPlace = self.field.places[Coord(item.coordinates.x,
                                            item.coordinates.y)]
     destinationPlace = self.field.places[Coord(destination.x,
                                                destination.y)]
     if currentPlace.tile and currentPlace.tile.getClassName(
     ) == 'TileWhirl':
         if (item.coordinates.z):
             return Coord(item.coordinates.x, item.coordinates.y,
                          item.coordinates.z - 1)
         else:
             return destination
     elif destinationPlace.tile and destinationPlace.tile.getClassName(
     ) == 'TileWhirl':
         return Coord(destination.x, destination.y,
                      destinationPlace.tile.steps - 1)
     return destination
Пример #2
0
 def getStartCoord(self, gamer):
     places = [
         Coord(self.middle, 0),
         Coord(0, self.middle),
         Coord(self.middle, self.size - 1),
         Coord(self.size - 1, self.middle)
     ]
     return places[gamer % GAMERS]
Пример #3
0
 def moveItem(self, itemId: int, destination: Coord):
     item = self.items.get(itemId)
     if not item:
         return False
     destination = self.checkWhirl(item, destination)
     common.game.Game.moveItem(self, itemId, destination)
     self.openPlace(Coord(destination.x, destination.y))
Пример #4
0
 def to_json(self):
     return [[
         self.places.get(Coord(x, y))
         for x in set(key.x for key in self.places.keys())
     ] for y in set(key.y for key in self.places.keys())]
Пример #5
0
 def move(self, item: int, x: int, y: int):
     return self.game.moveItem(item, Coord(x, y))
Пример #6
0
 def generateField(self):
     return Field(
         places={
             Coord(x, y): self.generatePlace(Coord(x, y))
             for x in range(0, self.size) for y in range(0, self.size)
         })