webForumDet fria alternativet

Datorstrategier i enkelt Java-spel

Java

4 svar · 484 visningar · startad av jepsO

Medlem sedan mars 2001484 inlägg
Frågan#1

Jag pysslar med ett spel i en Java-kurs. Spelet är en förenklad version av Dam, som ni kanske känner till.

Lite om hur spelet är uppbyggt:
- Info om spelplanen lagras i en array squares som består av objekt av typen Square (innehåller spelare, pjästyp, position på spelplanen).
- Det finns två typer av pjäser: bönder och damer. Damer skapas då en bonde når andra sidan av brädet, som i schack.
- Man vinner genom att antingen eliminera eller blockera alla motståndarens pjäser.

Ett obligatoriskt moment är att man ska kunna spela mot datorn. Mitt problem ligger i hur jag ska utforma datorns strategier. Jag har ett par idéer om hur man skulle kunna göra, men förmodligen är jag inte den förste som ställts inför samma problem.

Har ni några tips på hur man på bästa sätt skapar en bra men enkel "AI"? Vi snackar alltså ingen ny Deep Blue, men heller inte någon löjligt enkel lösning.

Medlem sedan sep. 2001961 inlägg
#2

Normalt när man pratar om ett "simpel-AI" som är hårt regelstyrd så brukar man använda sig av poäng.

Vad man gör är att man låter datorn göra alla möjliga drag och sedan väljer man det som ger mest poäng. Hur man räknar ut poängvärdet på ett drag får man bestämma själv och det kräver ofta ganska mycket tankearbete.

Ofta gör man så att man låter datorn göra ett drag, sedan simulera dina möjliga drag och så reagerar man på detta i ett antal steg och sedan tar man det som ger högst poäng på sikt.

Det gör dock att det är ganska lätt att finta datorn genom att göra något fullständigt puckat.

Om du söker på olika AI-teorier så finns det färdiga ramverk för detta.

Medlem sedan mars 2001484 inlägg
#3

Fint, det var faktiskt precis så jag hade tänkt själv :). Ska lyda ditt råd och söka lite, tack!

Du har inget tips på var man hittar sådana teorier och ramverk? Kasta sig ut i Google, eller en bättre startplats?

Medlem sedan juni 200420 inlägg
Medlem sedan mars 2001484 inlägg
#5

Tack för hjälpen! Efter att ha sökt lite enligt era tips hittade jag en generell strategi: "MinMax" med "Alpha-Beta pruning". Ta en titt pa http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html för att se hur det funkar.

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)