giganciprogramowania

l10. agent całość

Mar 30th, 2022 (edited)
1,114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. #po pierwszym uruchomieniu agent teleportowany jest do gracza i to od niego zaczyna budowanie kolejki
  2. agent.teleport_to_player()
  3. #zmienna ta będzie nadpisywana z funkcji dzięki temu budując w górę lub w dół zachowamy ostatni kierunek
  4. ostatniKierunek=CompassDirection.SOUTH
  5.  
  6. '''
  7. Założenia projektowe:
  8.  
  9. slot 1 - tory
  10. slot 2 - zasilane tory
  11. slot 3 - stone
  12. slot 4 - redstone
  13. '''
  14.  
  15. def uzupelnijBloki():
  16. #dajemy agentowi blok torów w liczbie 64 w slocie 1
  17. agent.set_item(RAIL, 64, 1)
  18. agent.set_item(POWERED_RAIL, 64, 2)
  19. agent.set_item(STONE, 64, 3)
  20. agent.set_item(REDSTONE_BLOCK, 64, 4)
  21.  
  22.  
  23. def budowanieKolejki(iloscTorow,kierunek,rodzajTorow):
  24. #zmienna przechowująca aktualną ilość wybudowanych torów, wywołując funkcję sami decydujemy ile agent ma wybudować torów
  25. aktualnaLiczbaTorow = 0
  26.  
  27. #tworzymy globalną zmienną, w której będzie zapisany ostatni kierunek jaki posiadał agent
  28. global ostatniKierunek
  29. #funkcja, która uzupełnia sloty agenta odpowiednimi blokami tak aby mógł budować
  30. uzupelnijBloki()
  31.  
  32. if kierunek==1 :
  33. aktualnyKierunekAgenta=CompassDirection.SOUTH
  34.  
  35. elif kierunek==2:
  36. aktualnyKierunekAgenta=CompassDirection.WEST
  37.  
  38. elif kierunek==3:
  39. aktualnyKierunekAgenta=CompassDirection.EAST
  40.  
  41. elif kierunek==4:
  42. aktualnyKierunekAgenta=CompassDirection.NORTH
  43. #kierunek 5-dół, kierunek 6-góra
  44. else:
  45. aktualnyKierunekAgenta=ostatniKierunek
  46.  
  47.  
  48. #teleportujemy agenta, tak naprawdę zależy nam tutaj na jego kierunku, który z czasem będziemy modyfikować
  49. agent.teleport(agent.get_position(),aktualnyKierunekAgenta)
  50. #podczas przemieszczania się agent umieszcza blok ze wskazanego slotu
  51. agent.set_assist(PLACE_ON_MOVE, True)
  52. #podczas przemieszczania się agent niszczy bloki które stają na jego drodze
  53. agent.set_assist(DESTROY_OBSTACLES, True)
  54.  
  55. # pętla działa do momentu wybudowania liczby torów którą gracz wskazał podczas wywołania funkcji
  56. while aktualnaLiczbaTorow < iloscTorow:
  57. # czyszczenie trasy pod torem aby móc postawić tam bloki redstone do zasilanych torów
  58. if rodzajTorow == 2 and agent.inspect(AgentInspection.BLOCK, DOWN) != REDSTONE_BLOCK:
  59. agent.destroy(DOWN)
  60. #czyszczenie trasy nad torem
  61. if agent.detect(AgentDetection.BLOCK, UP):
  62. agent.destroy(UP)
  63.  
  64.  
  65.  
  66. #jeśli agent wykryje że jest w powietrzu lub w wodzie i nie ma na czym budować to umieszcza blok stone
  67. elif agent.inspect(AgentInspection.BLOCK, DOWN) == 0 or agent.inspect(AgentInspection.BLOCK, DOWN) == 9:
  68. if rodzajTorow==1:
  69. agent.set_slot(3)
  70. else:
  71. agent.set_slot(4)
  72. agent.place(DOWN)
  73. else:
  74. if rodzajTorow==1:
  75. agent.set_slot(1)
  76. else:
  77. agent.set_slot(2)
  78. #budowanie kolejki w dół
  79. if kierunek==5:
  80. agent.move(FORWARD, 1)
  81. agent.destroy(UP)
  82. agent.set_assist(PLACE_ON_MOVE, False)
  83. agent.move(DOWN, 1)
  84. agent.set_assist(PLACE_ON_MOVE, True)
  85. aktualnaLiczbaTorow += 1
  86. #budowanie kolejki w górę
  87. elif kierunek==6:
  88.  
  89. agent.move(FORWARD,1)
  90. agent.destroy(UP)
  91. agent.set_assist(PLACE_ON_MOVE, False)
  92. agent.move(UP,2)
  93. agent.destroy(UP)
  94. agent.move(DOWN,1)
  95. agent.set_assist(PLACE_ON_MOVE, True)
  96. aktualnaLiczbaTorow += 1
  97.  
  98. else:
  99. #agent idzie do przodu
  100. agent.move(FORWARD, 1)
  101. aktualnaLiczbaTorow += 1
  102. ostatniKierunek=aktualnyKierunekAgenta
  103. player.say("budowa zakończona")
  104. player.on_chat("b",budowanieKolejki)
  105.  
Add Comment
Please, Sign In to add comment