Korten Film Exempel Uppgifter Kartor Simulator Om

Simulering av Botrace

När man har förstått konceptet för Botrace är nästa steg att skriva ett program som gör samma sak. För att göra det möjligt finns det simuleringar av Botrace färdiga där man programmerar vad sin bot ska göra. För närvarande finns det simuleringsprogram för Python3.

Simulator i Python

Simulatorn i Python innehåller två huvudkomponenter, simulatorn och ett program som låter dig bygga egna banor. För att använda simulatorn krävs det att du har python3 installerat på datorn (det kan hämtas på Pythons hemsida). Nästa steg är att hämta simulatorn. Den senaste versionen kan hämtas här. När allt är hämtat och installerat är det bara att börja skriva ditt program som styr din bot.

1. Skriv ditt egna program

Bland filerna som är inkluderade i simulatorn finns exempel.py. I det här programmet har vi ett exempel för man använder simulatorn. Till att börja med går vi igenom grunderna för vad som görs i programmet.

1.1. Import

#!/usr/bin/env python3
from functionalBotrace import _botrace, set_stepping, set_repeat, load_map,\
	  go, back, right, left, turn, start, set_bot_count
      

Den första raden i koden är till för om man kör sitt program i från en terminal på en dator med Linux eller Mac OS. Använder man en IDE (till exempel IDEL) behöver den här raden inte vara med. De nästkommande raderna importerar de funktioner som man behöver för att bestämma vilken bana som används och för att beskriva hur sin bot ska agera så man kan använda dem i sitt program.

1.2. Simuleringsinställningar

set_stepping(True)
set_repeat(True)
set_bot_count(1) # Allowed bot count 1-4
load_map("test")
      

Med de här raderna kod skriver vi in vilka inställningar vår simulering har.

Funktionen set_stepping bestämmer om man behöver klicka för att simuleringen ska fortsätta. Sätter man värdet till true behöver man klicka och sätter man det till false kommer simulatorn köra av sig själv.

Funktionen set_repeat bestämmer om instruktionerna som man ger till boten ska upprepas när alla har körts.

Funktionen set_bot_count bestämmer hur många botar som ska vara med i simuleringen. Simulatorn klarar av 1-4 botar samtidigt.

Funktionen load_map bestämmer vilken bana som man ska köra. Namnet som man anger är samma namn som man gav till banan som man sparade. Med i zip-filen finns det även ett par förskapade banor ("uppgift1", "uppgift2", "uppgift3", "uppgift4").

1.3. Botinstruktioner

go(4, bot_nr = 1)
right(bot_nr = 1)
go(2, bot_nr = 1)
right(bot_nr = 1)
go(4, bot_nr = 1)
      

Det här är den koden som din bot kommer att utföra. Simulatorn har samma funktioner som korten har med två undantag. "while"-kortet finns inte som en funktion istället använder man Pythons inbyggda while- eller for-loop. "if"-kortet finns inte heller utan det har sin motsvarighet i Pythons inbyggda if-sats. Ytterligare än skillnad mellan korten och simulatorn är att funktioner tar in ett argument som beskriver vilken bot det är som utför instruktionen. I tabellen nedan beskriver vi alla funktioner som boten kan utföra i simulatorn samt vilka kort det motsvarar.

Funktion Argument Motsvarande kort
go(distance, bot_nr) distance - Antalet rutor boten ska gå.
bot_nr - Botens nummer
Go 1, Go 2, Go 3, Go 4
back(distance, bot_rn) distance - Antalet rutor som boten backar.
bot_nr - Botens nummer
Back 1
left(bot_nr) bot_nr - Botens nummer Left
right(bot_nr) bot_nr - Botens nummer Right
turn(bot_nr) bot_nr - Botens nummer Turn

1.5. Starta simulatorn

start()
      

Den här biten av koden säger till Simulatorn att den ska start. Värt att notera är att man inte kan göra några ändringar i botens instruktioner efter det här anropet.

1.6 Skapa din egna fil

