def placeBeepers(self, street, avenue, howMany=1, byUser=True): """ Place any number of beepers at a corner. Use RobotWorld.infinity to place an infinite number. The number will be added to the number currently there. Don't try to reduce the number by giving a negative value. Strange behavior can result since negative values are treated as infinite. """ self.__beeperControl.acquire() if howMany == 0: return legalCorner(street, avenue) place = (street, avenue) if howMany < 0: self._beepers[place] = infinity if _window != None: _window.deleteBeeper(place) _window.placeBeeper(street, avenue, infinity) self.__beeperControl.notify() self.__beeperControl.release() return inWorld = self._beepers.get(place, 0) toPut = howMany + inWorld if inWorld != infinity: self._beepers[place] = toPut if _window != None: if inWorld > 0: _window.deleteBeeper(place) _window.placeBeeper(street, avenue, toPut) self.__beeperControl.notify() self.__beeperControl.release()
def __init__(self, street, avenue, direction, beepers, fill=None, outline='black'): '''Create a robot in a particular situation. The fill and outline colors (strings) may be ignored in some versions, and some colors might not work.''' Observable.__init__(self) legalCorner(street, avenue) self.__street = street self.__avenue = avenue self.__direction = direction if beepers < 0: beepers = infinity self.__beepers = beepers self.__fill = fill self.__outline = outline self.__running = True self.addObserver(world) # world._World__registerRobot(self) self.setChanged() self.notifyObservers(self.RobotState(self, self.createAction)) self.__pausing = False self.__userPausing = False self.__ID = _incrementRobotCount()
def removeWallEastOf(self, street, avenue): legalCorner(street, avenue) try: self._northSouthWalls.pop((street, avenue)) if window() != None: _window.removeWallEastOf(street, avenue) except: pass
def removeWallNorthOf(self, street, avenue): legalCorner(street, avenue) try: self._eastWestWalls.pop((street, avenue)) if window() != None: _window.removeWallNorthOf(street, avenue) except: pass
def removeWallEastOf(self, street, avenue): legalCorner(street, avenue) try: self._northSouthWalls.pop((street, avenue)) if _window != None: _window.removeWallEastOf(street, avenue) except: # print "world ns wall" pass
def removeWallNorthOf(self, street, avenue): legalCorner(street, avenue) try: self._eastWestWalls.pop((street, avenue)) if _window != None: _window.removeWallNorthOf(street, avenue) except: # print "world ew wall" pass
def placeBeepers(self, street, avenue, howMany=1, byUser=True): """ Place any number of beepers at a corner. Use RobotWorld.infinity to place an infinite number. The number will be added to the number currently there. Don't try to reduce the number by giving a negative value. Strange behavior can result since negative values are treated as infinite. """ if howMany == 0: return legalCorner(street, avenue) place = (street, avenue) if howMany < 0: self._beepers[place] = infinity return inWorld = self._beepers.get(place, 0) if inWorld != infinity: self._beepers[place] = howMany + inWorld
def __init__(self, street, avenue, direction, beepers, fill = 'blue', outline = 'black'): "Create a robot in a particular situation." Observable.__init__(self) legalCorner(street, avenue) self.__street = street self.__avenue = avenue self.__direction = direction if beepers < 0 : beepers = infinity self.__beepers = beepers self.__fill = fill self.__outline = outline self.__running = True; self.addObserver(world) # world._World__registerRobot(self) self.setChanged() self.notifyObservers(self.RobotState(self, self.createAction)) self.__pausing = False self.__userPausing = False self.__ID = _incrementRobotCount()
def placeWallEastOf(self, street, avenue): "Place a north-south wall segment east of this corner" legalCorner(street, avenue) self._northSouthWalls[(street, avenue)] = 1 World.placeNSWall(street, avenue, 1)
def placeWallNorthOf(self, street, avenue): "Place an east-west wall segment north of this corner" legalCorner(street, avenue) self._eastWestWalls[(street, avenue)] = 1 World.placeEWWall(street, avenue, 1)
def placeWallEastOf(self, street, avenue): "Place a north-south wall segment east of this corner" legalCorner(street, avenue) self._northSouthWalls[(street, avenue)] = 1 if _window != None: _window.placeWallEastOf(street, avenue)
def placeWallNorthOf(self, street, avenue): "Place an east-west wall segment north of this corner" legalCorner(street, avenue) self._eastWestWalls[(street, avenue)] = 1 if _window != None: _window.placeWallNorthOf(street, avenue)
def _clearWestOf(self, street, avenue): legalCorner(street, avenue) if avenue == 1: return False return self._northSouthWalls.get((street, avenue - 1), 0) == 0
def _clearEastOf(self, street, avenue): legalCorner(street, avenue) return self._northSouthWalls.get((street, avenue), 0) == 0
def _clearSouthOf(self, street, avenue): legalCorner(street, avenue) if street == 1: return False return self._eastWestWalls.get((street - 1, avenue), 0) == 0
def _clearNorthOf(self, street, avenue): legalCorner(street, avenue) return self._eastWestWalls.get((street, avenue), 0) == 0