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
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]
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))
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())]
def move(self, item: int, x: int, y: int): return self.game.moveItem(item, Coord(x, y))
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) })