(FILECREATED "16-NOV-83 18:44:47" {INDIGO}<LOOPS>DEMO>BIGMAC.;1 7403   

      changes to:  (METHODS BigMac.GoToStoppingPlace BigMac.TakeTurn BigMac.SelectTruck)
		   (INSTANCES BigMac.GoToStoppingPlace BigMac.TakeTurn BigMac.SelectTruck 
			      GoToStoppingPlaceBigMacRules TakeTurnBigMacRules)
		   (VARS BIGMACCOMS)
		   (FNS BigMac.SelectTruck GoToStoppingPlaceBigMacRules TakeTurnBigMacRules))


(PRETTYCOMPRINT BIGMACCOMS)

(RPAQQ BIGMACCOMS ((METHODS BigMac.GoToStoppingPlace BigMac.SelectTruck BigMac.TakeTurn)
		   (INSTANCES GoToStoppingPlaceBigMacRules TakeTurnBigMacRules)
		   (FNS GoToStoppingPlaceBigMacRules TakeTurnBigMacRules)))
[METH BigMac  GoToStoppingPlace NIL
      (* RuleSet GoToStoppingPlaceTravelerRules is installed as the selector GoToStoppingPlace of the 
	 class Traveler)
      (method GoToStoppingPlaceBigMacRules RuleSet GoToStoppingPlaceBigMacRules)]


[METH BigMac  SelectTruck NIL
      (* always returns MacTruck)]


[METH BigMac  TakeTurn NIL
      NIL (method TakeTurnBigMacRules RuleSet TakeTurnBigMacRules)]


