planetwars.dev/examples/python/example.py

65 lines
2.1 KiB
Python
Raw Normal View History

2023-11-20 16:34:47 +01:00
import sys, random
from planetwars import PlanetWars, log
"""
============================================
______ _ _______ _____
|___ / | | | | ___ \_ _|
/ / ___ _ _ ___ | | | | |_/ / | |
/ / / _ \ | | / __| | |/\| | __/ | |
./ /__| __/ |_| \__ \ \ /\ / | _| |_
\_____/\___|\__,_|___/ \/ \/\_| \___/
============================================
Voorbeeld implementatie van de klassen in planetwars.py
De bot die hier wordt gemaakt is een speelgoed voorbeeldje.
Hij werkt zeer simpel.
Elke ronde stuurt hij al zijn schepen naar een op voorhand bepaalde planeet.
Die planeet wordt bepaald aan de hand van de volgende regels:
1. Is er een neutrale planeet vrij
-> Ja, pak een random neutrale planeet
-> Nee, ga naar stap 2
2. Pak een random planeet van de tegenstander
"""
# Maak onze instance aan
planetwars = PlanetWars()
# Je kan een nieuwe beurt herkennen aan een nieuwe lijn die in stdin terecht komt.
# Dit gaat voor elke lijn (dus elke beurt) paar acties ondernemen.
for line in sys.stdin:
# Update onze klasse
parsed = planetwars.update(line)
if not parsed:
# Bij de huidige implementatie zou dit nooit het geval mogen zijn.
# Indien dit wel het geval is ligt het aan de game en niet aan jouw eigen code!
log("Error: Game input wrongly formatted!")
continue
# De planeet waar we alles gaan naar sturen
chosen_planet = None
# Pak een random neutrale planeet
if len(planetwars.neutral_planets) != 0:
# Als er neutrale planeten zijn pak dan een willekeurige neutrale planeet.
chosen_planet = random.choice(planetwars.neutral_planets)
else:
# Anders pak een willekeurige planeet van de tegenstander
chosen_planet = random.choice(planetwars.enemy_planets)
# Stuur al onze schepen naar de gekozen planeet
for planet in planetwars.my_planets:
planetwars.add_move(planet, chosen_planet, planet.ship_count)
# Verzend onze zetten
planetwars.move()
# Einde van de beurt, wacht tot een nieuwe beurt begint en de cycle begint weer!