107 lines
3.6 KiB
ReStructuredText
107 lines
3.6 KiB
ReStructuredText
.. _lib_api:
|
|
|
|
Api
|
|
****
|
|
|
|
Seeding
|
|
========
|
|
|
|
.. autoclass:: compLib.Api.Seeding
|
|
:members:
|
|
|
|
Double Elimination
|
|
===================
|
|
|
|
.. autoclass:: compLib.Api.DoubleElim
|
|
:members:
|
|
|
|
Position
|
|
========
|
|
|
|
.. autoclass:: compLib.Api.Position
|
|
:members:
|
|
|
|
|
|
Examples
|
|
========
|
|
|
|
Calling Seeding API
|
|
---------------------
|
|
|
|
.. code-block:: python
|
|
|
|
from compLib.Api import Seeding
|
|
|
|
zones, code = Seeding.get_delivery()
|
|
if code == 403:
|
|
print(f"I am not in the correct zone to make that request!")
|
|
else:
|
|
print(f"First we need to go to zone {zone[0]}")
|
|
# put code here to follow line and drive to the zone
|
|
print(f"Now we need to go to zone {zone[1]}")
|
|
# put code here to follow line and drive to the next zone
|
|
print(f"Now we need to go to zone {zone[2]}")
|
|
# put code here to follow line and drive to the last zone
|
|
print(f"We delivered all packages, hopefully we scored some points!")
|
|
|
|
.. code-block:: python
|
|
|
|
from compLib.Api import Seeding
|
|
|
|
package, code = Seeding.get_cargo("yellow")
|
|
if code == 403:
|
|
print(f"I am not in the correct zone to make that request!")
|
|
elif code == 404:
|
|
print(f"I am in the correct zone, but there is no yellow package here.")
|
|
elif code == 413:
|
|
print(f"I am in the correct zone, but I already have two packages loaded.")
|
|
else code == 200:
|
|
print(f"The {package['color']} has been picked up!")
|
|
|
|
Calling Double Elimination API
|
|
----------------------------------
|
|
|
|
.. code-block:: python
|
|
|
|
from compLib.Api import DoubleElim
|
|
|
|
position, status = DoubleElim.get_position()
|
|
print(f"Position of my robot is: x={position.x}, y={position.y} and rotation is: {position.degrees}, the server responded with status code: {status}")
|
|
|
|
goal, status = DoubleElim.get_goal()
|
|
print(f"Goal is at: x={goal.x}, y={goal.y}, the server responded with status code: {status}")
|
|
|
|
.. code-block:: python
|
|
|
|
from compLib.Api import DoubleElim
|
|
import time
|
|
|
|
# function which waits for the game to be started (you should include this in your double elimination program)
|
|
def wait_for_start():
|
|
_, status = DoubleElim.get_position()
|
|
while status == 503:
|
|
time.sleep(0.1)
|
|
_, status = DoubleElim.get_position()
|
|
|
|
wait_for_start()
|
|
print(f"Game has started, lets score some points!!")
|
|
|
|
position, status = DoubleElim.get_position()
|
|
print(f"Position of my robot is: x={position.x}, y={position.y} and rotation is: {position.degrees}, the server responded with status code: {status}")
|
|
|
|
opponent_position, status = DoubleElim.get_opponent()
|
|
print(f"Position of the opponents robot is: x={opponent_position.x}, y={opponent_position.y} and rotation is: {opponent_position.degrees}, the server responded with status code: {status}")
|
|
|
|
goal, status = DoubleElim.get_goal()
|
|
print(f"Goal is at: x={goal.x}, y={goal.y}, the server responded with status code: {status}")
|
|
|
|
items, status = DoubleElim.get_items()
|
|
print(f"There are currently {len(items)} on the gameboard: {items}, the server responded with status code: {status}")
|
|
|
|
score, status = DoubleElim.get_score()
|
|
print(f"The current score of the game is {score}, the server responded with status code: {status}")
|
|
|
|
meteoroids, status = DoubleElim.get_meteoroids()
|
|
print(f"The current meteoroids in the game are {meteoroids}, the server responded with status code: {status}")
|
|
|
|
In this second example we wait until the game is started by the judges and then make all possible requests once. You should use the wait_for_start function in your double elimination program. If your robot starts too soon your run will not count!
|