Package teamwork :: Package examples :: Package Thespian :: Module minimalGui
[hide private]
[frames] | no frames]

Source Code for Module teamwork.examples.Thespian.minimalGui

  1  
 
  2  """
 
  3  __version__ = "$Revision: 1.10 $"
 
  4  __date__ = "$Date: 2004/04/24 22:13:31 $"
 
  5  """ 
  6  
 
  7  from PythonCard import model 
  8  
 
  9  from ThespianShell import ThespianShell 
 10  
 
 11  import string 
 12  import sys 
 13  
 
 14  
 
 15  
 
16 -class MinimalGui(model.Background):
17 ratInTeam = [] 18 19 #actionitems = ['request-match', 'request-exercise', 'accept', 'reject', 'eshock', 'feedV','buyLR', 'catchSR'] 20 actionitems = ['request-match', 'request-exercise', 'eshock', 'feedV'] 21 actionitems1 = ['request-match', 'request-exercise', 'eshock'] 22 object = ['labrat1', 'labrat2', 'streetrat'] 23 terminal = None 24
25 - def on_initialize(self, event):
26 self.terminal = ThespianShell(scene='6') 27 nextturn = self.terminal.entities.next() 28 actor = nextturn[0]['name'] 29 while not actor == 'usr': 30 self.terminal._step(1) 31 nextturn = self.terminal.entities.next() 32 actor = nextturn[0]['name']
33 34
35 - def on_object_select(self, event):
37
38 - def update_action_choice(self):
39 object = self.components.object.stringSelection 40 41 if self.terminal.entities[object].getState('ThespianType').expectation() < .5: 42 if (object == 'labrat1' or object == 'labrat2'): 43 if self.terminal.entities['usr'].getState('money').expectation() > .99: 44 self.components.actionchoice.items=['buyLR'] 45 else: 46 self.components.actionchoice.items=[] 47 else: 48 self.components.actionchoice.items=['catchSR'] 49 elif self.terminal.entities[object].getState('requested-to-match').expectation() > .5: 50 self.components.actionchoice.items=['accept', 'reject'] 51 elif self.terminal.entities['usr'].getState('money').expectation() > .05: 52 self.components.actionchoice.items = self.actionitems 53 else: 54 self.components.actionchoice.items = self.actionitems1 55 56 self.components.actionchoice.stringSelection = self.components.actionchoice.items[0]
57 58
59 - def update_agent_state(self):
60 61 ratInTeam = [] 62 if self.terminal.entities['labrat1'].getState('ThespianType').expectation() >= .5: 63 ratInTeam.append(self.components.labrat1) 64 if self.terminal.entities['labrat2'].getState('ThespianType').expectation() >= .5: 65 ratInTeam.append(self.components.labrat2) 66 if self.terminal.entities['streetrat'].getState('ThespianType').expectation() >= .5: 67 ratInTeam.append(self.components.streetrat) 68 69 70 for rat in ratInTeam: 71 rat.DeleteAllItems() 72 root = rat.addRoot(rat.name) 73 rat.setItemHasChildren(root, 1) 74 rat.appendItem(root, "health "+str(self.terminal.entities[rat.name].getState('health').expectation())) 75 rat.appendItem(root, "raport "+str(self.terminal.entities[rat.name].getState('SD').expectation())) 76 rat.selectItem(root) 77 78 self.components.money.text = 'Your Money left: '+str(int(max(0,self.terminal.entities['usr'].getState('money').expectation()*1000))) 79 self.components.day.text = 'Day '+str(int(self.terminal.entities['timer'].getState('day').expectation()+1))
80 81
82 - def on_Submit_mouseClick(self, event):
83 object = self.components.object.stringSelection 84 act = self.components.actionchoice.stringSelection 85 self.terminal.execute('act usr '+act+' '+object) 86 87 i = 0 88 nextturn = self.terminal.entities.next() 89 actor = nextturn[0]['name'] 90 while not actor == 'usr': 91 sequence, res = self.terminal._step(1) 92 if actor in ['labrat1', 'labrat2', 'streetrat'] : 93 self.components.conversation.AppendText(`res`+'\n') 94 i = i+1 95 nextturn = self.terminal.entities.next() 96 actor = nextturn[0]['name'] 97 98 if i<4 : 99 self.terminal.execute('act usr wait') 100 i = i+1 101 nextturn = self.terminal.entities.next() 102 actor = nextturn[0]['name'] 103 while (not actor == 'usr') and i<4: 104 sequence, res = self.terminal._step(1) 105 if actor in ['labrat1', 'labrat2', 'streetrat'] : 106 self.components.conversation.AppendText(`res`+'\n') 107 i = i+1 108 nextturn = self.terminal.entities.next() 109 actor = nextturn[0]['name'] 110 111 self.update_agent_state() 112 self.update_action_choice()
113 114 115 if __name__ == '__main__': 116 117 app = model.Application(MinimalGui) 118 119 app.MainLoop() 120