DB für ein Webschach

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von koli.bri, 25.07.2006.

  1. koli.bri

    koli.bri Thread Starter Gast

    Hallo.

    Hab mal meine alten Scripts aufgeräumt und bin über mein altes webschach gestolpert, was jetzt einmal generalüberholt (komplett neugemacht) wird.
    Damals hab ich die Werte noch in einer Textdatei gespeichert, die folgendermaßen aussah:

    Die ersten acht Zeilen haben die Standorte der Figuren gespeichert, die letzte hat zusätzliche Informationen beinhaltet (Wer am Zug ist, und wies mit den Rochaden aussieht).
    Der Gange Kram wurde Zeilenweise eingelesen und nachher mit explode() gesplittet.

    Und nun will ich das via SQL lösen.

    Doch, wie sieht da die "optimale" Datenstruktur aus? Habt Ihr Ideen?
    Ziel ist es, dass man mehrere Schachspiele verwalten kann.
    Gespeichert werden muss jedes Feld und was drauf steht (anders herum gehts nicht, weil die Bauern ja auch andere Figuren werden können), und halt der ganze Kram wie ob die Türme/König schon bewegt worden sind (Rochade), wer am Zug ist, etc...

    Ausgegeben werden muss das ganze in ein Zweidimensionales PHP Array nach dem Schema $feld[buchstabe][zahl]

    Habt ihr Ideen?

    Derzeit hab ich für jedes der 64 Felder ein eigenes Feld definiert...

    gruß
    Lukas
     
  2. koli.bri

    koli.bri Thread Starter Gast

    Ach so, wer fitt in JavaScript ist, und Lust hat ein paar Teile zu programmieren, kann sich gerne melden.
    Die Frage ist nur, ob und wie man das Script danach auch benutzt/publik macht... Ich mach das eher nur so nebenbei zum üben (hab auch mal drüber nachgedacht, andere Spiele als Webapplikation zu machen, Siedler, oder Risiko und so..)

    gruß
    Lukas
     
  3. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    Nur mal so als Denkansatz:

    Die Felder sind nicht variabel, sie zu speichern macht wenig Sinn!
    Wie man Schachspiele beschreibt, kann man gut an der Notation in den Schachübungen jeder gehobenen Tageszeitung nachlesen! Ich bin da nicht so Firm, aber etwa b(e2-e3) für Bauer e2 nach e3, sowie Farbe wärn doch interessant!
     
  4. koli.bri

    koli.bri Thread Starter Gast

    Hab ich auch drüber nachgedacht, nur die Notation zu speichern. Nachteil ist jedoch, dass ich dann für jeden Zug immer die Komplette Partie nachspielen müsste.

    Und die Figuren einzeln zu speichern fand ich problematisch, weil die Bauern sich ja in andere Figuren wandeln können, sprich, ich müsste dann im Groben folgende Struktur haben:

    Tabelle_Spiel:
    -ID_vom_Spiel
    -wkonig
    -skonig
    -wdame
    -s....

    -wbauer1
    -wbauer1figur
    -wbauer2
    -wbauer2figur

    Die "bauerfigur" Felder wären dann das Feld, wo drinsteht, was für Figuren die Bauern sind. Zudem müste ich dann, falls die Figur geschlagen wird, dieses mit einem Nullfeld belegen, etc...
    Und das sieht mir nicht nach einer gut durchdachten Struktur aus :)

    ----
    Moment, hab mir das gerade eben noch einmal durchgelesen, was Du geschrieben hast:
    Glaube, wir haben da ein Kommunikationsproblem:

    Ich meine nicht dern Verlauf der Partie, den würd ich ganz simpel so speichern, wie die Notation ganz normal aussieht.
    Es geht hier darum, wie man eine Position auf dem Schachbrett speichern kann.
    Ziel des Projekt ist ein Webschach, mit dem zwei Menschen spielen können. Nicht das archieren von Partien.

    Dennoch danke für die Hilfe

    gruß
    Lukas
     
  5. sir.hacks.alot

    sir.hacks.alot MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    MacUser seit:
    10.03.2005
    wenn du nur abspeichern willst welche Figur auf welcher position steht sollte das doch ein fach mit einer Zweispaltigen Tabelle getan sein.
    FELDNr(int) | Figur
    1
    2
    .
    .
    .
    64

    Die Figuren würde ich wahrscheinlich auch als zahlen werte ablegen sprich bauer=1 Turm=2 ...

    Die Rochaden würde ich auch in einer Zweispaltigen Tabelle ablegen Alternaiv könntest du der Belegungstabelle eine Spalte Spiel_Nr zuweisen, womit jedes feld genau einem Spielfeld zugeordnet ist.


    Farbe | Rochade_Möglich (bool)
    Schwarz | 1
    Weiss | 1

    Du kannst für verschiedene Spiele eigene Tabellen anlegen. Alternativ kannst du der Belegungstabelle noch eine Spalte Spiel_nr hinzufügen, die jedes Spielfeld einem Spielbrett zuordnet
     
  6. koli.bri

    koli.bri Thread Starter Gast

    Hm... Es gibt wohl keine Andere möglichkeit, als für jedes Feld eine eigene Spalte zu machen, wie?

    sir.hacks.alot:
    An die Idee hab ich bereits gedacht, der Nachteil ist jedoch, dass ich Tabellennamen ja nicht dynamisch abfragen kann, oder?

    Ein Multiuser-System, bei dem jeder User eine eigene Tabelle hat wäre doch ein wenig (viel) umständlich, oder?

    Naja, ich hab ja auch nicht damit gerechnet, dass es einfach wird....

    gruß
    Lukas
     
  7. sir.hacks.alot

    sir.hacks.alot MacUser Mitglied

    Beiträge:
    2.406
    Zustimmungen:
    113
    MacUser seit:
    10.03.2005
    Wie man den Zugriff auf die Tabellennamen dynamisch gestalten würde wüsste ich jetzt auch nicht so direkt, könnte mir duraus vorstellen daß das geht. Der Vorteil wäre, daß die Daten leichter zu verwalten sind, wenn jedes Spiel ne eigene Tabelle hat. Im Zweifelsfall kannst du ja ne Tabelle machen in der dem User bzw Userpaar ein Tabellenname zugeordnet wird.
     
  8. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    ja warum machst Du es dann nicht so, daß Du 32 Figuren als Objekte ablegst?

    Eigenschaften:

    x_pos [1..8]
    y_pos [1..8]
    art [bauer|turm|springer|laeufer|dame|koenig]
    farbe [schwarz|weiß]
    aktiv [1|0]


    fertig ists! Wird eine Figur gewandelt wird sie umbenannt, wird sie bewegt ändern sich x_pos/y_pos ( gemäß Regeln). Ist sie geschlagen wird aktiv==0 und das Objekt nicht mehr dargestellt! Mehr braucht man doch gar nicht!
     
  9. koli.bri

    koli.bri Thread Starter Gast

    danke wegus, ich schau mir das mal an, ob das für meine Zwecke taugt. Denke aber schon.

    vielen lieben Dank (auch wenn wir uns im Promillefred nicht gut verstanden haben)

    und gruß
    Lukas
     
  10. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    [OT]
    ein gern gemachter Fehler! Unterschiedliche Meinungen zu haben ist nicht verwerflich! Ich diskutier ungern mit Leuten die immer meiner Meinung sind, das bringt doch nix, wenn jeder dem andern sagt er habe recht ;)
    [/OT]
     
Die Seite wird geladen...
Ähnliche Themen - ein Webschach
  1. martinibook
    Antworten:
    10
    Aufrufe:
    1.518

Diese Seite empfehlen