(DEFINEQ

(BigMac.SelectTruck
  [LAMBDA (self)                                             (* dgb: "16-NOV-83 16:56")
                                                             (* always returns MacTruck)
    (QUOTE MacTruck])
)
[DEFINST RuleSet (GoToStoppingPlaceBigMacRules "NNS0.lVC1.DT8.1087")
         (perspectiveNode #&(RuleSetNode "NNS0.lVC1.DT8.1093") myViewName RuleSet)
	 (name #(GoToStoppingPlaceBigMacRules NIL RememberName))
	 (compiledRules GoToStoppingPlaceBigMacRules)
	 (workSpace BigMac)
	 (args NIL)
	 (tempVars (temp))
	 (taskVars NIL)
	 (debugVars NIL)
	 (numRules 3)
	 (controlStructure DOALL)
	 (whileCondition NIL)
	 (compilerOptions (A))
	 (auditClass NIL)
	 (metaAssignments NIL)
	 (ruleClass NIL)
	 (taskClass)]


[DEFINST RuleSet (TakeTurnBigMacRules "NNS0.lVC1.DT8.1080")
         (perspectiveNode #&(RuleSetNode "NNS0.lVC1.DT8.1094") myViewName RuleSet)
	 (name #(TakeTurnBigMacRules NIL RememberName))
	 (compiledRules TakeTurnBigMacRules)
	 (workSpace BigMac)
	 (args NIL)
	 (tempVars (alices))
	 (taskVars NIL)
	 (debugVars NIL)
	 (numRules 2)
	 (controlStructure DOALL)
	 (whileCondition NIL)
	 (compilerOptions (A))
	 (auditClass NIL)
	 (metaAssignments NIL)
	 (ruleClass NIL)
	 (taskClass)]


[DEFINST RuleSetNode ("NNS0.lVC1.DT8.1093")
         (perspectives ? RuleSet #&(RuleSet "NNS0.lVC1.DT8.1087") Source 
		       #&(RuleSetSource "NNS0.lVC1.DT8.1095"))]


[DEFINST RuleSetNode ("NNS0.lVC1.DT8.1094")
         (perspectives ? RuleSet #&(RuleSet "NNS0.lVC1.DT8.1080") Source 
		       #&(RuleSetSource "NNS0.lVC1.DT8.1096"))]


[DEFINST RuleSetSource ("NNS0.lVC1.DT8.1095")
         (indexedVars ((#&(Rule "NNS0.lVC1.DT8.1097"))
		       (#&(Rule "NNS0.lVC1.DT8.1098"))
		       (#&(Rule "NNS0.lVC1.DT8.1089"))))
	 (perspectiveNode #&(RuleSetNode "NNS0.lVC1.DT8.1093") myViewName Source)
	 (created "27-JAN-83 00:02:00")
	 (creator STEFIK)
	 (edited "16-NOV-83 18:12:56")
	 (editor LOOPSCOURSE.GUEST)]


[DEFINST RuleSetSource ("NNS0.lVC1.DT8.1096")
         (indexedVars ((#&(Rule "NNS0.lVC1.DT8.1086"))
		       (#&(Rule "NNS0.lVC1.DT8.1099"))))
	 (perspectiveNode #&(RuleSetNode "NNS0.lVC1.DT8.1094") myViewName Source)
	 (created "26-JAN-83 23:15:35")
	 (creator STEFIK)
	 (edited "16-NOV-83 18:05:04")
	 (editor LOOPSCOURSE.GUEST)]


[DEFINST Rule ("NNS0.lVC1.DT8.1097")
         (source 
"(* Ask to go to a stopping place returned by FindStoppingPlace)

	-> .FindStoppingPlace (← \PlayerInterface Move self stoppingPlace);")
	 (edited "16-NOV-83 18:12:56")
	 (editor LOOPSCOURSE.GUEST)
	 (ruleNumber 1)
	 (ruleSet #&(RuleSet "NNS0.lVC1.DT8.1087"))]


[DEFINST Rule ("NNS0.lVC1.DT8.1098")
         (source 
" 
(* Check if real truck location is a gas station.  Don't  
   use stoppingPlace, since chosen it may not have been reached  
   because of cops or robbers)

	IF (ISA truck:location $GasStation)
	 THEN .BuyGas;")
	 (edited "16-NOV-83 18:12:56")
	 (editor LOOPSCOURSE.GUEST)
	 (ruleNumber 2)
	 (ruleSet #&(RuleSet "NNS0.lVC1.DT8.1087"))]


[DEFINST Rule ("NNS0.lVC1.DT8.1089")
         (source 
"(* Switch destination and nextDestination when you arrive)
	IF truck:location=destination
	THEN temp ← destination
	     destination ← nextDestination
	     nextDestination ← temp
	     direction ← (DirectionOf destination);")
	 (edited "16-NOV-83 18:12:56")
	 (editor LOOPSCOURSE.GUEST)
	 (ruleNumber 3)
	 (ruleSet #&(RuleSet "NNS0.lVC1.DT8.1087"))]


[DEFINST Rule ("NNS0.lVC1.DT8.1086")
         (source 
"(* Top Level RuleSet for BigMac.
   Travel between the two AlicesRestaurant)

	(* On first call, initialize destination and nextDestination)
	IF ~destination
	 THEN alices←(RoadStops 'AlicesRestaurant)
	     destination ← (CAR alices) direction ← (DirectionOf destination)
	     nextDestination ← (CADR alices);")
	 (edited "16-NOV-83 18:05:04")
	 (editor LOOPSCOURSE.GUEST)
	 (ruleNumber 1)
	 (ruleSet #&(RuleSet "NNS0.lVC1.DT8.1080"))]


[DEFINST Rule ("NNS0.lVC1.DT8.1099")
         (source "	 THEN .GoToStoppingPlace;")
	 (edited "16-NOV-83 18:05:04")
	 (editor LOOPSCOURSE.GUEST)
	 (ruleNumber 2)
	 (ruleSet #&(RuleSet "NNS0.lVC1.DT8.1080"))]


(DEFINEQ

(GoToStoppingPlaceBigMacRules
  [LAMBDA (self)
    (PROG (↑auditRecord ↑value temp)
          [SETQ ↑value (PROGN (← self FindStoppingPlace)
			      (← PlayerInterface Move self (GetValue self (QUOTE stoppingPlace]
          [COND
	    ((ISA (GetValue (GetValue self (QUOTE truck))
			    (QUOTE location))
		  ($ GasStation))
	      (SETQ ↑value (← self BuyGas]
          [COND
	    ((EQ (GetValue (GetValue self (QUOTE truck))
			   (QUOTE location))
		 (GetValue self (QUOTE destination)))
	      (SETQ ↑value (PROGN (PROGN                     (* Make an audit record for this rule and set its audit 
							     values.)
					 (SETQ ↑auditRecord (← ($ StandardAuditRecord)
							       NewTemp))
					 (PutValue ↑auditRecord (QUOTE rule)
						   (GetObjFromUID "NNS0.lVC1.DT8.1089")))
				  (SETQ temp (GetValue self (QUOTE destination)))
				  (PutAuditRec self (QUOTE destination)
					       (GetValue self (QUOTE nextDestination))
					       ↑auditRecord)
				  (PutAuditRec self (QUOTE nextDestination)
					       temp ↑auditRecord)
				  (PutAuditRec self (QUOTE direction)
					       (DirectionOf (GetValue self (QUOTE destination)))
					       ↑auditRecord]
      QUIT(RETURN ↑value])

(TakeTurnBigMacRules
  [LAMBDA (self)
    (PROG (↑auditRecord ↑value alices)
          [COND
	    ((NOT (GetValue self (QUOTE destination)))
	      (SETQ ↑value (PROGN (PROGN                     (* Make an audit record for this rule and set its audit 
							     values.)
					 (SETQ ↑auditRecord (← ($ StandardAuditRecord)
							       NewTemp))
					 (PutValue ↑auditRecord (QUOTE rule)
						   (GetObjFromUID "NNS0.lVC1.DT8.1086")))
				  (SETQ alices (RoadStops (QUOTE AlicesRestaurant)))
				  (PutAuditRec self (QUOTE destination)
					       (CAR alices)
					       ↑auditRecord)
				  (PutAuditRec self (QUOTE direction)
					       (DirectionOf (GetValue self (QUOTE destination)))
					       ↑auditRecord)
				  (PutAuditRec self (QUOTE nextDestination)
					       (CADR alices)
					       ↑auditRecord]
          (SETQ ↑value (← self GoToStoppingPlace))
      QUIT(RETURN ↑value])
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1074 1316 (BigMac.SelectTruck 1084 . 1314)) (5242 7381 (GoToStoppingPlaceBigMacRules 
5252 . 6467) (TakeTurnBigMacRules 6469 . 7379)))))
STOP