Php

Dieses Thema im Forum "Kneipe" wurde erstellt von seeed, 10 Januar 2006.

  1. seeed

    seeed Erfahrener Benutzer

    Beiträge:
    181
    Likes:
    0
    sodele ^^
    hab vor ein tool für ogame in php zu schreiben....
    hab aber ein einziges problem dabei ...
    ich weis ned wie man nen kb einlesen kann ^^
    ich hab ein Eingabefeld wo man den kb(!) reinkopieren soll und mittels php sollen dann die anzahl der schiffe in variablen geschrieben werden... :hm:
    der rest ist kein Problem :D
    vielleicht gibt es hier ja jemand der mir sagen kann wie ich des anstellen kann....und nein, genaues zu dem tool möchte ich NOCH nicht verraten ^^

    greetz
     
  2. Anzeige für Gäste


    um diese Anzeige auszublenden!.
  3. Ilai

    Ilai Well-Known Member

    Beiträge:
    1.362
    Likes:
    1
    also erst mal: aus Lastgründne ist es sinnvoller, das Parsen der Eingaben Clientseitig in Javascrißpt zu machen - wer Ogame spielt, hat JavaScript sowieso aktiviert.

    Vom Prozedere her ist es aber egal, ob PHP oder JS

    Wenn du das mit PHP machen willst, dann ist ereghttp://www.php.net/manual/de/function.ereg.php dein Freund.

    Nehmen wir an, deien POST oder GET Variable heißt text,, dann kansnt du damit z.B. folgendermassen filtern:
    Code:
    if (ereg ("Schlachtschiffe: (.*).* Zerst.*rer: (.*)", $_REQUEST['text'], $regs))
    {
      $schlachtschiffe = $regs[1];
      *zerstoerer = $regs[2]; // Im Suchpattern ist hier 'n Workaround für HTML Kodierungen
    }
    
    Es lohnt sich auch, 'nen Blick auf die Perl kompatiblen RegExps zu werfen, die haben nochein paar nette Features.



    In deinem Fall müsstest du erst mal die beteiligten Einheiten in ein Array einlesen, und die weiteren Zeilen gemäss dieses Arrays parsen.

    Ich würde dabei einen zweidimensionalen Array für jede Einheit benutzen, also
    nach dem Schema:
    $angreifer[$runde][$einheitstyp]
    $verteidiger[$runde][$einheitstyp]

    aber das hängt sehr davon ab, was du vor hast.

    Um nur den Kampfbericht in einer Datenstruktur zu speichern, würde ich 'n Objekt benutzen, das über die Einheiten Zeile initialisiert wird, und über die darauffolgende Zeile noch die Anzahl der Einhaiten einträgt.
    Mußt dabei dann aber aufpassen, weil du für jede Kampfrunde neu initialisieren mußt.
     
  4. seeed

    seeed Erfahrener Benutzer

    Beiträge:
    181
    Likes:
    0
    Klingt nach ner guten idee ;)
    also Java-script kann ich ma keins ^^
    aber das mit dem 2dimensionalen Feld kann ich mir gut vorstellen....
    bloß eins....in den kbs werden ja ned immer alle einheiten benutz, wie kann ich es machen dass er in die erste reihe des arrays alle schiffe reinschreibt die auch wirklich dabei sind? kann man es da so machen dass er erst ab nem gewissen wort die schiffe reinschreibt bis er ein anderes erreicht hat und hört da auf....und wichtig ist auch dass die schiffe der jeweiligen person zugeteilt werden....wegen aks...
    thx schonma :)
     
  5. Ilai

    Ilai Well-Known Member

    Beiträge:
    1.362
    Likes:
    1
    jo, du durchläufst die Zeilen sequentiell von links nach rechts, udn schaust, welcher SChiffstyp an der wievielten Position von links steht, über die Index Numemr kannst du dann in der nächsten Zeile die Anzahl zuordnen
    Was das AKS angeht, ist es ein klein wenig komplizierter, weil dein einziger Anhaltspunkt der ist, dass die Einheuiten immer von links nach rechts in einer bestimmten Reihenfolge aufgelistet werden - wenn du auf einen Einhasitstypen stösst, der bereits schon ein mal vor kam, gehört die Flotte einem neuen Spieler.

    Also z.B. lj, ssf, Zer, Rip, LJ
    aber wenn AKS1 mit LJ angreifr, und AKS2 'nen Rip bei steuert, bist du aan der Stelel aufgeschmissen.
    Das kansnt du höchstens umgehen, in dem du den HTML Quelltext einpasten lässt - da kann man dann die Tabellenstruktur eindeutig analysieren.
     
  6. Ilai

    Ilai Well-Known Member

    Beiträge:
    1.362
    Likes:
    1
    oh, ich hab' mir eben 'nen AKS KB angesehen: die Wörter Typ Anz. kansnt du als Trenner benutzen, um die Flotten dereinzelnen Spieler zu unterscheiden
     
  7. seeed

    seeed Erfahrener Benutzer

    Beiträge:
    181
    Likes:
    0
    naja, auf jeden fall wird die Unterscheidung im AKS schwer....naja, ich lieber herausforderungen ^^
    des wird auch irgendwie gehen....muss mich nur noch mit php richtig vertraut machen :p
     
  8. Ilai

    Ilai Well-Known Member

    Beiträge:
    1.362
    Likes:
    1
    das AKS Zeug ist eigentlich sehr einfach - mit ereg("Angreifer: (.*)", $zeile, $angreifer); erhältst du ein Array, das ab der IndexPosition 1 alle Namen der Angreifer enthält, und die einzelnen Flotten kansnt du über die 'Schlüsselwörter' Typ und Anz. voneinander trennen - das ist eigentlich völlig unkompliziert

    Einfach die Zeile mit den Einheiten per explode in ein Array zerlegen, und immer, wenn du entweder auf das Wort "Typ" oder "Anz." stösst, den Index des Spielerarrays erhöhen.
    Die Records selber mussst du natürlich in jeder Runde neu initialisieren, weil ja auch mal ein Spieler oder eine Einheit eher verschwinden kann, als andere - und für mehrere Verteidiger absolut synonym