AI-programmering del 1

28Dec06

Efter gårdagens LUG-möte i Malmö där kvällens spontana diskussions ämne var programmerining i C och C++ och AI blev jag så inspirerad att jag tillägnar hela dagens blogg just ämnet AI. Vi diskuterade mest pathfinding och olika teorier kring det, tex A*, “WallTrace”, “Waypoints” med fördefinierade noder. Jag ska inte gå in på dessa teorier just i dag, utan dagens ämne “beslutsfattande” AI i form av en Finite State Machine.

En Finite State Machine är en “maskin” som kan vara i ett av flera fördefinierade lägen (sk states). En finite state machine behöver även ett antal vilkor för att ändra läge. I mitt fall är exemplet en myrkoloni (ursprungligen ett exempel i från “AI fore Game Developers” från O’Reillys förlag). Myrorna kan där ha ett av fem lägen “kForage”, “kGoHome”, “kThirsty”, “kLastFood” och “kDead”.

states_2.png

kForage är initialläget, då är myran hungrig och letar mat. Hittar myran mat så byter den läge till kGoHome och går raka vägen hem. När myran kommer hem så skapas det en ny myra som har läget kForage och den ursprungliga myran intar läget kThirsty och påbörjar sin jakt på vatten. I orginal exemplet ska myran gå till kForage när den har hittat vatten. Jag ville lägga till ett fjärde läge som jag kallar kLastFood, vilket innebär att myran går till punkten där den senast hittade mat för att där börja sökandet efter maten. Det femte och sista stadiet är kDead och som namnet antyder dör myran i det stadiet. Myran dör om den hittar gift i sitt sökande efter de andra resurserna.

ai_tester_mini.png

Download: ai_tester.tar.gz

Angående koden: Projeket använder sig av QT3, men kan ha något KDE beroende som måste lösas (jag vet inte säkert). Alla fina finnesser i menyerna är inte färdiga (och en del buggar). Innan man trycker på “Start” måste man trycka på “Slumpa” under “Settings”. Inställnings sliderna fungerar men är buggiga ;-).

Jag skrev ursprungligen koden i C++ med SDL för att hantera grafiken. Jag har även skrivit en version som KDE-screensaver, men dessa två versioner finns inte släppta för allmänheten än. Vem vet, de kanske kommer någon dag.

//Fredrik Persson

About these ads


One Response to “AI-programmering del 1”


  1. 1 Hackmeetup « Fredriks blogg om allt möjligt (och lite till)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: