[OOSchaak] De schaakklok

Door sanderev66 op zondag 03 juni 2012 18:35 - Reacties (34)
Categorieën: ChessIt, MicroSE, Views: 6.118

In het vorige item heb ik uiteindelijk een Visual Studio Diagram van mijn nieuwe schaakspel gemaakt. Kijk hier.

Maar voordat ik al te veel code wil gaan schrijven moet ik nog een item met jullie bespreken. Namelijk de schaakklok (ook bekend als wedstrijdklok) dit is een uitvinding die volgens deze Duitse wikipedia http://de.wikipedia.org/wiki/Schachuhr sinds de tweede helft van de negentiende eeuw in gebruik is bij verschillende tweespelerspellen. Zoals schaken, dammen, etc.

Zo is bv ook in de nieuwe Sherlock Holmes film een oud model schaakklok te vinden:
http://tweakers.net/ext/f/8etHInvwEqKWjNL8xVf9KeAg/full.jpg

Zoals je ziet is deze nog zonder de vlag, wat volgens de Engelse wiki een Nederlandse uitvinding is.
http://www.schaakkwaliteit.nl/b_786.jpg

Dit is een gebruikelijke analoge wedstrijdklok.

Nu gaan we even kijken of we die in ons model kunnen verwerken.
We zien een klok met twee tijden, twee drukknoppen en twee vlaggen. Nu kunnen we een entiteit ChessClock maken en daar de volgende eigenschappen aan geven:

ChessClock
Time1 : TimeSpan
Time2 : TimeSpan
Flag1 : bool
Flag2 : bool

en een method Switch()

Ook zullen we een ActivePlayerIndex : int nodig hebben om te kunnen bepalen welke speler actief is.

Een andere mogelijkheid is om aan Player een entiteit Clock te hangen en Game te laten bepalen welke klok er actief is. In Game wordt er trouwens ook besloten óf er een klok gebruikt wordt en zo ja, hoe deze ingesteld is. (tijd per zet, tijd per spel, geen klok)

Ikzelf neig naar de eerste oplossing omdat het fysiek 1 apparaat is, maar ik zie ook dat de tweede oplossing voordelen kan hebben..

Dus mijn vraag aan jullie is:
Poll: Welk model?
1 ChessClock klasse
1 Clock klasse per speler
Anders.. (specificeer)
http://poll.dezeserver.nl/results.cgi?pid=380977&layout=2&sort=prc
Ook een poll maken? Klik hier

Volgende: Auf wiedersehen Deutschland 06-'12 Auf wiedersehen Deutschland
Volgende: De maand juni 06-'12 De maand juni

Reacties


Door Tweakers user Domdo, zondag 03 juni 2012 19:10

Een deelnemer van een schaakspel heeft een klok die actief wordt als de speler aan de beurt is. Het verloop van de tijd hoeft ook niet per definitie linear aflopend te zijn...

[Reactie gewijzigd op zondag 03 juni 2012 19:11]


Door Tweakers user sanderev66, zondag 03 juni 2012 19:14

Dat is dus model #2 ;) En je hebt het zeker ook over tijd per zet (wat oplopend kan zijn).

Het FIDE regelement schrijft trouwens voor dat er een schaakklok is met twee klokken (1 per speler).

Dat zal dan een klasse ChessClock met een associatie naar twee Clock klassen zijn. Maar dat vind ik redelijk overbodig gezien je daar heel makkelijk TimeSpan (.NET klasse) voor kan gebruiken. Waarom het wiel opnieuw uitvinden :+

[Reactie gewijzigd op zondag 03 juni 2012 19:17]


Door Tweakers user Domdo, zondag 03 juni 2012 19:26

http://en.wikipedia.org/wiki/Three-player_chess

Jij voorziet nu slechts in 2 spelers waar je ook varianten hebt met N spelers..

Door Tweakers user sanderev66, zondag 03 juni 2012 19:35

Threeplayer chess verschilt te veel van twee spelers om dat in één spel samen te brengen.

Door Tweakers user roeleboel, zondag 03 juni 2012 19:42

Hou misschien rekening met het feit dat er nog een bijkomende spelvariant is, die ook heel interessant om spelen is:

- maximum totale tijd (zoals je nu al hebt)
EN
- maximum tijd per zet

Voorbeeld: maximum 5 minuten totale tijd (snelschaak-partij) met een bijkomende limiet van 30 seconden per zet. Doe je langer dan 30 seconden over 1 zet verlies je ook.

Door Tweakers user sanderev66, zondag 03 juni 2012 19:52

Dat is idd ook interessant.

Dus naast tijd per spel (minuten) een tijd per zet (seconden), dit is dan aan het begin van het spel in te stellen. Waarna er één spelklok geactiveerd wordt:

