Rundenbasierend anstatt Echtzeit

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Rundenbasierend anstatt Echtzeit

    Hallo,

    Ich bin Anfänger was den Gamemaker angeht und habe absolut keine Ahnung vom proggen.
    Dennoch möchte ich behaupten, dass ich mit meinem Projekt schon sehr weit gekommen bin und es wäre schade die bisherigen Fortschritte einzustampfen, nur weil ich bei einem Punkt hake.

    Um das Projekt näher zu beschreiben, es handelt sich hierbei um die Umsetzung eines Brettspiels mit 5 Spielern, bei dem man abwechselnd seine Figur bewegt und der nächste dran ist etc...

    Wie müsste ein Script aussehen, das mir folgende Möglichkeit bietet:

    Die Figur von Spieler1 hat 6 Schritte geht diese ab und (User) drückt dann auf EINEN Knopf, der bewirkt, dass nun Spieler2 an der Reihe ist und mit SEINER Figur nun 4 Schritte gehen kann.

    Ich weiß es ist bestimmt ganz billig zu scripten wenn man nur ein bisschen Ahnung vom gml-Programmieren hat... aber das ist leider bei mir nicht der Fall und ich wollte den gmk Nutzen um nicht erst eine Programmiersprache zu lernen.

    Ich habe das Problem (um weiter arbeiten zu können) bereits sehr umständlich gelöst, indem ich einen Knopf für Spieler1 habe und einen für Spieler2, diese sorgen dafür, dass die Figuren im richtigen Moment die Instanz wechseln und deshalb mal beweglich und mal nicht sind...
    Vielleicht ist das ein Ansatz, der goldene Abschluss kann es aber nicht sein.

    Ich bin für jeden Lösungsvorschlag (egal wie) sehr dankbar und würde mich auch zurück melden, wenn das Projekt dadurch weiter an Form gewinnt.
  • naja du kannst eine globale variabel erstellen, die sagt welcher spieler gerade dran ist:

    Create_event

    GML-Quellcode

    1. global.player_play = 1 // 1,2,3,4,5...


    Release_Key Enter

    GML-Quellcode

    1. global.player_play+=1; //player_play um 1 erhöhen, damit der nähste spieler zocken kann^^


    dann musst du nurnoch den figuren eine angehörigkeit geben, also eine variabel die sagt zu welchen spieler sie gehört:

    Figur_obj create_event:

    GML-Quellcode

    1. player = 1 //1,2,3,4,5...


    dann nurnoch eine abfrage machen wo du die bewegung der Figuren machst

    GML-Quellcode

    1. if(global.player_play==1)
    2. {
    3. //z.b. Rote figur bewegt sich
    4. }
    5. else if(global.player_play==2)
    6. {
    7. //z.b. Blaue figur bewegt sich
    8. }
    9. .
    10. .
    11. .
    Alles anzeigen



    So ähnlich, ich hoffe du verstehst mich^^
    *gähn*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von The_Shadow3 ()

  • Das ganze hat 2 grundlegende Fehler:

    1. Variablen enthalten NIEMALS Leerzeichen.
    Es muss global.player_play heißen.

    2. Incrementieren funzt vll. in C++, nicht aber im GM.
    (Wäre mir zumindest neu, und halte ich ehrlichgesagt für Blödsinn.)
    Also bitte global.player_play += 1;
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kilik ()

  • Danke für die Antworten,
    war leider weg/krank weshalb ich mich nicht früher wieder melden konnte.
    Nochmal vielen dank, an Shadow3 und Kilik, ich werde es so schnell wie möglich ausprobieren.

    Sollten sich noch Fragen ergeben werde ich die bis Mittwoch stellen oder dann das Thema schließen.

    Edit: Ich bekomms nich gebacken... Obwohl es eigentlich so einfach sein müsste...
    Ich habe euren Vorschlag umgesetzt (nochmal danke) der funktioniert auch wunderbar...
    Nur leider geht der ja nur soweit, bis global.player_play die Zahl 3 erreicht und beide Figuren einmal gelaufen sind.
    Nun versuche ich die ganze Zeit GM zu sagen, dass er bei 2 schluss machen soll, bzw. wieder bei 1 anfängt. (bzw. je nachdem wieviele Spieler drin sind)
    Aber ich finde einfach nicht die richtige Schreibweise für das Script.
    Vielleicht liegt es aber auch daran, dass der eine oder andere Ansatz schon richtig war, aber er es dennoch nicht ausgeführt hat, weil in nem anderen Script noch was fehlte....
    Mmmmh sorry das ich euch mit sowas nerve... aber ich hab mir die Einsteiger-Referrenz schon vier mal durchgelesen... und will nicht nach zwei Wochen rauskriegen dass mir nur ein = gefehlt hat. Für Hilfe schon mal danke im Voraus... verspreche auch diesen Text bald auf gelöst zu setzen :)

    Edit 2: Hi, danke für die Hilfe, habe aber ne eigene Lösung gefunden.

    Edit 3: Wäre vielleicht klug diese Lösung auch mitzuteilen :D .
    Hier ein Example für die, die das gleiche Problem haben und sich lieber das fertige Example angucken als zu überlegen was sie mit den vielen tollen Tips in GML-Code anfangen sollen.

    Comment by Kilik: Ich habe deine 4 Posts mal zusammengeschoben.

    EDIT: durch besseres und kleineres TUT ersetzt
    Dateien

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jokohono ()