Ik ben nieuw hier en ook redelijk nieuw in PHP, laat ons stellen dat ik quasi een leek ben.
Ik heb een schaaksite en daarin is er een scirpt met de volgende functie
Deze functie beeld de zetgeschiedenis af als volgt
zet 1
2
3
Nu wil ik de zetten omdraaien, dus=
zet 3
2
1
Ik heb geprobeerd met de for loop te draaien maar dat lukt niet,
er heeft mij iemand de raad gegeven de echos in een arrat te zetten dus:
ipv echo "echotxt" wordt het $allezettenineentabel[rijnummer]="echotxt";
Het gaat meer bepaald over de echo's met een * voor
En dan op het eind van de functie
maar ik krijg een error nl. Illegal offset.
Sorry als ik niet duidelijk was, hoop dat dit beter is
Mario
Thomas - 15/01/2015 17:20 (laatste wijziging 15/01/2015 17:22)
Moderator
moveToPGNString lijkt mij een functie om informatie te formatteren voor het afdrukken ervan.
In beide gevallen is $history je bron.
Je zou $history rechtstreeks achterstevoren kunnen doorlopen in stappen van 2, zoals ook in regel 15 staat? Je hoeft het niet eens in een aparte array te zetten.
Wat probeer je uiteindelijk te bereiken?
Een array kun je naar je scherm dumpen met var_dump($history) of print_r($history).
Als je print_r() gebruikt kun je e.e.a. leesbaar afdrukken door middel van:
Let er wel op dat print_r() (en var_dump volgens mij ook, not sure) alles gewoon rauw afdrukt, dus ook HTML/JavaScript (en die JavaScript wordt dus uitgevoerd). Hier moet je wel een beetje voorzichtig mee zijn als je bron user input bevat.
Een veiliger alternatief is wellicht dit script (maakt HTML en JavaScript onschadelijk), maar als het een interne datastructuur van je schaakprogramma is (en je het voor een korte debug ronde gebruikt) kan het waarschijnlijk niet zoveel kwaad om gewoon print_r te gebruiken.
Ik heb regel 15 geprobeerd maar dan krijg ik zetnummering van 1,1.5,2,2.5 enz
Zwart staat bij wit en wit bij zwart.
Ik denk niet de regel 15 de oplossing is
1 d2-d4 Pg8-f6
2 c2-c4 e7-e6
3 Pg1-f3 c7-c5
bovenstaande wordt nu afgebeeld met de huidige functie, wat ik wil is dat het zo afgebeeld wordt:
3 Pg1-f3 c7-c5
2 c2-c4 e7-e6
1 d2-d4 Pg8-f6
thx very much
Thomas - 15/01/2015 17:50 (laatste wijziging 15/01/2015 17:51)
Moderator
Als je $history in omgekeerde volgorde doorloopt lijkt het mij ook belangrijk om te weten waar je start?
Als $numMoves even is, wil dit zeggen dat wit de laatste zet deed, en als $numMoves oneven is dat zwart de laatste zet deed?
Als zwart de laatste zet heeft gedaan in je $history worden wit en zwart mogelijk verwisseld als je in stappen van 2 terugloopt?
Ik zou dus waarschijnlijk beginnen met het controleren of $numMoves een even of oneven getal is.
Wanneer je vooruit door $history loopt weet je wie begint (wit, lijkt mij). Wanneer je terugloopt zul je dit ff moeten checken.
En wat je dus uiteindelijk wilt is de omgekeerde volgorde van paren van zetten, als ik het goed begrijp?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.