ChessClock
Time1 : TimeSpan
Time2 : TimeSpan
StartOfTurn: TimeSpan
Flag1 : bool
Flag2 : bool
MoveInSeconds : int
GameInMinutes : int
ActivePlayerIndex : int
ClockMode : Mode (Off, TimePerMove, TimePerGame, TimePerMoveAndGame)
Move()

Dan wordt het duidelijk de eerste optie. Met een ietwat uitgebreidere klasse.

Door Tweakers user Domdo, zondag 03 juni 2012 20:19

Je kan ook hebben dat er x-seconden per gedane zet bij komt...
of dat er na een x aantal zetten (met/zonder een tijds limiet) er met andere tijds-regels wordt gespeeld... hoe ver wil je/kan je gaan met 'opties' in de tijd. Je schaakklok wordt alweer tamelijk ingewikkeld. En wat als je voor verschillende speler een andere klok wilt gebruiken ???

[Reactie gewijzigd op zondag 03 juni 2012 20:20]


Door Tweakers user RobIII, zondag 03 juni 2012 20:37

Domdo schreef op zondag 03 juni 2012 @ 19:26:
http://en.wikipedia.org/wiki/Three-player_chess

Jij voorziet nu slechts in 2 spelers waar je ook varianten hebt met N spelers..
Ja, je kunt ook dammen...

Wat ik wil zeggen: doe nou eens eerst iets afmaken, opleveren, afronden en ga dan eens wat varianten uitproberen of uitbouwen of... Ga niet meteen in fase 0 al proberen in alles te voorzien. Dat gaat nooit lukken en dan komt een project nooit af.

Wat ik dus niet snap, Sander, is: nu heb je een leuk projectje en ben je aan een "basis" begonnen en meteen daarna wijk je compleet uit naar een compleet ander "project" (ja, het heeft toevallig ook met schaken te maken...) nog voordat er iets zinnigs uit 't vorige is gekomen. Waarom zou je nu opeens met die klok aan de gang gaan en niet eerst wat verder gaan met wat je al hebt :? Het lijkt me veel interessanter om eerst überhaupt een potje schaak te kunnen spelen tegen een andere speler of een AI speler. Een klokje toevoegen kun je naderhand ook prima (en let's face it; 't is nou niet bepaald rocket science zo'n klokje). Waarom dan toch eerst aan zoiets triviaals werken terwijl er een zoveel interessanter probleem voor je ligt waar je zelfs al (min-of-meer) aan begonnen bent?

[Reactie gewijzigd op zondag 03 juni 2012 20:45]


Door Tweakers user dusty, zondag 03 juni 2012 20:44

Persoonlijk zou ik de schaakklok simpel houden. Het is niet de taak van de schaakklok om bij te houden wie aan zet is, daar heb je al een andere klasse voor.

Het is in mijn mening niet de taak van de klok om bij te houden wat de limieten zijn.

Maak een klasse met een/twee stopwatches; een aantal methodes;Start,Stop, GetTurnTime, GetTotalTime etc. (misschien een "Pauze" method?).

Wanneer een klok stopt bekijk je de verlopen tijd (stopwatch.elapsed.totalseconds) en tel je die op bij de "Totale Tijd".

Vanuit de rest van je programma kan je de klokken dan starten en stoppen, en ook opvragen wat de zet-tijd/totale tijd is.

Soms kan een klok gewoon een klok zijn.

Door Tweakers user sanderev66, zondag 03 juni 2012 21:35

Domdo schreef op zondag 03 juni 2012 @ 20:19:
Je kan ook hebben dat er x-seconden per gedane zet bij komt...
of dat er na een x aantal zetten (met/zonder een tijds limiet) er met andere tijds-regels wordt gespeeld... hoe ver wil je/kan je gaan met 'opties' in de tijd. Je schaakklok wordt alweer tamelijk ingewikkeld. En wat als je voor verschillende speler een andere klok wilt gebruiken ???
Per speler een andere klok, bedoel je? Dat lijkt me nou niet echt eerlijk ;)
RobIII schreef op zondag 03 juni 2012 @ 20:37:
[...]

Ja, je kunt ook dammen...

Wat ik wil zeggen: doe nou eens eerst iets afmaken, opleveren, afronden en ga dan eens wat varianten uitproberen of uitbouwen of... Ga niet meteen in fase 0 al proberen in alles te voorzien. Dat gaat nooit lukken en dan komt een project nooit af.

Wat ik dus niet snap, Sander, is: nu heb je een leuk projectje en ben je aan een "basis" begonnen en meteen daarna wijk je compleet uit naar een compleet ander "project" (ja, het heeft toevallig ook met schaken te maken...) nog voordat er iets zinnigs uit 't vorige is gekomen. Waarom zou je nu opeens met die klok aan de gang gaan en niet eerst wat verder gaan met wat je al hebt :? Het lijkt me veel interessanter om eerst überhaupt een potje schaak te kunnen spelen tegen een andere speler of een AI speler. Een klokje toevoegen kun je naderhand ook prima (en let's face it; 't is nou niet bepaald rocket science zo'n klokje). Waarom dan toch eerst aan zoiets triviaals werken terwijl er een zoveel interessanter probleem voor je ligt waar je zelfs al (min-of-meer) aan begonnen bent?
Dat ga ik ook doen ;) Maar voor mij hoort een klok bij het schaakspel. (ben schaaksporter) De AI zal bv wel in een tweede ontwikkelfase komen. Ik ga me na deze post wijden aan het schaakbord en de individuele stukken.

Als ik dat rond heb ga ik aan de GUI werken. Dan komt een soort van alpha (unstable) versie van het spel waarin je een heel simpel potje schaak kan spelen.

Daarna ga ik me met het reglement bezighouden. Dus niet alleen hoe stukken kunnen bewegen maar ook hoe ze legetiem kunnen bewegen. Tegen die tijd zitten we aan het einde van het jaar :+

Dan wil ik een soort van minimale AI gaan maken die als basis voor toekomstige AIs. Daarna wil ik een soort van Tweakers.net-programmeer competitie voor de beste AI gaan starten.
Gelijktijdig ga ik aan multiplayer mogelijkheden werken.

Dan zomer 2013 volgt, hopelijk, de eerste release. Maw. dit wordt écht een groot project ;)
dusty schreef op zondag 03 juni 2012 @ 20:44:
Persoonlijk zou ik de schaakklok simpel houden. Het is niet de taak van de schaakklok om bij te houden wie aan zet is, daar heb je al een andere klasse voor.

Het is in mijn mening niet de taak van de klok om bij te houden wat de limieten zijn.

Maak een klasse met een/twee stopwatches; een aantal methodes;Start,Stop, GetTurnTime, GetTotalTime etc. (misschien een "Pauze" method?).

Wanneer een klok stopt bekijk je de verlopen tijd (stopwatch.elapsed.totalseconds) en tel je die op bij de "Totale Tijd".

Vanuit de rest van je programma kan je de klokken dan starten en stoppen, en ook opvragen wat de zet-tijd/totale tijd is.

Soms kan een klok gewoon een klok zijn.
Dat is misschien ook wel beter.

[Reactie gewijzigd op zondag 03 juni 2012 21:44]


Door Tweakers user thomas1991, zondag 03 juni 2012 22:05

Misschien ook een handig iets om aan te denken als je later ook meer als 2 speler wilt ondersteunen: Maak bij elke speler/klok ook een methode om op te vragen wie de volgende is (en vorige misschien ook). Nu geeft die simpelweg de tweede speler mee, speel je met 3 onderbreek je de keten. (soort van closed-http://en.wikipedia.org/wiki/Linked_list)

Door Tweakers user sanderev66, zondag 03 juni 2012 22:22

Idd interessant, als ik meer dan twee spelers zou ondersteunen. Maar nee, dat gaat niet gebeuren ;)

Als trouwens iemand wil helpen met het ontwerpen van een schaakset (stukken + spelbord) kan je me DM-en :+ Alleen wel onthouden dat het een spel in 2D wordt, en dat de stukken duidelijk herkenbaar moeten zijn.

Dit omdat ik vele schaakspellen (vooral de 3D spellen) heel onduidelijk vind waar welke stukken staan.

[Reactie gewijzigd op zondag 03 juni 2012 22:28]


Door Tweakers user PixelShooter, zondag 03 juni 2012 22:32

RobIII schreef op zondag 03 juni 2012 @ 20:37:
[...]

Ja, je kunt ook dammen...

Wat ik wil zeggen: doe nou eens eerst iets afmaken, opleveren, afronden en ga dan eens wat varianten uitproberen of uitbouwen of... Ga niet meteen in fase 0 al proberen in alles te voorzien. Dat gaat nooit lukken en dan komt een project nooit af.

Wat ik dus niet snap, Sander, is: nu heb je een leuk projectje en ben je aan een "basis" begonnen en meteen daarna wijk je compleet uit naar een compleet ander "project" (ja, het heeft toevallig ook met schaken te maken...) nog voordat er iets zinnigs uit 't vorige is gekomen. Waarom zou je nu opeens met die klok aan de gang gaan en niet eerst wat verder gaan met wat je al hebt :? Het lijkt me veel interessanter om eerst überhaupt een potje schaak te kunnen spelen tegen een andere speler of een AI speler. Een klokje toevoegen kun je naderhand ook prima (en let's face it; 't is nou niet bepaald rocket science zo'n klokje). Waarom dan toch eerst aan zoiets triviaals werken terwijl er een zoveel interessanter probleem voor je ligt waar je zelfs al (min-of-meer) aan begonnen bent?
Dit.

Plus het feit dat het ook helemaal niet boeit hoelang een bepaalde speler aan zet was. Zoals gezegd, zie eerst dat de basis werkt. Mooie ideeën allemaal, daar niet van, maar er zijn een héle hoop ideeën die nooit het daglicht gezien hebben, of zullen zien.

Ik zou het trouwens interessant vinden hoe je je veld en alles (pionnen, animaties, ...) tekent. Gewoon 2D, of toch meer richting 2.5D? Of misschien zelfs 3D? Ik weet het niet, jij zegt het, daarom dat ik dit nog überhaupt volg. Niet om geneuk te liggen lezen over een fucking klokje dat niemand in mijn omgeving gebruikt tijdens het schaken :9

Na je edit: 2D dus

[Reactie gewijzigd op zondag 03 juni 2012 22:33]


Door Tweakers user sanderev66, zondag 03 juni 2012 22:55

Tja, als je al geen interesse in het klokje hebt ;) Maar ja, ik wil het spel zo gaan maken zodat een beginnende en een ervaren schaker er een uitdaging aan heeft. De moeilijkheidsgraad echter is nog voor latere zorg. Dit komt met het bouwen van de AIs zo zullen deze waarschijnlijk schaalbaar worden aan intelligentie. Niet dat ik ook enige ervaring heb met het maken van een AI, dat wordt voor mij de grootste uitdaging.

Voor ervaren (club / sport schakers) is een klok gewoon een onderdeel van het spel. Hobbyisten of thuisschakers gebruiken ze meestal niet. Ieder zijn ding. Het klokje komt waarschijnlijk pas bij de release met het reglement daadwerkelijk in het spel. Het model komt wel wat eerder, maar de functionaliteit nog niet.

En over het uiterlijk, ik wil een mooie maar eenvoudige stijl in het spel zien. Waar ik heel goed ben in eenvoudig ben ik niet zo goed in mooi, dus daar heb ik dan wat hulp bij nodig. En ik wil niet zomaar ergens een schaakset van het web plukken. ;)

Door Tweakers user jbdeiman, zondag 03 juni 2012 22:57

[quote]
Als trouwens iemand wil helpen met het ontwerpen van een schaakset (stukken + spelbord) kan je me DM-en :+ Alleen wel onthouden dat het een spel in 2D wordt, en dat de stukken duidelijk herkenbaar moeten zijn.

Dit omdat ik vele schaakspellen (vooral de 3D spellen) heel onduidelijk vind waar welke stukken staan.
[quote]

Wat misschien wel leuk is: Een combinatie van beiden? dan heb je het beste van 2 werelden. Afhankelijk van wat je prettiger vindt:
Links een 3d bord (groot) en rechts een (verkleinde) samenvatting in 2d
Links een 2d bord (groot) en rechts een (verkleinde) samenvatting in 3d

Beiden zijn te "switchen". Dit hoeft namelijk niet ingewikkeld te zijn en je hoeft het overzicht niet te verliezen terwijl je toch een beetje het "echte schaak" gevoel hebt door het 3d.
Je krijgt dan een beetje dit idee:
http://i01.i.aliimg.com/photo/v0/254528795/Game_3d_chess.jpg

[Reactie gewijzigd op zondag 03 juni 2012 23:01]


Door Tweakers user sanderev66, zondag 03 juni 2012 23:04

Misschien in een 2.0, 3D het is niet makkelijk om een 3D spel te maken. En om daar veel tijd in te gaan steken? Nee, dan bouw ik liever eerst het spel, zoals RobIII voorstelt, helemaal af. 3D is een extra.

Door Tweakers user Gomez12, zondag 03 juni 2012 23:54

sanderev66 schreef op zondag 03 juni 2012 @ 22:55:
Het klokje komt waarschijnlijk pas bij de release met het reglement daadwerkelijk in het spel. Het model komt wel wat eerder, maar de functionaliteit nog niet.
Oftewel het klokje is nu simpelweg nog niet relevant...

Houdt je er nu dan ook niet mee bezig. Het leidt alleen maar af (en kost tijd)

Door Tweakers user RobIII, maandag 04 juni 2012 01:28

Voor mij, quite frankly, is dit project nu al gedoemd te mislukken. En dat is zeker niet omdat ik 't je niet gun. Ik denk dat omdat je niet coherent bent (althans, niet in wat je laat zien). Je zult vast een masterplan hebben, een uitgestippelde weg naar hetgeen je wil bereiken. En, by God, ik hoop dat het je lukt al is 't maar om die azijnpissers die jarenlang op je blog hebben lopen zeiken, eens te tonen dat je 't wel kunt. En als je mij, met deze reactie (of eender welke eerdere reactie(s)) daar onder wil scharen dan ga vooral je gang. Don't blame you.

