Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1.  
  2.  
  3. def move_one_step(maparr, population, max_y, max_x):
  4. for status in population:
  5. for idnum, person in population[status].items():
  6. if not person["quarantine"]:
  7. y, x = person['loc_y'], person['loc_x']
  8. y_speed, x_speed = person['y_speed'], person['x_speed']
  9. y_dest, x_dest, = person["y_dest"], person["x_dest"]
  10.  
  11. new_y, new_x = _get_next_position(x, y, x_speed, y_speed)
  12.  
  13. if new_x == x_dest:
  14. new_x_speed = 0
  15. elif abs(new_x - x_dest) >= abs(x - x_dest):
  16. new_x_speed = -1 * x_speed
  17. else:
  18. new_x_speed = x_speed
  19. if new_y == y_dest:
  20. new_y_speed = 0
  21. elif abs(new_y - y_dest) >= abs(y - y_dest):
  22. new_y_speed = -1 * y_speed
  23. else:
  24. new_y_speed = y_speed
  25.  
  26. if new_x == x_dest and new_y == y_dest:
  27. # reached destination so now seeking new one
  28. new_y_dest, new_x_dest = get_new_destination(max_y, max_x)
  29. new_x_speed = 1 if x < new_x_dest else -1
  30. new_y_speed = 1 if y < new_y_dest else -1
  31. pu = {"x_speed": new_x_speed,
  32. "y_speed": 1 if y < new_y_dest else -1,
  33. "x_dest": new_x_dest, "y_dest": new_y_dest,
  34. }
  35. # person.update(pu)
  36. population[status][idnum].update(pu)
  37. # check if in map
  38. if _is_pos_in_map(new_x, new_y, max_x, max_y):
  39. # check if not taken already
  40. if maparr[new_y][new_x] is None:
  41. maparr[new_y][new_x] = person
  42. maparr[y][x] = None
  43. pu = {"loc_x": new_x, "loc_y": new_y,
  44. "x_speed": new_x_speed,
  45. "y_speed": new_y_speed,
  46. }
  47. population[status][idnum].update(pu)
  48. else:
  49. phase_x_speed = x_speed*2
  50. phase_y_speed = y_speed*2
  51. new_y, new_x = _get_next_position(x, y, phase_x_speed, phase_y_speed)
  52. for i in range(5):
  53. if not maparr[new_y][new_x] is None:
  54. phase_x_speed = x_speed*2
  55. phase_y_speed = y_speed*2
  56. new_y, new_x = _get_next_position(x, y, phase_x_speed, phase_y_speed)
  57. else:
  58. break
  59. if maparr[new_y][new_x] is None:
  60. maparr[new_y][new_x] = person
  61. maparr[y][x] = None
  62. pu = {"loc_x": new_x, "loc_y": new_y,
  63. "x_speed": new_x_speed,
  64. "y_speed": new_y_speed,
  65. }
  66. population[status][idnum].update(pu)
  67.  
  68. return maparr, population
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement