Tetrisstein drehen - was mach ich falsch?

  • GM 6

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

  • Tetrisstein drehen - was mach ich falsch?

    Hallo. Ich arbeite gerade Tetris und hab grad ein ziemliches Problem mit dem Drehen vom Stein.

    Wenn man auf nach oben drückt (press key event), dann ist folgender Code angegeben:

    GML-Quellcode

    1. if (move == 1)
    2. {
    3. if (id != global.middle)
    4. {
    5. if (x == global.middle.x - 25 && ypos == global.middle.ypos)
    6. {
    7. x += 25;
    8. y += 25;
    9. }
    10. else if (x == global.middle.x && ypos == global.middle.ypos + 25)
    11. {
    12. x += 25;
    13. y -= 25;
    14. }
    15. else if (x == global.middle.x + 25 && ypos == global.middle.ypos)
    16. {
    17. x -= 25;
    18. y -= 25;
    19. }
    20. else if (x == global.middle.x && ypos == global.middle.ypos - 25)
    21. {
    22. x -= 25;
    23. y += 25;
    24. }
    25. }
    26. }
    Alles anzeigen


    global.middle ist die id des steins in der mitte. global.bottom die des unteren, global.left die des linken, global.right die des rechten. ypos ist einfach die y variable, allerdings brauch ich hier wegen meinem bewegungs-script. move gibt an, ob es der stein ist, der aktuell in der luft ist.

    Wenn ich jetzt auf nach oben drück wird allerdings aus dem stein den ihr in diesem Bild oben sehen könnt der untere.


    €dit: Ich hab die Datei mal hochgeladen. Ihr findet sie in diesem Beitrag.
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage

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

  • Schau mal, der GameMaker weint! :heul:
    (Tschuldigung die Ironie)
    if (x == global.middle.x - 25 && ypos == global.middle.ypos)
    Ein Fehler könnte daran liegen, dass du noch ein paar Klammern setzen solltest:
    if ((x == global.middle.x - 25 )&&;( ypos == global.middle.ypos))
    Ansonsten läuft das Ganze nämlich auf jeden Fall falsch
    und sonst kann ich auch keinen Fehler entdecken.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Die klammern ändern auch nichts (was mich auch gewundert hätte ich mach das schon immer ohne^^). Was ich jetzt noch gemacht hab ich hab noch zusätzlich zur variable y auch ypos verändert, was das ganze zwar ein bisschen verbessert hat aber das problem ist trozdem nicht gelöst (jetzt ändert sich der stein beim drehen in andere Tetris figuren)
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Uups, beim nächsten Mal lehne ich mich erst wieder so weit aus dem Fenster, wenn
    ich mir ganz sicher bin... :whistling:
    Tschuldigung, als C++ Programmierer fällt mir des halt ins
    Auge, weils da dann halt nicht klappen würde...
    Ich möchte nur noch mal kurz nachfragen, ob du mich auch richtig
    verstanden hast (vor allem weil mir dieses ____ Forum einen Smiley in den
    Ausdruck reingepfeffert hat, wo eine Klammer stehen soll und ich sonst auch nicht mehr weiter weiss):
    Ich meine nicht die Klammern hier: if () (die kann man wirklich weglassen)
    sondern die zur Verknüpfung zweier Ausdrücke:
    if () &&()

    Wenn du es schon am Anfang richtig verstanden hast, dann bitte ich um Entschuldigung.
    Vielleicht könntest du auch mal die .gmk hochladen, das würde (vielleicht) auch helfen.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • danke, ich hab dich schon richtig verstanden.... Ich bin auch nicht gerade amateur^^

    In C++ hätt das übrigens genau so gut funktioniert - da mach ich das auch immer so ;)

    Und da anscheinend wirklich kein fehler in diesem Skript zu sein scheint mach ich jetzt was was ich voll ungern mach: Ich lade die datei hoch^^

    Bitte verzeiht mir meine reichliche auskommentierung, aber das ist wirklich nicht mein stil ;)
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Ich habs mirs jetzt noch einmal angeschaut und bin zu
    folgendem (nicht sehr hilfreichen) Schluss gekommen:
    Durch die Abwärtsbewegung oder durch etwas anderes
    werden die Blöcke total deformiert, wenn man sie rotiert.
    Eine Möglichkeit wäre, die Abwärtsbewegung kurz anzuhalten,
    wenn gedreht wird.
    Gemerkt hab ichs daran, das alles klasse funzt, wenn du bis
    auf das Create-Event und das Up-Key_Event alle Events löscht.

    Zum Thema Upload: Kann ich gut verstehen, man will ja auch
    nicht, dass irgendein unangemeldeter Besucher den Code klaut.
    Das Beste ist da, einfach in die Upload-Versionen nur die
    Problembetreffenden Sachen reinzutun (Was du ja getan hast).

    Und ansonsten... ;(
    Halt ich jetzt lieber die Klappe, man, wenn man meine
    Posts liest... ich komm ja wie der totale Besserwisser rüber! :thumbdown: ;(
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Findest du die hören sich so an. Da bist du warscheinlich der einzige ;)

    Ich hab das grad mal getestet und festgestellt, dass es tatsächlich an der bewegung liegt. Ich werd dann mal n bissel rumexperimentieren und mich wieder melden falls es nicht klappt. ;)
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage