Ergebnis 1 bis 11 von 11

Thema: Zugreihenfolge festlegen?!

  1. #1

    Zugreihenfolge festlegen?!

    So, ich hab folgendes Problem:
    Ich bastel zZ an einem eignen Kampfsystem herum und möchte nun, nachdem alle Skills und das entsprechende Ziel ausgewählt ist, festlegen welcher der Charaktere als erstes seinen Zug ausführen darf.

    D.h. ich habe 6 Variablen, in denen der Agi-Wert jedes Kämpfers eingespeichert ist.
    Jetzt muss ich irgendwie rausfinden, welche davon den größten Wert besitzt, welche den 2. größten usw. usw.

    Mein Lösungsweg bisher sieht so aus, dass ich einfach über Bedingungen abfrage, ob Variable 1 höher ist als Variable 2, höher als Variable 3, usw. usw.
    Das erscheint mir jedoch äußerst arbeits-/zeitaufwendig

    Hoffe meine Problematik ist erkennbar und jemand weiß, wie ich mir nen Haufen Zeit sparen kann

    (also im Endeffekt will ich einfach nur 6 Variablen der größe nach ordnen.)

  2. #2
    Einen Haufen Zeit müsstest du sowieso für ein dynamisches Kampfsystem investieren
    Dein Lösungsweg ist (finde ich zumindest) der unaufwendigste, den man anwenden kann man könnte ihn eventuell noch mit Event-Calls oder Label-Jumbs übersichtlicher gestalten.
    Wer weiß, vielleicht kennt jemand einen noch besseren?

    Schreib wenigstens hinein, wie du das Kampfsystem geskriptet hast, es konnte uns der Lösung näher bringen

    Geändert von relxi (19.07.2010 um 13:54 Uhr)

  3. #3
    Im Zweifelsfall einfach Bubble Sort anwenden, um den Sortieraufwand möglichst zu minimieren. Bei 6 Variablen ist das ziemlich praktikabel.

  4. #4
    Zitat Zitat von Aldinsys Beitrag anzeigen
    Im Zweifelsfall einfach Bubble Sort anwenden, um den Sortieraufwand möglichst zu minimieren. Bei 6 Variablen ist das ziemlich praktikabel.
    Allerdings ist Bubblesort ziemlich, naja...es lohnt sich nicht wirklich, den für nur 6 Variablen zu benutzen. Nimm einfach nur den ersten Wert, vergleiche ihn mir dem zweiten, ist dieser dann größer nimm den größeren und setze das bis zum Ende fort. Nebenbei noch einen Zähler laufen lassen, der sich merkt, wo die bisher größere Zahl ist und dann müsstest dus haben. Falls du aber dennoch Bubblesort haben willst...ich hab einen für den rm2k in meiner Signatur.

  5. #5
    Zitat Zitat von R.F. Beitrag anzeigen
    Allerdings ist Bubblesort ziemlich, naja...es lohnt sich nicht wirklich, den für nur 6 Variablen zu benutzen.
    Wenn man ihn allerdings dynamisch programmiert (sprich: Mit Variabel-Pointern) lohnt es sich schon, da man ihn dann für alles mögliche verwenden kann.

  6. #6
    @Bubblesort
    Irgendwie leuchtet mir noch nicht ganz ein, wie ich das ins Projekt einbauen soll und würde vermtulich, bis ich es überhaupt verstehe noch mehr Zeit beanspruchen.
    Auch das Skript von R.F. ist für mich nicht sonderlich durchsichtig.

    @RPG Hacker
    Weil du gerade das Stichwort Variabel-Pointer fallen gelassen hast:
    Nach einer Erklärung dieser Pointer hab ich schon die Forensuchmaschine
    bemüht, aber nix gefunden.
    Was ist die Funktion eines Variabel-Pointers, wäre der hier nützlich?

    @relxi
    Jop, Zeitaufwand ist immer vorhanden, aber manchmal kann man sich unnötige Arbeit sparen, indem man einfach mal nachfragt, kostet ja nix

    Danke für die Hilfe soweit

  7. #7
    Zitat Zitat von Fuxfell Beitrag anzeigen
    Weil du gerade das Stichwort Variabel-Pointer fallen gelassen hast:
    Nach einer Erklärung dieser Pointer hab ich schon die Forensuchmaschine
    bemüht, aber nix gefunden.
    Was ist die Funktion eines Variabel-Pointers, wäre der hier nützlich?
    Du kannst Variablen auch eine Zahl merken lassen und dann z.B. einer anderen Variablen den Wert derjenigen Variablen übergeben, deren Nummer du in der Variablen gespeichert hast.

    Var[1]= 5
    Var[5]= 42
    Var[2]=Var[Var[1]]=42

    Klingt erstmal komplizierter, als es eigendlich ist und sowas hab ich in meinen Skript halt oft benutzt, daher auch vielleicht das Missverständnis

  8. #8
    @R.F.
    Ah, Variabel-Pointer sind ja einfach als ich dachte x3
    Hier leider unnütz.

    @Topic
    Habs jetzt folgender Maßen umgesetzt:
    Variable 1 mit allen andern Variablen verglichen.
    Variable 2 mit allen andern, außer der ersten, verglichen.
    usw. usw.

    Immer wenn die Variable 1 größer ist als eine andere,
    bekommt eine andere Variable [Wie oft ist 1 größer?] einen Punkt.

    Die größte Variable hat dann 5 Punkte, die nächste 4, usw. usw.

    Nachdem das fertig ist, geht eine Schleife los und eine Variable
    zählt von 5 nach unten.
    Dann frag ich einfach immer ab, ob [Wie oft ist 1 größer?] gleich der
    runterzählenden Variable ist, wenn ja, dann wird die Aktion von
    Spieler 1 ausgeführt.

    Ging eigentlich doch relativ flott, waren nur 15 Bedingungen x3

    => Problem gelöst

  9. #9
    Mach dir doch mal grundsätzlcihe Gedanken darum, wie du das aufbauen willst...

    Die bekannten Shemata wären CTB und ATB o.0

    Und biedes basiert darauf, dass du einen Maximalwert festlegst und dann die Agi-Werte eines Charakters mit sich selbst addierst... Wer den höchten Agi-WErt hat, ist am ehestens auf dem maximalwert und somit dran... nach seiner Runde wird sein Wert zurückgesetzt und der nächste (der ja noch von den addierungen zuvor seinen wert hat) addiert weiter und erreicht den maximalwert. je nach Umsetzung des Ganzen kannst du dir daraus ein CTB oder ATB bauen...

    Zur Nohoooot... könnte ich dir auch ein CTB-Script schicken, dass noch recht am Anfang steht und daher "relativ" übersichtlich ist....

    (ist btw ziemlich schwer ohne seitenweise erläuterung wirklich hilfreich eine antwort zu posten)

  10. #10
    @Daru
    Habe mir bereits Gedanken gemacht :P
    Und meiner Auffassung nach (bin mir bei den Begriffen nicht so sicher) habe ich weder ein ATB noch ein CTB.

    Es läuft wie folgt: (ist bisher ein 2 Spieler Spiel)
    Spieler 1 hat 3 Figuren, jede hat 3 Skills => Weißt jeder Figur einen Skill und ein Ziel zu.
    Spieler 2 macht genau das gleiche mit seinen Figuren.

    => Jetzt werden die Handlungen ausgeführt, beginnend mit der Figur mit dem höchsten Geschwindigkeitswert.

    Das hab ich jetzt im Endeffekt auch so, wie ichs will :P

    (deine Methode funktioniert in meinem KS sicherlich auch, aber da das bei mir jetzt schon vollkommen funktionstüchtig ist, werd ichs vermutlich nicht mehr ändern, aber ich merks mir für die Zukunft :P)

    Und ich werf gern mal nen Blick auf dein CTB-Script, kann ja nicht schaden
    Danke auch dir

  11. #11
    Nya... es is halt ein bestehendes Projekt also wenn dus nicht brauchst, würd ichs dir ungern schicken weil es nicht jeder sehen soll. Und ja.. das was du hast ist simple rundenbasierung auch wenn ich sie bei einem anderen KS anders gemacht hab ^^ Aber is ja schön, wenns jetzt so klappt, wie dus möchtest.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •