PicChess (6 / 8 steg)

Steg 6: schack



Här är kärnan i detta projekt schackspelet. Den är uppdelad i två delar gränssnitt rutiner och schack motor.

Schack motor
Jag skulle kunna omfatta en massa saker här, men det förklaras bättre i webbplatser som chessprogramming.wikispaces.com. Jag kommer bara täcker grunderna.
Beskriver en enkel program som detta som artificiell intelligens det inte är rättvist eftersom allt det gör är råstyrka Sök.

Ett schackprogram är gjord av dessa delar:

  • Flytta Generator: Ges en inledande tillstånd av schackbrädet producerar alla giltiga positioner av reglerna.
  • Utvärdering: Returnerar en poäng från en styrelse, kan vara så enkelt som räknar antal bitar med vikter (en bonde vikter 1 en drottning 9). Desto högre poäng bäst denna styrelse är för spelare som har förvandlas.
  • Make/Unmake: Ett sätt att aplay ett drag till styrelsen variabel och tu ångra det senare
  • Sök: En algorthm har för sesch fram alla rörelser generera genom att flytta generatorn, det är sökfunktionen. En av de enklaste slag är MinMax revisionskontroll . Jag använde en lite bättre sökning Alpha-beta beskärning, att undvika söka värdelös Sök trädets grenar.

Revisionskontroll körs detta sätt: genererar alla flyttar upp till en djup sökning (ett visst antal varv att se framåt), ger en poäng för varje drag i toppen av trädet och sedan återvända den gren som garanterar bästa resultat.

Det skulle kunna förbättras mycket genom att lägga till en quiesent revisionskontroll , denna funktion skulle serch några fler drag när det finns en fånga att undvika misstag evaluatin en av dessa positioner där framfart händer.

Schack gränssnitt
Alla användargränssnitt hanteras av denna rutiner. Sak som hur man väljer en bit och göra ett drag... Bara titta på koden om du har intresse, det har alla baserade i en tillståndsdator så koden är icke-blockerande.

En trevlig sak att notera är att kontrollera om ett drag som spelaren försöka göra är giltig jag använt flytta generatorn för att få alla giltiga flyttas, och sedan kontrollera om spelaren flytta är en av dem.

Se Steg
Relaterade Ämnen