def test__ALEXA_LOCAL_start_game(self): request = AlexaRequest(self.app, user_id='fred', application_id='quest_game') request.set_intent('StartGameIntent') response = request.post() print(response.data) self.assertEqual(ReplyHelpers.render_descr_template('are_you_sure'), response.get_output_text()) #Pass session_id to continue session request.set_intent('AMAZON.YesIntent') response = request.post(request.session_id) print(response.data) self.assertTrue( ReplyHelpers.render_descr_template('welcome') in response.get_output_text()) #Prompt based on starting a new game, different when you have a saved game #self.assertTrue(ReplyHelpers.render_descr_template('no_games') in response.get_output_text()) #self.assertTrue(ReplyHelpers.render_descr_template('no_games') in response.get_reprompt_text()) #Describe Thief request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'thief')]) response = request.post(request.session_id) print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_descr_template('descr_thief') in response.get_output_text()) return request
def __build_reply(self, ob): result = '' for reply in ob.replies: if Helpers.is_string(reply): result += ' ' + reply continue args = reply['args'] key = reply['key'] item = None if 'item' in args.keys(): item_name = args['item'] item = self.get_room_item_by_name(item_name) template = args['template'] if 'attacker_name' in args.keys(): if args['attacker_name'].lower() in ['thief','ranger','fighter','mage']: key = 'player_'+key else: key = 'monster_'+key if template == ReplyHelpers.TEMPLATE_ACTION: result += ' ' + ReplyHelpers.render_action_template(key, **args) elif template == ReplyHelpers.TEMPLATE_ROOM: if item: result += ' ' + ReplyHelpers.try_render_room_template(self, item, key, **args) else: result += ' ' + ReplyHelpers.render_room_template(key, **args) elif template == ReplyHelpers.TEMPLATE_COMMON: result += ' ' + ReplyHelpers.render_common_template(key, **args) elif template == ReplyHelpers.TEMPLATE_DESCRIPTION: result += ' ' + ReplyHelpers.render_descr_template(key, **args) return result
def describe(ditem): if __get_query() == ReplyHelpers.QUERY_CLASS: itm = ditem.lower() reply_text = '' if itm == 'mage': reply_text = ReplyHelpers.render_descr_template('descr_mage') elif itm == 'thief': reply_text = ReplyHelpers.render_descr_template('descr_thief') elif itm == 'fighter': reply_text = ReplyHelpers.render_descr_template('descr_fighter') elif itm == 'ranger': reply_text = ReplyHelpers.render_descr_template('descr_ranger') reply_text += ' ' + ReplyHelpers.render_common_template('choose_class') return __query(reply_text, query_state=ReplyHelpers.QUERY_CLASS) return __do_action(Actions.DESCRIBE, ditem)
def describe(self, item): if isinstance(item, players.Monster): monster = item return ReplyHelpers.render_descr_template('descr_{}'.format(monster.class_name.lower()), hit_points=monster.hit_points) return ReplyHelpers.render_descr_template('descr_{}'.format(item.name.lower()))
def test_CellRoom_Thief(self): gm = game_manager player = gm.create_player('thief') gm.start_new_game('fred', player) user = gm.get_user('fred', 'test') user.set_room(rooms.CellRoom(player)) #What can I do request = AlexaRequest(self.app, user_id='fred', application_id='quest_game') request.set_intent('WhatCanIDoIntent') response = request.post() print(response.get_output_text()) self.assertTrue( 'you could search the room' in response.get_output_text().lower()) player = user.room.player #Search room request = AlexaRequest(self.app, user_id='fred', application_id='quest_game') request.set_intent('SearchIntent') request.set_slots([request.create_slot('sitem', 'room')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('cellroom_search') in response.get_output_text()) player = user.room.player #What can I do request = AlexaRequest(self.app, user_id='fred', application_id='quest_game') request.set_intent('WhatCanIDoIntent') response = request.post() print(response.get_output_text()) self.assertTrue('you could open the loose stone' in response.get_output_text().lower()) #Search room request.set_intent('SearchIntent') response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('cellroom_search') in response.get_output_text()) #What can I do request.set_intent('WhatCanIDoIntent') response = request.post() print(response.get_output_text()) #Pull loose stone request.set_intent('PullIntent') request.set_slots([request.create_slot('item', 'loose stone')]) response = request.post() print(response.get_output_text()) lockpick = items.LockPick() self.assertTrue( ReplyHelpers.render_room_template('cellroom_pull_stone') in response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('cellroom_pull_stone_full', item_text=lockpick.description) in response.get_output_text()) self.assertTrue(player.is_carrying(lockpick)) #What can I do request = AlexaRequest(self.app, user_id='fred', application_id='quest_game') request.set_intent('WhatCanIDoIntent') response = request.post() print(response.get_output_text()) self.assertTrue( 'you could search the straw' in response.get_output_text().lower()) #Pull loose stone again request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'loose stone')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('cellroom_pull_stone') in response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('cellroom_pull_stone_empty') in response.get_output_text()) #Pull door request.set_intent('PullIntent') request.set_slots([request.create_slot('item', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('locked', item='door') in response.get_output_text()) #Open something request.set_intent('OpenIntent') request.set_slots([]) response = request.post() print(response.get_output_text()) request.set_intent('SelectItemIntent') request.set_slots([request.create_slot('ditem', 'door')]) response = request.post(request.session_id) print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('locked', item='door') in response.get_output_text()) #Pull chest request.set_intent('PullIntent') request.set_slots([request.create_slot('item', 'chest')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'no_such_room_item', room='room', action='pull') in response.get_output_text()) #Describe dagger request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'dagger')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'no_such_room_item', room='room', action='describe') in response.get_output_text()) #Open door request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('locked', item='door') in response.get_output_text()) #Open window request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'window')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'cellroom_barred_window_open_cannot') in response.get_output_text()) #Pickup bread request.set_intent('PickupIntent') request.set_slots([request.create_slot('ditem', 'bread')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'pickup_item', item=items.StaleBread().description) in response.get_output_text()) #Pickup bread request.set_intent('PickupIntent') request.set_slots([request.create_slot('ditem', 'bread')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'no_such_room_item', action='pickup', room='room') in response.get_output_text()) #Drop bread request.set_intent('DropIntent') request.set_slots([request.create_slot('ditem', 'bread')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'drop_item', item=items.StaleBread().description) in response.get_output_text()) #Pickup bread request.set_intent('PickupIntent') request.set_slots([request.create_slot('ditem', 'bread')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template( 'pickup_item', item=items.StaleBread().description) in response.get_output_text()) #Search floor request.set_intent('SearchIntent') request.set_slots([request.create_slot('sitem', 'floor')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('search_item', item='floor') in response.get_output_text()) picked = False while not picked: #Picklock door request.set_intent('PickLockIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() picked = ReplyHelpers.render_room_template( 'picklock_success', item='door') in response.get_output_text() self.assertTrue( ReplyHelpers.render_room_template('picklock_success', item='door') in response.get_output_text() or ReplyHelpers.render_room_template('picklock_fail', item='door') in response.get_output_text()) player = user.player player.max_hit_points = 100 player.strength_base = 15 player.dexterity_base = 10 #Search straw request.set_intent('SearchIntent') request.set_slots([request.create_slot('sitem', 'straw')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('search_item', item='straw') in response.get_output_text()) #Rat has attacked #Describe rat monster = user.room.get_monsters()[0] monster.max_hit_points = 20 request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'rat')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_descr_template('descr_rat', hit_points=monster.hit_points) in response.get_output_text()) while len(user.room.get_alive_monsters()) > 0: if player.get_item(weapons.Dagger()).count == 4: request.set_intent('ThrowTargetIntent') request.set_slots([ request.create_slot('target', 'rat'), request.create_slot('titem', 'dagger') ]) elif player.get_item(weapons.Dagger()).count == 3: request.set_intent('ThrowIntent') request.set_slots([request.create_slot('titem', 'dagger')]) else: request.set_intent('StrikeIntent') request.set_slots([request.create_slot('target', 'rat')]) if player.get_item(weapons.Dagger()).count == 1: player.pickup(weapons.Dagger(3)) response = request.post() print(response.get_output_text()) #search rat request.set_intent('SearchIntent') request.set_slots([request.create_slot('sitem', 'rat')]) response = request.post() print(response.get_output_text()) #self.assertTrue(ReplyHelpers.render_room_template('search_item',item='rat') in response.get_output_text()) request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'rat')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_descr_template('descr_rat', hit_points=monster.hit_points) in response.get_output_text()) #Describe dagger request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'dagger')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_descr_template('descr_dagger') in response.get_output_text()) #Open door request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('door_open') in response.get_output_text()) #Go back to cell request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) #Open door again request.set_intent('OpenIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('door_already_open') in response.get_output_text()) #Unlock open door request.set_intent('UnlockIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('not_locked', item='door') in response.get_output_text()) #Close an open door request.set_intent('CloseIntent') request.set_slots([request.create_slot('oitem', 'door')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_room_template('close', item='door') in response.get_output_text()) #Describe dagger request.set_intent('DescribeItemIntent') request.set_slots([request.create_slot('ditem', 'dagger')]) response = request.post() print(response.get_output_text()) self.assertTrue( ReplyHelpers.render_descr_template('descr_dagger') in response.get_output_text())