Pong på XGS bild (8 / 36 steg)
Steg 8: Spelet konstruktioner - spelet logik - artificiell intelligens (AI)
Vid denna punkt, kan alla logiken så långt göras till ett komplett två spelare spel. Det vore dock trevligt att möjliggöra en singleplayer-läget (och vara en intressant programplaneringen). AI behöver inte vara idiotsäkert men agera intelligent nog för att ge spelaren en utmaning att vara underhållande. Det nuvarande problemet vilar i definitionen av agerar intelligent.Hänvisning till den definierade tidigare, låt (bx, by) vara bollens nuvarande plats och (px, py) betecknar platsen för datorn spelarens paddel. Kollision upptäckt koden kommer att hantera uträkningen av kollisioner, men AI behöver för att flytta paddla på ett sådant sätt att paddla kommer att generera en kollision med bollen. Därför skulle oroa dig bx och px vara främmande. På grund av enkelheten i Pong finns det få fall att analysera.
Antag att py > by. Vad innebär detta i verkligheten när det gäller skärmen av lek? Det övre vänstra hörnet av paddeln är lägre än det övre vänstra hörnet av bollen på skärmen. Nästa problem är att definiera den optimala strategin för datorspelaren. Vanligtvis är den bästa strategin för datorspelaren analogt med en mänsklig spelare strategi. Det bästa sättet att stänga det vertikala avståndet mellan boll och paddlar är att flytta paddeln eller minska py.
Logiskt, det finns ett fall kvar att hantera: när py < = by. I skärmen av lek, kommer att ärendet hända om och endast om att paddla är högre än eller lika med bollens läge. Dessa två fall för AI speglar varandra i inte bara de geometriska egenskaperna, men också deras lösning. Som spelare är den optimala strategin i denna situation att flytta paddeln nedåt, eller öka py.
Algoritmen kan nu mer intuitivt beskrivas. När det gäller y-koordinaterna för platsen, om bollen ligger över paddla, kommer paddla flytta sedan uppåt. Inversen innehar också. Men är detta den optimala strategin? Något dolda ligger baserat på godtyckliga definitioner skapats tidigare för lätt grafiska algoritmer. Alla platser har definierats för att vara det övre vänstra hörnet av objektet. Därför gör den nuvarande algoritmen försök att rada upp de övre vänstra hörnen på paddeln och bollen. Inte nödvändigtvis kanske en dålig strategi, men det inte ger spelaren ett intryck av intelligens.
Logiken är ljud, men punkterna som jämförelse är inte det bästa valet. Alla mänskliga spelare försöker implicit maximera antalet kolliderande poäng mellan boll och paddlar. Bästa platsen på paddeln för bollen att kollidera med är faktiskt ganska intuitiv: centrum. Den maximala mängden paddel utrymme kan på båda sidor av en elektronkanon boll för en mycket bra feltolerans när du spelar. För att justera algoritmen, helt enkelt jämföra mittpunkterna av bollen och paddla för att ge AI utseendet på en mer intelligent spelare. Genom att låta h vara ger höjden av paddla, sedan (px, py + h/2) i mitten av paddeln. Denna beräkning fungerar på samma sätt för bollen.