Skak:Kravspecifikation/AI: Forskelle mellem versioner
Fra DAMNWiki
Spring til navigationSpring til søgning
Andreas (diskussion | bidrag) No edit summary |
Andreas (diskussion | bidrag) No edit summary |
||
Linje 1: | Linje 1: | ||
== Krav til den kunstige intelligens == | == Krav til den kunstige intelligens == | ||
* Skal kunne spille skak korrekt, ud fra de gældende regler. Herunder altså også En passant, rokade og queening (se definition af disse under spillogik). Benytter skak-modellens getLegalMoves() til at sørge for dette. | * Skal kunne spille skak korrekt, ud fra de gældende regler. | ||
** Herunder altså også En passant, rokade og queening (se definition af disse under spillogik). | |||
** Benytter skak-modellens getLegalMoves() til at sørge for dette. | |||
* Skal kunne vælge hvilken farve AI spiller (dvs. om AI eller bruger starter) | * Skal kunne vælge hvilken farve AI spiller (dvs. om AI eller bruger starter). | ||
* Skal have mulighed for at bruge forskellige åbninger | * Skal have mulighed for at bruge forskellige åbninger. | ||
** Herunder skal det være muligt for AI'en at vurdere om en åbning er blevet ødelagt af modstanderen - altså at den ikke længere skal benytte åbningen, men gå over til at søge i | ** Gør AI'en mere menneskelig | ||
** Skal vælges tilfældigt ud fra en liste. | |||
** Herunder skal det være muligt for AI'en at vurdere om en åbning er blevet ødelagt af modstanderen - altså at den ikke længere skal benytte åbningen, men gå over til at søge i spiltræet. | |||
* Skal kunne tænke mens det er modstanderens tur. Dette vil ikke gælde hvis den spiller mod sig selv - her benyttes processorkraften jo til dens modpart | * Skal kunne tænke mens det er modstanderens tur, for at få en følelse af at det rent faktisk er en anden person, der spiller. | ||
** Dette vil ikke gælde hvis den spiller mod sig selv - her benyttes processorkraften jo til dens modpart. | |||
* Skal benytte alpha-beta pruning (se design for beskrivelse af denne) til søgning i træ | * Skal benytte alpha-beta pruning (se design for beskrivelse af denne) til søgning i træ, da almindelig minimax slet ikke er effektivt nok. | ||
* Mulighed for at vælge sværhedsgrad. | * Mulighed for at vælge sværhedsgrad. | ||
** F.eks. tre foruddefinerede niveauer | ** F.eks. tre foruddefinerede niveauer (nem, mellem, svær) | ||
** Kunne også være en mulighed at brugeren kan bestemme hvor lang tid AI'en må tænke og/eller hvor langt dybt i træet den må søge | ** Kunne også være en mulighed at brugeren kan bestemme hvor lang tid AI'en må tænke og/eller hvor langt dybt i træet den må søge. Her har brugeren altså bedre muligheder for at bestemme præcis hvor svær AI'en skal være at spille mod. | ||
* AI'en skal også benyttes til brugerfunktionen "Vis hint". Her vil det være naturligt at AI'en f.eks. automatisk gemmer det bedste træk den finder efter f.eks. 2 halv-træk. Dette kan gøres parallelt med at søgningen alligvel foregår, mens brugeren tænker. | * AI'en skal også benyttes til brugerfunktionen "Vis hint". Her vil det være naturligt at AI'en f.eks. automatisk gemmer det bedste træk den finder efter f.eks. 2 halv-træk. Dette kan gøres parallelt med at søgningen alligvel foregår, mens brugeren tænker. | ||
== Mulige udvidelser == | == Mulige udvidelser == | ||
* Vurdere hvor vidt et træk er dumt, så en søgning denne vej kan undgås. Om dette i virkeligheden vil kræve mere processorkraft end rent faktisk at evaluere brættet, har vi endnu ikke undersøgt. | * Vurdere hvor vidt et træk er dumt, så en søgning denne vej kan undgås. Om dette i virkeligheden vil kræve mere processorkraft end rent faktisk at evaluere brættet, og om det overhovedet er muligt at beregne på en fornuftig måde, har vi endnu ikke undersøgt. | ||
[[Category:Fagprojekt]] | [[Category:Fagprojekt]] |
Versionen fra 12. mar. 2007, 16:11
Krav til den kunstige intelligens
- Skal kunne spille skak korrekt, ud fra de gældende regler.
- Herunder altså også En passant, rokade og queening (se definition af disse under spillogik).
- Benytter skak-modellens getLegalMoves() til at sørge for dette.
- Skal kunne vælge hvilken farve AI spiller (dvs. om AI eller bruger starter).
- Skal have mulighed for at bruge forskellige åbninger.
- Gør AI'en mere menneskelig
- Skal vælges tilfældigt ud fra en liste.
- Herunder skal det være muligt for AI'en at vurdere om en åbning er blevet ødelagt af modstanderen - altså at den ikke længere skal benytte åbningen, men gå over til at søge i spiltræet.
- Skal kunne tænke mens det er modstanderens tur, for at få en følelse af at det rent faktisk er en anden person, der spiller.
- Dette vil ikke gælde hvis den spiller mod sig selv - her benyttes processorkraften jo til dens modpart.
- Skal benytte alpha-beta pruning (se design for beskrivelse af denne) til søgning i træ, da almindelig minimax slet ikke er effektivt nok.
- Mulighed for at vælge sværhedsgrad.
- F.eks. tre foruddefinerede niveauer (nem, mellem, svær)
- Kunne også være en mulighed at brugeren kan bestemme hvor lang tid AI'en må tænke og/eller hvor langt dybt i træet den må søge. Her har brugeren altså bedre muligheder for at bestemme præcis hvor svær AI'en skal være at spille mod.
- AI'en skal også benyttes til brugerfunktionen "Vis hint". Her vil det være naturligt at AI'en f.eks. automatisk gemmer det bedste træk den finder efter f.eks. 2 halv-træk. Dette kan gøres parallelt med at søgningen alligvel foregår, mens brugeren tænker.
Mulige udvidelser
- Vurdere hvor vidt et træk er dumt, så en søgning denne vej kan undgås. Om dette i virkeligheden vil kræve mere processorkraft end rent faktisk at evaluere brættet, og om det overhovedet er muligt at beregne på en fornuftig måde, har vi endnu ikke undersøgt.