forked from Cryz/battle_royale_sim
start implement random action
This commit is contained in:
@@ -115,25 +115,47 @@ class BrSimMap():
|
||||
avail_directions.append((0, 1, 'giu\''))
|
||||
return avail_directions
|
||||
|
||||
def check_near_players(self):
|
||||
def check_near_players(self, Player):
|
||||
# TODO Implement me
|
||||
return True
|
||||
# 1. range weapons like arch can attack from distance
|
||||
# 2. knife, sword and punch can attack only on immediate near cell
|
||||
|
||||
def check_near_items(self):
|
||||
coord_x, coord_y= Player.get_coordinates()
|
||||
attackable_players= []
|
||||
for shift in [-1, 1]:
|
||||
x= coord_x + shift
|
||||
if x < 0 or x >= self.world_width -1: continue
|
||||
resource= self.get_map_matrix()[x][coord_y]
|
||||
if resource and resource.is_player(): attackable_players.append(resource)
|
||||
for shift in [-1, 1]:
|
||||
y= coord_y + shift
|
||||
if y < 0 or y >= self.world_height -1: continue
|
||||
resource= self.get_map_matrix()[coord_x][y]
|
||||
if resource and resource.is_player(): attackable_players.append(resource)
|
||||
|
||||
return attackable_players
|
||||
|
||||
def check_near_items(self, Player):
|
||||
# TODO Implement me
|
||||
return False
|
||||
return []
|
||||
|
||||
def get_player_available_actions(self, Player):
|
||||
# TODO: define actions list
|
||||
coord_x, coord_y= Player.get_coordinates()
|
||||
avail_actions= []
|
||||
|
||||
if self.check_near_players(Player):
|
||||
avail_actions.append(1) #XXX replace with attack action (or maybe other actions on players)
|
||||
avail_actions= {}
|
||||
|
||||
attack= self.check_near_players(Player)
|
||||
if attack:
|
||||
print(f'{Player.get_name()} can attack {[a.get_name() for a in attack]}')
|
||||
#avail_actions.append(1) #XXX replace with attack action (or maybe other actions on players)
|
||||
avail_actions[1]= attack #XXX replace with attack action (or maybe other actions on players)
|
||||
if self.get_player_available_directions(Player):
|
||||
avail_actions.append(2) #XXX replace with action move
|
||||
if self.check_near_items(Items):
|
||||
avail_actions.append(3) #XXX replace with get item action
|
||||
avail_actions[2]= True #XXX replace with action move
|
||||
items= self.check_near_items(Player)
|
||||
if items:
|
||||
avail_actions[3]= items #XXX replace with get item action
|
||||
|
||||
return avail_actions
|
||||
|
||||
def get_renderized_map(self):
|
||||
res= ''
|
||||
|
||||
@@ -9,7 +9,7 @@ class BrSimPlayer(_resource.BrSimResource):
|
||||
self.id= str(_uuid.uuid4())
|
||||
self.name= name
|
||||
self.stats= ''
|
||||
self.health= _random.randint(1,3)
|
||||
self.health= _random.randint(1,1)
|
||||
self.inventory= inventory or []
|
||||
self.damage= _random.randint(1,2) # this is the punch damage amount
|
||||
self.max_weight= 5 # this is the max inventory weight
|
||||
|
||||
Reference in New Issue
Block a user