Mijn probleem met dit project is dat je in deel 1 nog bezig bent met een (erg simpele) opzet van wat class-jes. Mooi d:)b abstractie is key! Goed bezig. Vervolgens begin je in deel 2 met een compleet side-project dat, als klap op de voorpijl, pas in 't laatste stadium pas in het geheel opgenomen zal gaan worden (wat overigens terecht is; het is niets meer dan een kleine toevoeging aan de game die, in de basis, functioneel, weinig tot niets verandert). Je bekommert je al om zaken die nog lang niet aan de orde zijn. (En dan heb ik ELO en andere kleinigheidjes nog even door de vingers gezien ;) ). Je (what would've been) abstractie is nu al troebel.

En, to make matters worse, nu bekommer je je ook al over 't feit of iemand die schaakstukken voor je zou willen maken/tekenen. Seriously; who gives a rats ass? Je kunt in deze fase toch prima volstaan met een ASCII bordje bestaande uit iets als:

code:
1
2
3
4
5
6
7
8
9
10
+---+---+---+---+---+---+...
| R | K | B | Q | K | B |...
+---+---+---+---+---+---+...
| P | P | P | P | P | P |...
+---+---+---+---+---+---+...
|   |   |   |   |   |   |...
+---+---+---+---+---+---+...
|   |   |   |   |   |   |...
+---+---+---+---+---+---+...
............................

Het is toch niets meer als een visuele representatie van een stukje geheugen? Al was 't in 8D stereoscopic full HD deluxe. Tijdens de ontwikkelfase van de functionaliteit is dat helemaal niet relevant (zéker niet bij een schaakspel, en we zijn hier geen Diablo of Crysis of weet-ik-wat aan 't maken*). Je hoeft bij een zet niet eens de console te clearen; je kunt er gewoon een nieuw bord onder tekenen met de nieuwe state. Heb je gratis-en-voor niets een "historie" en een handige output om te debuggen :P
* Ik ken/weet geen zak van die games behalve dat ze schijnbaar leuk/goed/whatever zijn dus misschien roep ik wat raars; maar you get the point ;) en zo niet: dat komt eraan in de volgende alinea :P ).

Ik zou eerst eens mikken op functionaliteit en zorgen dat je reglement geïmplementeerd is, dat je een werkend model hebt dat de gamestate correct bijhoudt, dat scores correct bijhoudt en weet-ik-wat. Daar zit voor een spel als dit (en dan laat ik een AI nog even buiten beschouwing want dat zie ik, zeker nu, al helemaal nog niet aan de horizon door deze hak-op-de-tak aanpak) veel meer uitdaging én werk in. Als je zelf al aangeeft dat je grootste uitdaging 't maken van een AI is dan sta je nu, IMHO, voor een vele interessantere uitdaging dan hoe je schaakstukken eruit komen te zien of wie dat gaat tekenen of een klokje. En die uitdaging had ik, persoonlijk, heel anders benaderd (en éérst met beide handen aangegrepen om te tackelen).

Ik zou, als ik een AI zou overwegen te gaan maken, in ieder geval eens een poging ondernemen een (erg simpele) AI op te zetten. Je hoeft niet meteen een Deep Blue te bouwen maar 't zou toch al heel leuk zijn als je iets voor elkaar kon krijgen dat in ieder geval al speelt op 't niveau hoger dan dat van een getrainde aap of 3 jarige. Ik zou daar eens wat mee gaan stoeien en op een bepaald punt een besluit nemen:
  1. het lukt me wel, maar het kost me 1 / 7 / 45 / 1200 manjaar voor ik 't niveau van een 10 jarige (of iets anders waar je op mikt, noem 't niveau X) te bereiken :| Ik ben iig wijzer geworden en heb eens iets met AI gedaan oOo *O*
  2. het lukt me prima, ik heb de smaak te pakken, en ga voor niveau X en dan verder met de rest van de implementatie (graphics, about screen, klokje, ...) oOo Life's good! *O*
  3. het lukt me niet, maar jammer dan *schouder ophaalt*; dan ga ik gewoon een leuk 2-player schaakspel maken zonder AI maar met (bijv. online?) tegen-elkaar-speel-modus oOo
  4. het lukt me niet; what's the point voor de plannen, zonder AI geen project :| :'(
In alle gevallen ben je een ervaring rijker en heb je iets geleerd. Nooit word je er dommer van; wel realistischer, beter in 't schatten van devtijd, meer kennis van AI's en noem-maar-op. In alle gevallen kun je zeggen dat je 't hebt geprobeerd en dat is ook wat waard. Natuurlijk is een leuk schaakbordje tekenen ook een uitdaging an sich; evenals een klokje. Of een about screen. Maar waarom daar nu al over bekommeren? Als je 't moest rangschikken op volgorde van uitdaging, wat stond dan bovenaan je lijstje? En als je gewenste functionaliteiten (wel of geen AI moet je zelf weten) in een gerangschikt lijstje zet, waar staat dan bijvoorbeeld je "reglement" in dat lijstje en waar je klokje? En waar, zeg nou eens eerlijk, zie je als programmeur de leukste uitdaging / klus in liggen? Is dat echt een klokje? Of sta je te popelen je eens op een AI te storten of het reglement te implementeren zodat je in ieder geval een game hebt die je vertelt dat zet X niet mag of zelfstandig bepaalt dat je zet Y een schaakmat oplevert en dat speler A dus game-over is omdat er geen zetten meer mogelijk zijn die 'm uit deze situatie redden? Ik zou 't wel weten ;)

Nu zie ik, en dat is gebaseerd op fingerspitzengefühl, mijn water, mijn kleine teen en een klein beetje ervaring uit 't verleden, dat dit project al waarschijnlijk gaat stranden voor er ooit iets zinnigs bereikt is. De oorzaak zal dan waarschijnlijk zijn: teveel/alles tegelijk willen doen, bekommeren om irrelevante details in een fase waarin dat nog helemaal niet aan de orde is, geen (vooraf, goed) uitgedacht plan, gebrek aan coördinatie, ...

Nogmaals; ik gun het je van harte en volg dit project dan ook zeker met interesse. En ik hoop _zo_ dat we je straks mogen feliciteren met een leuk afgerond, polished product. Ook al zitten we dan tegen een ASCII bordje aan te kijken; als het doet wat 't belooft, zijnde een potje schaak bieden, dan is dat al een schouderklop waard :) Ik heb daartoe maar 1 tip: trek je plan. En doe dat nu. En stick with it. Focus. En of je dat doel dan in 2013 of 2525 bereikt boeit niet. Ik hef m'n glas vast op je victorie, wat die dan ook moge gaan zijn. Proost!

[Reactie gewijzigd op maandag 04 juni 2012 02:02]


Door Tweakers user sanderev66, maandag 04 juni 2012 07:39

Ik doe heus niet alles tegelijkertijd! ;) Alleen denk jij dat het verstandig is om direct aan de AI te beginnen, maar wil ik eerst een werkende basis hebben. Deze basis bestaat voor mij uit een simpele GUI, een model voor het spel + klok en dat de stukken over het bord kunnen bewegen. Voor nu is dat model er, nu wordt het tijd voor een simpele GUI. En die is er eigenlijk ook al, gezien mijn huidige model direct uit VS2012 getrokken is :+

Het spel zal uiteindelijk 100% modulair opgebouwd gaan worden. En zelfs de simpele GUI die ik straks ga maken kan vervangen worden door bv een website. Of een Windows Phone App. Of een WinRT App. Of een server. Of een full Direct3D gui die je op een XBOX 360 te zien krijgt :+ Mogelijkheden zijn eindeloos ;)

Het spel zal dan ook iig met twee spelers gespeeld kunnen worden. Of het me lukt om een AI te bouwen, of niet.

Maar het is duidelijk dat je geen vertrouwen in me hebt. Ik zeg: don't worry.

[Reactie gewijzigd op maandag 04 juni 2012 07:42]


Door Tweakers user GOUDSBS, maandag 04 juni 2012 09:36

Tja als we kijken naar het verleden en dat meenemen, zeg ik; ben benieuwd, maar hoop het van harte dat het je lukt.

Ik bedoel; de mini's?!, PowerOS?!, MicroSE Office Suite! elke dinsdag, update dinsdag?!

Nou goed ik zal wel wat vergeten zijn... laten we hopen dat het nu wel af komt....

Door Tweakers user RobIII, maandag 04 juni 2012 10:48

sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
Ik doe heus niet alles tegelijkertijd! ;) Alleen denk jij dat het verstandig is om direct aan de AI te beginnen, maar wil ik eerst een werkende basis hebben.
En een klok, ELO en welke graphics je daarvoor gaat gebruiken valt onder "werkende basis"? Je begrijpt toch hopelijk wel dat dat het hele punt van mijn post was?
sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
Deze basis bestaat voor mij uit een simpele GUI, een model voor het spel + klok en dat de stukken over het bord kunnen bewegen.
Dat was mijn punt; ik zou eens een streep door klok en GUI trekken en beginnen met model + dat stukken over het bord kunnen bewegen. Je bevestigt, op die GUI en klok na, precies mijn post. En je bevestigt, juist mét die GUI en klok, precies de reden van de zorgen die ik uit in mijn post.
sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
Voor nu is dat model er, nu wordt het tijd voor een simpele GUI.
Je hebt een paar armetierige classjes. Dit vind je 't moment om tevreden achterover te leunen en 't "tijd voor een simpele GUI" te noemen? Serieus?
sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
Het spel zal uiteindelijk 100% modulair opgebouwd gaan worden.
Wéér iets dat je alleen maar gaat tegenhouden iets werkend op te leveren. Als je nou eens begint met een "monolitische" opzet en, als je dat werkend hebt, gaat denken over hoe je dat 't best modulair kunt maken. Dat doe je niet op 90% van 't traject en moet je vroeg in voorzien, granted, maar nu, voor überhaupt nog de aanvang van 't project (dus: in je ontwerp/planning fase) is véél te vroeg. Dit is niet veel meer dan een "nice to have", of een "COULD" als je bekend bent met MoSCoW.
sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
En zelfs de simpele GUI die ik straks ga maken kan vervangen worden door bv een website. Of een Windows Phone App. Of een WinRT App. Of een server. Of een full Direct3D gui die je op een XBOX 360 te zien krijgt :+ Mogelijkheden zijn eindeloos ;)
Dat zal best, maar die GUI, welke 't dan ook moge worden, heeft wel een model nodig om te representeren ;)
sanderev66 schreef op maandag 04 juni 2012 @ 07:39:
Maar het is duidelijk dat je geen vertrouwen in me hebt. Ik zeg: don't worry.
Draai 't nou niet (wéér) om. Ik heb nergens gezegd dat ik geen vertrouwen heb. Wél heb ik mijn zorgen geuit en getracht wat zinnigs te zeggen in respons op je blogpost.

Als je dit project in een "een-tweetje" met je bloglezers wil gaan doen dan zul je eens wat minder snel met de hakken in 't zand moeten en wat meer moeten open staan voor input (waar je zelf notabene om vraagt!). Zéker als die input bedoeld is als feedback om je te helpen je project op de rails te houden en zéker als die degelijk onderbouwd is en zéker als de intentie was je te helpen bij je project.

[Reactie gewijzigd op maandag 04 juni 2012 10:57]


Door Tweakers user ViperNL, maandag 04 juni 2012 10:49

quote: sanderev66
Ik doe heus niet alles tegelijkertijd! ;) Alleen denk jij dat het verstandig is om direct aan de AI te beginnen (...)
Lol! Snap je hem echt niet of loop je hem nou te jennen? Soms vraag ik me af wie nou wie loopt te trollen.. :Y)

Door Tweakers user sanderev66, maandag 04 juni 2012 12:19

RobIII schreef op maandag 04 juni 2012 @ 10:48:
Draai 't nou niet (wéér) om. Ik heb nergens gezegd dat ik geen vertrouwen heb. Wél heb ik mijn zorgen geuit en getracht wat zinnigs te zeggen in respons op je blogpost.
Voor mij, quite frankly, is dit project nu al gedoemd te mislukken
Hoe moet ik dit interpreteren dan "ik heb geen vertrouwen in dit project"???

[Reactie gewijzigd op maandag 04 juni 2012 12:20]


Door Tweakers user H!GHGuY, maandag 04 juni 2012 12:32

Ikzelf neig naar de eerste oplossing omdat het fysiek 1 apparaat is, maar ik zie ook dat de tweede oplossing voordelen kan hebben..
*BEEEEEP*. En denk nou zelf eens goed na:
Waarom is het 1 fysiek apparaat?

[spoiler]
Omdat het handig is:
- je moet maar 1 toestel rondzeulen
- je kan niet "1 v/d 2 klokjes" verliezen
- ...
[/spoiler]

Maw: een puur praktische reden. Intern zijn het gewoon 2 klokjes (1 per speler).
Daarenboven, zoals anderen ook al aanhaalden, moet je je afvragen of het aanwijzen van welke speler aan zet is een functie is van de klokjes of niet...

En om het geheel nog moeilijker te maken, moet je je ook afvragen of het je niet toevallig goed uitkomt dat "in realiteit" de klok ook aangeeft welke speler aan zet is, maw: misschien is het niet echt de functie van de klok, maar kan het wel mooi meegenomen zijn in het uiteindelijke model.

Ik stem dan ook op 1 klokje per speler. Maak een aparte Timer/Klok klasse en dan kun je die later, mocht je willen, nog hergebruiken om 30s per zet of totale speeltijd mee te timen.

Door Tweakers user sanderev66, maandag 04 juni 2012 12:43

Daar heb je gedeeltelijk gelijk in, de klok geeft idd aan welke Speler aan zet is. En van die speler loopt de tijd dan ook ;) Dit moet ook ergens verwerkt worden, vandaar een gezamenlijke klasse.

Door Tweakers user RobIII, maandag 04 juni 2012 12:45

sanderev66 schreef op maandag 04 juni 2012 @ 12:19:
[...]


[...]


Hoe moet ik dit interpreteren dan "ik heb geen vertrouwen in dit project"???
Dat zeg ik: als welbedoelde feedback. Dat ik voorzie dat 't strandt als je op de ingeslagen weg door gaat staat daar los van. En anders zie je 't als een uitdaging/motivatie to prove me wrong. Whatever floats your boat ;) Als ik iets voorzie maakt 't nog niet meteen dat 't ook zo is ;) (En maar goed ook :P ) Ik wijs je gewoon op valkuilen. Dat je het je aantrekt geeft in ieder geval aan dat je 't (tot op bepaalde hoogte) misschien wel (schoorvoetend) met me eens bent of je in ieder geval in een paar punten kunt vinden. Good for you d:)b Nu nog een beetje gracieuzer ermee omgaan ;)

