Schaakspel in PHP

Status
Niet open voor verdere reacties.

tomdb

Gebruiker
Lid geworden
10 nov 2008
Berichten
417
Goeiemiddag,
Ik zat eens te denken, en bedacht dat ik weer eens zin had in een nieuw PHP project(ik ben nog elke dag aan het verder leren:)). Ik vind schaken wel een leuk spelletje, en ik dacht misschien kan ik dat wel maken in PHP:D. 2 Vragen:
1. Is het überhaupt wel mogelijk in PHP, of heb je hier andere talen voor nodig?
2. Zo ja, welke?
Alvast bedankt, Tom
P.S. Ja, ik weet waar ik aan begin, ik weet ook dat het veel werk is en dat er een kans van misschien wel 40% is dat ik het niet afmaak, maar om eraan te beginnen is sowieso gewoon leuk;).
 
Schaken is één van de zeer moeilijke dingen om te maken, althans het denkwerk van je schaak programma. Ik neem aan dat je dan tegen de computer wou schaken...

Je kan wel met php gaan schaken... flash of javascript is niet nodig denk ik, maar het wodt er wel wat mooier en misschien sneller door.
 
Schaken is één van de zeer moeilijke dingen om te maken, althans het denkwerk van je schaak programma. Ik neem aan dat je dan tegen de computer wou schaken...

Je kan wel met php gaan schaken... flash of javascript is niet nodig denk ik, maar het wodt er wel wat mooier en misschien sneller door.

Ik wou 2 spelers tegen elkaar laten schaken... Het denkwerk kun je dan denk ik met PHP wel verzorgen, als je object geörienteerd programmeert, of zie ik het verkeerd?
 
Het is wel mogelijk ja. Het kan zelfs zonder flash.

Wat mij een handig stappenplan lijkt is het volgende:

- Je maakt in HTML een schaakbord (gewoon 8*8 vierkante div's , geen tabellen)
- Je maakt voor elk schaakstuk een plaatje.
- Je schrijft de CSS classes voor het weergeven van zo'n stuk in een 'cel'
- Vervolgens ga je javascript gebruiken.
- Je gebruikt een multi-dimensionale array om de staat van het bord in op te slaan
- Gebruiker klikt op het stuk dat ie wil zetten, dat sla je op in een variabele
- Gebruiker klikt op de locatie waar ie heen wil, je checkt dat met javascript en als het kan sla je het op in een var
- Je gaat naar je array, vervangt het stuk (of het lege vakje) dat zich op de plek van het doel bevond door het stuk
- Je rendert het bord opnieuw
- De tegenstander kan een zet doen.


Enkele beperkingen

- Zo kun je alleen lokaal spelen
- Er is geen computerspeler

Computerspeler maken is op zich niet zo heel moeilijk, je zou de computer willekeurige zetten kunnen laten doen. Echter, als de computer 'slim' moet spelen en vooruit moet denken, dan wordt het lastig.

EDIT: zoals Rimsic zegt, het kan ook met PHP, maar dan heb je met veel page-refeshes te maken. Niet echt gebruiksvriendelijk dus.
 
Laatst bewerkt:
Denkwerk heeft niets met OOP te maken...

In dit geval ging het meer om het de computer laten bepalen van de zetten. Dat is echt ongelofelijk moeilijk.
 
Het is wel mogelijk ja. Het kan zelfs zonder flash.

Wat mij een handig stappenplan lijkt is het volgende:

- Je maakt in HTML een schaakbord (gewoon 8*8 vierkante div's , geen tabellen)
- Je maakt voor elk schaakstuk een plaatje.
- Je schrijft de CSS classes voor het weergeven van zo'n stuk in een 'cel'
- Vervolgens ga je javascript gebruiken.
- Je gebruikt een multi-dimensionale array om de staat van het bord in op te slaan
- Gebruiker klikt op het stuk dat ie wil zetten, dat sla je op in een variabele
- Gebruiker klikt op de locatie waar ie heen wil, je checkt dat met javascript en als het kan sla je het op in een var
- Je gaat naar je array, vervangt het stuk (of het lege vakje) dat zich op de plek van het doel bevond door het stuk
- Je rendert het bord opnieuw
- De tegenstander kan een zet doen.


Enkele beperkingen

- Zo kun je alleen lokaal spelen
- Er is geen computerspeler

Computerspeler maken is op zich niet zo heel moeilijk, je zou de computer willekeurige zetten kunnen laten doen. Echter, als de computer 'slim' moet spelen en vooruit moet denken, dan wordt het lastig.

EDIT: zoals Rimsic zegt, het kan ook met PHP, maar dan heb je met veel page-refeshes te maken. Niet echt gebruiksvriendelijk dus.

Dank je, dit wordt echt heel handig:thumb:!
En kan je niet via een database waar je alle schaakspelen opslaat(zo ja, hoe kan je dat aanpakken?) om de beurt spelen, waar dan gewoon(bijv.) als limiet een week tussen de zetten kan zitten?
 
Dat kan zeker. Stukje AJAX, je laat de gebruiker zijn zet opsturen naar de server, die controleert hem, zet hem in de database en stuurt de nieuwe situatie terug naar de speler.

Je kunt ook een specile zet notatie gebruiken om zetten te accepteren, dan is het ook goed te doen in alleen PHP, zonder teveel page refreshes.

(bijvoorbeeld: a4 -> b6 om een paard te verplaatsen van a4 naar b6, simpel voor de user en simpel voor de server)
 
En kan je niet via een database waar je alle schaakspelen opslaat(zo ja, hoe kan je dat aanpakken?) om de beurt spelen, waar dan gewoon(bijv.) als limiet een week tussen de zetten kan zitten?

Het handigst is inderdaad om alleen de afzonderlijke zetten in de database op te slaan zoals Frats zegt. Dan kun je eventueel later nog schaakspellen reconstrueren, enz, enz.

Of je ook een limiet op de tijd voor een zet kan zetten, als je met PHP (en eventueel AJAX) werkt kan dit inderdaad. Dan zou je bij de validatie (of een stuk naar een bepaalde plek kan) meteen kunnen kijken of hij die zet op tijd gedaan heeft. Maar ik denk eerlijk gezegd dat dat van later zorg is.
 
Bedankt voor alle zeer snelle reacties, als ik klaar ben of (wat een reëlere optie is) jullie hulp nodig heb dan horen jullie het wel:).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan