onsdag, februari 28, 2007

XMLChess V 0.0.1

Nej jag kunde inte vänta, vad ska jag annars göra förutom att läsa till tentorna? Eftersom XSL inte har stöd för arrayer använder jag än så länge ett hack där jag bygger upp brädets innehåll i en sträng med hjälp av rekursion. Resultatet blir vid partiets start:

[h8|rook2|player2][g8|knight2|player2][f8|bishop2|player2]
[e8|king1|player2][d8|queen1|player2][c8|bishop1|player2]
[b8|knight1|player2][a8|rook1|player2][h7|pawn8|player2]
[g7|pawn7|player2][f7|pawn6|player2][e7|pawn5|player2]
[d7|pawn4|player2][c7|pawn3|player2][b7|pawn2|player2]
[a7|pawn1|player2][h1|rook2|player1][g1|knight2|player1]
[f1|bishop2|player1][e1|king1|player1][d1|queen1|player1]
[c1|bishop1|player1][b1|knight1|player1][a1|rook1|player1]
[h2|pawn8|player1][g2|pawn7|player1][f2|pawn6|player1]
[e2|pawn5|player1][d2|pawn4|player1][c2|pawn3|player1]
[b2|pawn2|player1][a2|pawn1|player1]

Det är inte särskilt vackert men det fungerar och jag kan sedan matcha mot rutornas namn och undersöka om rutans namn finns i strängen med brädets innehåll och då plocka fram innehållet, exempelvis 'vit dam'. Än så länge jag har inte lagt in några bilder så resultatet när jag ritar upp brädet är föga upphetsande:

[rook1][knight1][bishop1][queen1][king1][bishop2][knight2][rook2] 
[pawn1][pawn2][pawn3][pawn4][pawn5][pawn6][pawn7][pawn8] 
[ ][ ][ ][ ][ ][ ][ ][ ] 
[ ][ ][ ][ ][ ][ ][ ][ ] 
[ ][ ][ ][ ][ ][ ][ ][ ] 
[ ][ ][ ][ ][ ][ ][ ][ ] 
[pawn1][pawn2][pawn3][pawn4][pawn5][pawn6][pawn7][pawn8] 
[rook1][knight1][bishop1][queen1][king1][bishop2][knight2][rook2]

Men till nästa version lovar jag att ordna lite bilder, dom får nog definieras i en CSS. Ajabaja för att blanda presentation med data.

2 kommentarer:

Fam Blomberg sa...

Hmm, varför inte använda de verktyg du har till hands? Du kan ju till exempel lägga all pjäserna och deras placering i en xml fil som du sedan kan lagra undan mellan varje drag.

<pjäsplacering>
<spelare name="erik">
<pjäs name="bonde_1" position="a2">
<pjäs name="torn_1" position="a1">
.
.
</spelare>
<spelare name"Martin">
.
.
</spelare>
<pjäsplacering>

Alternativt så kan du ju splitta positionen på vertikal och horisontell representation.

Sedan är det bara till att placera ut dem på brädet med en xsl och lite snygga bilder med css.

Roligt värre ju, borde inte vara så svårt att fång vilken pjäsbild användaren klickar på och sedan vilken rutan på brädet han/hon vill försöka flytta den till.

Om du gör det snyggt så skall det inte vara så svårt att implementera dam eller othello med enkla medel.

Hack away bro...

Unknown sa...

Om jag hade alla pjäsers position vid ett visst ögonblick hade det inte varit så svårt. Nu har jag en fil som innehåller dragen ifrån partiet, exempelvis G7 -> G6. Jag vet inte ens vilken pjäs det handlar om. Så för att ta reda på hur brädet ser ut vid en viss tidpunkt måste alla tidigare drag processas.

Ja idén är att det ska vara så generellt att alla brädspel ska gå att implementera men det blir nog svårt med presentationen om jag inte blandar in SVG.