[Reactie gewijzigd op maandag 04 juni 2012 12:50]


Door Tweakers user b_smulders, maandag 04 juni 2012 12:46

H!GHGuY, het is één apparaat om een hele simpele reden: Omdat je met één interactie beide klokken moet kunnen bedienen.

En die ene interactie vertaalt zich in OO prima naar één call naar een object die alle klokken in beheer heeft.

Ik zou zelf een ClockManager maken die meerdere klok-objecten onder zich heeft. Als je dan tegen één klok "Go!" zegt, zorgt de ClockManager dat alle andere klokken vanzelf stoppen.

Zo kun je schaken tegen zoveel personen als je maar wilt.

Door Tweakers user sanderev66, maandag 04 juni 2012 12:54

@b_smulders: precies ;)

@rob3: dus je gaat ook op de hoek van de straat staan en tegen mensen schreeuwen: "pas op een stoeprand!" Dat is natuurlijk goed bedoeld, maar iedereen zal je vreemd aankijken.

Door Tweakers user RobIII, maandag 04 juni 2012 13:09

sanderev66 schreef op maandag 04 juni 2012 @ 12:54:
@rob3: dus je gaat ook op de hoek van de straat staan en tegen mensen schreeuwen: "pas op een stoeprand!" Dat is natuurlijk goed bedoeld, maar iedereen zal je vreemd aankijken.
Ja dat doe ik ook. Net als nog schevere vergelijkingen verzinnen, m'n kop in 't zand steken en zaken waar ik misschien iets van opsteek afdoen als gezanik. :w }:O

Oh, btw, die lui vragen ook niet om mijn/onze input en bloggen er niet over dat ze oversteken :Y) Maar dat wist je zelf stiekem ook wel he? ;)

[Reactie gewijzigd op maandag 04 juni 2012 13:26]


Door Tweakers user sanderev66, maandag 04 juni 2012 14:41

Iemand die de straat wil over steken die aan jou vraagt "zou ik oversteken?" en jij roept: "Nee, een stoeprand!". Dat is immers wat je hier aan het doen bent, offtopic reageren op de vraag over de klok.

En zolang ik niet vraag "zal ik het project op deze wijze uitvoeren?" is je reactie nog steeds off-topic.

[Reactie gewijzigd op maandag 04 juni 2012 14:42]


Door Tweakers user roeleboel, maandag 04 juni 2012 15:45

Sander, jaag je eigen supporters niet weg.

RobIII zijn punt is wel degelijk valide, en is in de praktijk een van de grootste valkuilen voor hobby-projecten.

Zijn punt is trouwens ook on-topic voor deze blog-reeks: in deel 1 van deze schaak-blog-reeks vraag je commentaar op het ontwerp. De commentaar hier is dat je ontwerp te uitgebreid is/wordt voor een eerste versie...

(edit: oppoetsen van het taalgebruik)

[Reactie gewijzigd op maandag 04 juni 2012 15:58]


Door Tweakers user dusty, maandag 04 juni 2012 19:16

Sander,

Wat Rob3 je probeert duidelijk te maken is dat je een schaakspel kan spelen zonder klok; dus is de klok in principe niet essentieel. Wacht daar dus mee tot je basis werkt; Schaakboord, de stukken en ze verplaatsen over dat schaakboord.

Dat betekent zelfs dat je in principe in het begin om een basis werkend te hebben nog niet eens hoeft te checken wie aan de beurt is; zelfs of het een legitieme verplaatsing is, is nog niet belangrijk, dat zijn regels die pas in een later stadium belangrijk zijn.

[Reactie gewijzigd op maandag 04 juni 2012 19:17]


Door Tweakers user Gomez12, maandag 04 juni 2012 20:23

sanderev66 schreef op maandag 04 juni 2012 @ 14:41:
Iemand die de straat wil over steken die aan jou vraagt "zou ik oversteken?" en jij roept: "Nee, een stoeprand!". Dat is immers wat je hier aan het doen bent, offtopic reageren op de vraag over de klok.
Dus het is geen blog meer over je project, maar het is puur een blog geworden over "de klok"?
Want dan zou ik zeggen, verdiep je eens in ntp / atoomklokken zodat je juiste kloktijden hebt en niet afhankelijk bent van de onbetrouwbare interne klok van een computer.
En kijk dan gelijk even na hoe je zelf de exacte latency tussen je computer en een atoomklok kan berekenen via meerdere ping-tijden gecombineerd met traceroutes etc.

Het is totaal niet relevant voor een schaakspel, maarja als het niet meer over het schaakspel gaat maar enkel over klokken...

Door Tweakers user -hopsa-, woensdag 13 juni 2012 11:45

Je kunt natuurlijk ook eerst de schaakklok maken... die heb je morgen af, dan kun je focussen op echte uitdagingen.

Reageren is niet meer mogelijk