[Studio 2] Probleme Sokoban Spiel

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

  • [Studio 2] Probleme Sokoban Spiel

    Moin,

    ich bastel an einem Sokoban (Kisten schieben) Spiel für meine Kinder rum.
    Dazu habe ich mir folgendes Tutorial zu Rate gezogen:
    GMS 2 Sokoban

    Leider funktioniert das Ganze nur teilweise.

    Mein Tileset besteht aus 32x32 Pixel Grafiken wie im Video.

    Im Controlerobjekt regel ich den Schrittzähler.
    Das Level selbst habe ich, um Objekte zu sparen, via Tileset aufgemalt und über den Wänden Blockerobjekte gesetzt.
    Bei mir habe ich jetzt zum einen damit schon Probleme, dass ich teilweise durch meine Wände gehen kann trotz Blockerobjekte, welche überings auf "Solid" eingestellt sind, zum anderen weiss ich nicht, wie ich dem Spiel begreiflich machen soll, das es z.b: einen Text ausgibt, wenn alle Zielobjekte mit einer Kiste bedeckt sind oder zum nächsten Level weitergeleitet wird.

    Wäre hier für Hilfestellungen sehr dankbar.

    Achja, ich bin noch nicht lange in der Materie drin.
    Leider gibt es nicht wirklich viel deutsches Tutorial Material :/

    cu
    Cheffe
    Nur wer gegen den Strom schwimmt, kann zur Quelle gelangen!
  • Du kannst in deinem Spieler/controller objekt mit "with" durch alle Knöpfe iterieren, dann suchen wir die nähste Kiste und checken deren Distanz zum Knopf und setzen dementsprechend die "ready" variable. Wenn alle Kisten an Ort und Stelle sind bleibt "ready" 1 / true , falls eine oder mehr kisten fehlen ist es false / 0

    GML-Quellcode

    1. ///create event:
    2. ready = false;
    3. ///step event:
    4. with (obj_button) {
    5. var nearest = instance_nearest(x,y,obj_crate);
    6. if (nearest != noone)
    7. if (point_distance (x,y,nearest.x,nearest.y) < 16) {
    8. other.ready = true;
    9. }else{
    10. other.ready = false;
    11. break;
    12. }
    Alles anzeigen
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Interessant wäre noch zu wissen wie du deinen Spieler und die Kisten bewegst.
    Eventuell wäre snap_grid und place_empty hilfreich.


    zum anderen weiss ich nicht, wie ich dem Spiel begreiflich machen soll, das es z.b: einen Text ausgibt, wenn alle Zielobjekte mit einer Kiste bedeckt sind oder zum nächsten Level weitergeleitet wird.
    Man könnte es so versuchen:

    GML-Quellcode

    1. var bedeckt;
    2. var nicht_bedeckt;
    3. with(obj_Zielobjekt)
    4. {
    5. if (place_meeting(x, y, obj_Kiste)
    6. {
    7. bedeckt++;
    8. }
    9. else
    10. {
    11. nicht_bedeckt++;
    12. }
    13. }
    14. if (nicht_bedeckt == 0)
    15. {
    16. //Nächstes Level
    17. }
    Alles anzeigen


    Ich habe das nicht getestet, aber es könnte so in der Art klappen. Sieh es nicht als Komplettlösung, sondern mehr als Denkanstoß. Ich hoffe das konnte dir weiterhelfen.
  • Sorry, das ich mich jetzt erst melde, musste kurzfristig ins KH.

    @Rhazul
    Versuche ich mal, danke!

    @icqgamer
    Die Steuerung läuft über place_free bzw. position meeting.
    Hier der Code aus Taste D:

    GML-Quellcode

    1. /// @desc Right Movement
    2. image_index = 0;
    3. if (place_free(x + 32, y)){steps +=1;
    4. x += 32;
    5. }
    6. else
    7. {
    8. if (position_meeting(x + 32, y, obj_box01))
    9. steps +=1;
    10. {
    11. if (place_free(x + 64, y))
    12. {
    13. with(instance_position(x + 32, y, obj_box01))
    14. {
    15. x += 32;
    16. }
    17. x += 32;
    18. }
    19. }
    20. }
    Alles anzeigen


    Ich kann das "Projekt" auch gerne mal anhängen, ist ja kein Staatsgeheimnis.
    Sokoban_Problem.zip
    Nur wer gegen den Strom schwimmt, kann zur Quelle gelangen!