def __init__(self, name, street, avenue, direction, beepers, fill=None, outline=None): self.karel = UrRobot(street, avenue, direction, beepers, fill, outline) # self.window = window() world.setDelay(0) self.fill = fill self.name = name global offset offset += 20 window = gtk.Dialog() window.set_has_separator(False) try: color = gtk.gdk.color_parse(fill) window.modify_bg(gtk.STATE_NORMAL, color) except: pass window.connect("destroy", self.destroy) window.set_title(name) window.set_size_request(100, 150) moveButton = gtk.Button("Move") moveButton.connect("clicked", self.move) moveButton.show() window.vbox.pack_start(moveButton, True, False, 0) turnButton = gtk.Button("TurnLeft") turnButton.connect("clicked", self.turnLeft) turnButton.show() window.vbox.pack_start(turnButton, True, False, 0) pickButton = gtk.Button("PickBeeper") pickButton.connect("clicked", self.pickBeeper) pickButton.show() window.vbox.pack_start(pickButton, True, False, 0) putButton = gtk.Button("PutBeeper") putButton.connect("clicked", self.putBeeper) putButton.show() window.vbox.pack_start(putButton, True, False, 0) turnOffButton = gtk.Button("TurnOff") turnOffButton.connect("clicked", self.turnOff) turnOffButton.show() window.vbox.pack_start(turnOffButton, True, False, 0) window.show() window.move(500 + offset, 20 + offset)
def task(): #Commands to control the "world" #Open a particular world file world.readWorld("beeperWorld.kwld") #Set the size of the visible world world.setSize(10, 10) #Set the speed of the robot world.setDelay(30) sb15 = UrRobot(5, 6, North, 1, fill='green', outline='blue') def turn(a): for i in range(a): sb15.turnLeft() def pickAndTurn(a): for i in range(a): sb15.pickBeeper() sb15.turnLeft() sb15.move() turn(3) sb15.move() #Write the code to make your robot pick up all the beepers. sb15.turnLeft() sb15.move() pickAndTurn(4) sb15.pickBeeper() time.sleep(3)
def setUp(self): world.setSize(10, 10) world.reset() world.setDelay(0) self.karel = UrRobot(5, 5, North, 0) world.setVisible( 0 ) #Doesn't work. It is reset visible whenever Robota is loaded again.
def testRobotPredicates(self): "Validate all of the predicates in class Robot" self.karel = Robot(5, 5, North, 0) # has to be a Robot here self.assertEqual(self.karel.anyBeepersInBeeperBag(), 0) self.assertEqual(self.karel.nextToABeeper(), 0) self.assertEqual(self.karel.facingNorth(), 1) self.assertEqual(self.karel.facingWest(), 0) self.assertEqual(self.karel.facingSouth(), 0) self.assertEqual(self.karel.facingEast(), 0) self.assertEqual(self.karel.frontIsClear(), 1) martha = UrRobot(5, 5, North, 0) self.assertEqual(self.karel.nextToARobot(), 1) world.placeWallNorthOf(5, 5) self.assertEqual(self.karel.frontIsClear(), 0) self.karel.turnLeft() self.assertEqual(self.karel.facingNorth(), 0) self.assertEqual(self.karel.facingWest(), 1) self.assertEqual(self.karel.frontIsClear(), 1) world.placeWallEastOf(5, 4) self.assertEqual(self.karel.frontIsClear(), 0) self.karel.turnLeft() self.assertEqual(self.karel.facingWest(), 0) self.assertEqual(self.karel.facingSouth(), 1) self.assertEqual(self.karel.frontIsClear(), 1) world.placeWallNorthOf(4, 5) self.assertEqual(self.karel.frontIsClear(), 0) self.karel.turnLeft() self.assertEqual(self.karel.facingSouth(), 0) self.assertEqual(self.karel.facingEast(), 1) self.assertEqual(self.karel.frontIsClear(), 1) world.placeWallEastOf(5, 5) self.assertEqual(self.karel.frontIsClear(), 0) charlie = Robot(12, 12, North, 1) rosie = UrRobot(12, 12, East, 0) self.assertEqual(charlie.anyBeepersInBeeperBag(), 1) charlie.putBeeper() self.assertEqual(charlie.anyBeepersInBeeperBag(), 0) charlie.pickBeeper() self.assertEqual(charlie.anyBeepersInBeeperBag(), 1) self.assertEqual(charlie.nextToARobot(), 1) charlie.move() charlie.move() self.assertEqual(charlie.nextToARobot(), 0) self.assertNoBeepersAt(9, 9) world.placeBeepers(9, 9, 1) self.assertBeepersAt(9, 9)
def testActionsWhenTurnedOff(self): "Actions should all fail when robot turned off" self.karel.turnOff() self.assertRaises(RobotNotRunning, self.karel.move) self.assertRaises(RobotNotRunning, self.karel.turnLeft) self.assertRaises(RobotNotRunning, self.karel.pickBeeper) self.assertRaises(RobotNotRunning, self.karel.putBeeper) lost = UrRobot(1, 1, West, 1) self.assertRaises(FrontIsBlocked, lost.move) self.assertRaises(RobotNotRunning, lost.move) self.assertRaises(RobotNotRunning, lost.turnLeft) self.assertRaises(RobotNotRunning, lost.pickBeeper) self.assertRaises(RobotNotRunning, lost.putBeeper)
def task(): def turnSB15(a): for i in range(a): sb15.turnLeft() def turnKarel(a): for i in range(a): karel.turnLeft() # Commands to control the "world" world.readWorld("stepsWorld.kwld") # open a particular world file world.setSize(10,10) # set the size of the visible world #^^ should be 10 world.setDelay(90) # set simulation speed. 0-fastest, 100-slowest karel = UrRobot(2,3,East, 1,fill="blue") sb15 = UrRobot(1,6,North, 10, fill="green") sb15.move() karel.turnLeft() turnSB15(1) sb15.move() turnSB15(3) sb15.move() turnSB15(1) sb15.move() turnSB15(1) turnKarel(1) karel.move() turnKarel(1) karel.move() turnKarel(2) turnSB15(2)
class RemoteControl: def __init__(self, name, street, avenue, direction, beepers, fill=None, outline=None): self.karel = UrRobot(street, avenue, direction, beepers, fill, outline) # self.window = window() world.setDelay(0) self.fill = fill self.name = name global offset offset += 20 window = gtk.Dialog() window.set_has_separator(False) try: color = gtk.gdk.color_parse(fill) window.modify_bg(gtk.STATE_NORMAL, color) except: pass window.connect("destroy", self.destroy) window.set_title(name) window.set_size_request(100, 150) moveButton = gtk.Button("Move") moveButton.connect("clicked", self.move) moveButton.show() window.vbox.pack_start(moveButton, True, False, 0) turnButton = gtk.Button("TurnLeft") turnButton.connect("clicked", self.turnLeft) turnButton.show() window.vbox.pack_start(turnButton, True, False, 0) pickButton = gtk.Button("PickBeeper") pickButton.connect("clicked", self.pickBeeper) pickButton.show() window.vbox.pack_start(pickButton, True, False, 0) putButton = gtk.Button("PutBeeper") putButton.connect("clicked", self.putBeeper) putButton.show() window.vbox.pack_start(putButton, True, False, 0) turnOffButton = gtk.Button("TurnOff") turnOffButton.connect("clicked", self.turnOff) turnOffButton.show() window.vbox.pack_start(turnOffButton, True, False, 0) window.show() window.move(500 + offset, 20 + offset) def move(self, widget): if not self.karel.isRunning(): print(self.name + " tried to move when it wasn't running.") return try: self.karel.move() print(self.name + ".move()") except: print(self.name + " tried to walk through a wall.") def turnLeft(self, widget): try: self.karel.turnLeft() print(self.name + ".turnLeft()") except: print(self.name + " tried to turnLeft when it wasn't running.") def pickBeeper(self, widget): if not self.karel.isRunning(): print(self.name + " tried to pickBeeper when it wasn't running.") return try: self.karel.pickBeeper() print(self.name + ".pickBeeper()") except: print(self.name + " tried to pickBeeper when none are present.") def putBeeper(self, widget): if not self.karel.isRunning(): print(self.name + " tried to putBeeper when it wasn't running.") return try: self.karel.putBeeper() print(self.name + ".putBeeper()") except: print(self.name + " tried to putBeeper when none available.") def turnOff(self, widget): self.karel.turnOff() print(self.name + ".turnOff()") def destroy(self, widget): gtk.main_quit()