# Sokoban Clone



## Manfred (4. Sep 2004)

Also das Spiel aus den frühen Jahren sollte eigentlich jedem bekannt sein!

Angefangen hat es so, dass ich zuerst nur ein Labyrinth darstellen wollte. Gut, dem nicht genug wollte ich noch quasi eine Figur durchbewegen können. Tja und wie es eben so ist, will man immer mehr und dann kam ich auf den Sokoban Gedanken!

Hier ein Screenshot:

http://members.chello.at/manfred.fettinger/soko.JPG

Rot ist der Spieler, Gelb die Fässer, Blau das Ziel

Hier das JAR File

http://members.chello.at/manfred.fettinger/java/SokobanJay.jar

Sourcecode ist im JAR File mit drinnen

Also von der programmierung her ist es sicher nicht vorbildlich....  :roll: 

Das Level wird aus einem Textfile eingelesen, welches ebenfalls im jar File vorhanden ist! Man kann ganz einfach auch ein neues Level erstellen (jar in zip umbenennen und das maze.txt ändern).

Also so sieht z.B. das Standardlevel aus:


```
2
13
1111111111111111111
1   111   11  11  1
1       1   1     1
1   1         1   1
1 1111 111  1  1  1
11  2        P    1
111   333    2    1
1 11  33          1
1       111     2 1
1 2 11       11   1
1       2         1
11     11     11  1
1111111111111111111
```

1 = Mauer
2 = die zu verschiebenden Barrels
3 = das Ziel, wo die Barrels hinmüssen
P = Startposition Spieler
blank = der Raum in dem man sich bewegt

Das Programm prüft jedoch das Level nicht ab. Also ob gleich viele 2 wie 3 vorkommen.
Und wichtig, ganz am Anfang der Datei steht die Anzahl der gesamten Levels, dannach die Anzahl der Zeilen des folgenden Levels. 

Pfeiltasten bewegen, ESC = Level Neustart


Na, was meint ihr?


----------



## Anubis (4. Sep 2004)

Als ich das erste Level geschafft hatte, kamen Fertig-Meldungen ohne ende, schnaller als ich klicken konnte. Musste die Application gewaltsam beenden.


----------



## Manfred (4. Sep 2004)

Anubis hat gesagt.:
			
		

> Als ich das erste Level geschafft hatte, kamen Fertig-Meldungen ohne ende, schnaller als ich klicken konnte. Musste die Application gewaltsam beenden.



Seltsam, habs gerade nochmal gespielt und ging ohne Probleme..

Laut dieser Code Zeile sollte es auch so sein?!


```
Object[] options = { "OK" };
            JOptionPane.showOptionDialog(null, "Geschafft in "+moves+" Zügen!", "Fertig!", 
                JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE , null, options, options[0]);
            System.exit(0);
```


Ich hab trotzdem eine kleine Änderung gemacht, probiers hier mal:

http://members.chello.at/manfred.fettinger/soko2.jar


----------



## Anubis (4. Sep 2004)

Diesmal alles Ok. 
Nur noch ein paar Tipss zum Leveldesign:
Nur die Felder, die zum Lösen des Levels nötig sind, sollen begehbar sein. 
Nach möglichkeit den Spieler denekn lassen.


----------



## Manfred (4. Sep 2004)

Dieses Level hatte nur den Zweck zum Testen, da steckt kein Gedanke dahinter!


----------



## 0xdeadbeef (22. Okt 2004)

Manchmal ist nach dem Drücken von Escape der "Spieler" (das rote Quadrat) ganz links oben außerhalb des Spielfeldes.


----------



## Manfred (23. Okt 2004)

War mir schon bekannt, trotzdem Danke!

Hier die neuere Version, nebenbei ist der Spieler jetzt ein Kreis!

http://members.chello.at/manfred.fettinger/java/SokobanJay.jar


----------



## skaal (23. Okt 2004)

coole sache. mach aber nochmal ein menu damit man neu starten kann ohne das programm immer neu aufzurufen. ist gut für leute wie mich, die da nicht so begabt sind und mehere versuche brauchen.


----------



## Manfred (23. Okt 2004)

Mit ESC setzt du das Level zurück!


----------



## skaal (23. Okt 2004)

wer lesen kann ist klar im vorteil...  :wink:


----------