För att skapa din egna bot skapar du en ny fil i samma mapp som exempel.py är i. Det är för att filen ska kunna finna simulatorn. Ditt program bör vara uppbyggt på samma sätt som exempelfilen och sen är det bara att köra programmet.

2. Simulatorn

Simulatorn för Botrace i Python3 ser ut som följande (exemplet är för Uppgift 4).

De olika delarna i simulatorn är följande:

1 Botens position och riktning. Är det fler botar i simuleringen kommer de vara en fjärdedels ruta stora och ha olika färger.
2 Besökt ruta. Alla rutor som är besökta kommer markeras med en blå färg samt ett eller flera nummer beroende på vilket eller vilka steg rutan besöktes.
3 Checkpoint. En röd ruta betyder att det är en ruta som fortfarande inte har besökts. Alla checkpoints måste besökas för att boten ska komma i mål och de måste besökas i nummerordning.
4 Informationsfält. Här står det hur många instruktioner som boten har utfört samt hur många steg den har tagit. Varje anrop till go, back, left, right eller turn räknas som en instruktion. Ett steg är varje steg som boten tar. Det vill säga varje gång boten svänger 90 grader, backar ett steg eller går fram ett steg kommer stegräknaren räkna upp.
5 Instruktionerna. Här visas kortet som motsvarar den instruktionen som utförs för tillfället. Eftersom att simulatorn inte har samma begränsningar som korten har finns det dock inte kort för alla handlingar som man kan utföra. Anropas till exempel go(10) finns det inget kort för den handlingen. I det här fallet visas istället kortet för go(1) att visas.
6 System kommandon. Här är programmets systemkommandon. Det finns enbart två knappar. Det ena är "Stega" och visas enbart om set_stepping(true) har anropats. Knappen "Stega" kommer få boten att utföra sin nästa instruktion. Den andra knappen är "Avsluta" vilket avslutar simulatorn.

3. Banbyggare

Banbyggaren som finns med i simulatorn kan användas för att bygga egna banor som man sedan kan köra i simulatorn. För att starta banbyggaren köra man programmet mapEditor.py. Banbyggaren ser ut som följande:

3.1 Arbetsyta

Det här är arbetsytan där du bygger din bana. Genom att välja verktyg i menyn till höger och sedan klicka på en ruta i arbetsytan bygger du upp din bana. Inställningar likt riktning och numrering kommer frågas efter men en pop-up rutan när du placerar ut föremål som behöver dessa.

3.2 Verktygsmeny

Här finns alla verktyg samt övriga kommandon i banbyggaren som du kan använda för att bygga upp din bana. Kommandona finns beskrivna i detalj nedan.

Spara Spara knappen kommer spara din bana. När det inte finns några förändringar kommer knappen vara gråmarkerad. Har du tidigare sparat banan kommer den sparas med samma namn.
Spara som Spara som fungerar exakt som Spara med undantaget att den alltid kommer fråga efter vad banan ska heta.
Checkpoint Det här verktyget placerar ut checkpoints på banan som boten måste passera, i nummerordning, för att komma i mål. En pop-up frågar efter vilket nummer checkpointen har.
Blockera Det här verktyget placerar ut blockeringar på banan. Det betyder att boten inte kan passera de här rutorna. Om boten försöker gå upp på en av dem kommer den inte att röra sig.
Start position Det här verktyget placerar ut startpositionen på banan. En pop-up frågar efter vilken riktning som boten ska starta i.
Ta bort Det här verktyget används för att ta bort vad som finns i en ruta på banan. Klickar man på en ruta tas allt i rutan bort.
Avsluta Klickar man på den här knappen avslutats programmet. Om man har icke sparade ändringar kommer programmet fråga om dessa ska sparas.

4. Buggar i Simulatorn och Banbyggare

Har du stött på något problem med simulatorn eller banbyggaren uppskattar vi om du kontaktar Erik Hansson, på Linköpings Universitet så att vi kan åtgärda det så fort som möjligt.

4.1 Kända buggar

För tillfället finns det inga kända buggar i simulatorn.

5. Versionshistorik

1.0 Första versionen (hämta)

Första versionen av botrace simulator med tillhörande banbyggare.