Some backgrounds:
-It's a fighting game, multiple inputs are required for one 'fight'. That's the reason I do not allow the same input twice in a row.
-I check for empty input. Since there's a timer going on, empty input is possible. And should also be checked .
I create a dictionary of allowed input and the results. Also a list of synonyms:
Code: Select all
#FIGHTING DICTIONARY
#SYNTAX {'fighting_input': [input,'succes?','end of fight?','text','picture','sound','visual effect']
$ fight_dict = {'fail': ['fail',False,False,'PLACEHOLDER TEXT.','PLACEHOLDER PICTURE', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'fail_repeat': ['fail_repeat',False,False,'PLACEHOLDER TEXT','PLACEHOLDER PICTURE', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'fail_empty': ['fail_empty',False,False,'PLACEHOLDER TEXT','PLACEHOLDER PICTURE', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'punch': ['punch',True,False,'PLACEHOLDER TEXT', 'resources/images/fighting/f_01.png', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'kick': ['kick',False,False,'PLACEHOLDER TEXT','PLACEHOLDER PICTURE', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'stab': ['stab',True,True,'PLACEHOLDER TEXT','PLACEHOLDER PICTURE', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL'],
'snap kick': ['snap kick',True,False,'PLACEHOLDER TEXT','f_02', 'PLACEHOLDER SOUND','PLACEHOLDER VISUAL']}
$ fight_synonyms = {'punch': ['punch', 'jab', 'hook', 'uppercut'], 'kick': ['kick', 'sidekick', 'roundhouse kick'], 'stab': ['stab', 'shank', 'slash']}
In the fight I create a list of synonyms input:
Code: Select all
$ possible_inputs = fight_synonyms.keys()
Code: Select all
label input_on_list:
hide countdown
if player_input == "": #CHECK IF PLAYER ENTERED NOTHING
$ succes_list = fight_dict['fail_empty']
jump process_fail_result
elif player_input.lower() == previous_input: #CHECK IF PLAYER ENTERED THE EXACT SAME VALUE AS BEFORE
$ succes_list = fight_dict['fail_repeat']
jump check_player_input
elif player_input.lower() in list_fight_input: #CHECK IF THE PLAYER ENTERED A VALID VALUE FROM THE INPUT LIST
$ succes_list = fight_dict[player_input.lower()]
jump check_player_input
else:
$ i = 0
while (i < len(possible_inputs)): #CHECK IF THE PLAYER ENTERED A SYNONYM OF A VALUE ON THE INPUT LIST
$ temp_input = possible_inputs[i]
$ synonym_list = fight_synonyms[temp_input]
$ lowered_player_input = player_input.lower()
if lowered_player_input in synonym_list:
$ succes_list = fight_dict[temp_input]
jump check_player_input
$ i = i + 1
$ succes_list = fight_dict['fail'] #NONE OF THE ABOVE WAS TRUE, SET VALUES FOR GENERAL FAIL
$ previous_input = ""
jump process_fail_result