Tetris - Teile drehen

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

  • Tetris - Teile drehen

    Hi!

    Ich habe folgendes Problem: Ich bin gerade dabei, eine Art Tetris zu programmieren, und man sollte die Teile so wie bei Tetris drehen können, doch ich weiß nicht, wie man das machen könnte. Ich hab mal die Datei angehängt, damit ihr es euch anschauen könnt. Hoffe ihr könnt mir helfen!
    Dateien
    • tetris.zip

      (3,77 kB, 200 mal heruntergeladen, zuletzt: )

    Mein PC: WinXP Pro | 3 GHz x 2 | 1024 MB RAM | Intel Grafikchip, 224MB

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

  • weil bei

    GML-Quellcode

    1. image_angle
    wird das sprite um die x und y koordinaten gedreht. und die werden mit dem centerding definiert,also wenns in der mitte ist, solltest dus ihne probleme um 90grad drehen könenn.

    zur belehrung: ich hab den komplexen-thread so verstanden, das man MINDESTENS gml-fortgeschritten sein müsst....(was bei dir wahrscheinlih der fall ist, sorry, hab den 3D-Shooter erst spÄter gsehn).
  • Es klappt ja auch, wenn 2 oder 4 Steine in einer Reihe nach unten zeigen, aber z.B. beim Vierer, wenn der gedreht wird, sodass ein Stein nach unten zeigt, liegt der nur zur Hälfte auf den unteren Steinen (ich weiß, schwer zu verstehen).
    Dieser Beitrag ist Spam.
    | |
    | |
    \. ./
    \/
  • Original von F.S.
    Es klappt ja auch, wenn 2 oder 4 Steine in einer Reihe nach unten zeigen, aber z.B. beim Vierer, wenn der gedreht wird, sodass ein Stein nach unten zeigt, liegt der nur zur Hälfte auf den unteren Steinen (ich weiß, schwer zu verstehen).

    Wenn du mal das Alte Tetris spielst, wirst du feststellen, dass da bei dem langen Balken der "Origin" auch nicht genau in der Mitte liegt.
    Also mit meinen bisherigen GML-Kenntnissen könnte man das auf 2 Arten lösen:

    1. Für jeden der 4 Drehwinkel die Höhen- und Breitenunterschiede des Origins ausrechnen und dazuzählen/abziehen. (Siehe Abbildung)

    2. Für jedes Sprite 4 (bzw 2) verschiedene Subimages machen.
    Bilder
    • origin.gif

      997 Byte, 200×140, 672 mal angesehen
    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 ()

  • klasse sache, aber wie habt ihr euch den das mit dem prüfen ob eine ganze reihe voll ist vorgestellt?
    die einfachste möglichkeit währe es das ein object mehrere blöcke erstellt die dan jeweils um dessen ursprung gedreht werden. dan kan man testen (zb. via for schleife) ob alle 16 pixel ein blocke liegt. wen die objecte verschiedene formen habenwird es schwer die in eine blokstruktur zu zerlegen.
    irgentwie ist das nicht richtig ausgedrückt, hoffe ihr versteht was ich meine.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Original von Nobody-86
    klasse sache, aber wie habt ihr euch den das mit dem prüfen ob eine ganze reihe voll ist vorgestellt?
    die einfachste möglichkeit währe es das ein object mehrere blöcke erstellt die dan jeweils um dessen ursprung gedreht werden. dan kan man testen (zb. via for schleife) ob alle 16 pixel ein blocke liegt. wen die objecte verschiedene formen habenwird es schwer die in eine blokstruktur zu zerlegen.
    irgentwie ist das nicht richtig ausgedrückt, hoffe ihr versteht was ich meine.

    Danach wurde ja nicht gefragt...
    Und das mit dem Prüfen, ob eine Reihe voll ist, müsste man mit

    GML-Quellcode

    1. var i, ii;
    2. i = 0;
    3. do
    4. {
    5. ii = position_meeting(/*anfang_vom_feld*/+0*/*Block_breite*/,/*Höhe*/,obj_block)
    6. i += 1;
    7. }
    8. until (!ii)
    9. if (i = /*Nummer_der_spalten*/)
    10. {
    11. //Aktion zum "Löschen" der Spalte
    12. }
    13. //Und das ganze dann für jede Zeile an Blöcken wiederholen
    Alles anzeigen
    doch eigendlich ganz gut hinbekommen.
    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 ()

  • @MewX: hast du dir die angehängte Datei einmal angeschaut? meine tetris teile bestehen aus einzelnen objecten. image_angle würde da nicht funktionieren. (ich muss schließlich den ganzen block drehen, nicht nur die einzelnen objecte)
    ich muss sagen, die lösungen sind nicht so schwer zu verstehen. und es funktioniert.
    -msoft

    Mein PC: WinXP Pro | 3 GHz x 2 | 1024 MB RAM | Intel Grafikchip, 224MB