BCC #55 - Puzzlespiel

Übersicht Sonstiges Projekte

Neue Antwort erstellen

ZaP

Betreff: BCC #55 - Puzzlespiel

BeitragDo, Sep 15, 2011 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

BCC #55 - Puzzlespiel

Aufgabenstellung
Erschafft ein Puzzlespiel, also ein Spiel, bei dem der Spieler durch logische Vorgehensweise ans Spielziel (im weitesten Sinne) kommt, indem er die Spielelemente modifiziert.
Es muss also genau ein Ziel geben, aber möglicherweise mehrere Wege dorthin (und natürlich mehrere Levels Smile)

Beispiele sind - neben klassikern wie den Jigsaw Puzzles (Ravensburger) - Sudoku, Portal, die kleinen Rätsel in den Zelda Spielen (Beispiel), Mahjongg Solitaire, usw...

Ende
Abgabe ist in ~3 Wochen am 5. Oktober (Mittwoch) um 23:59:59 Uhr.

Beschränkungen
BlitzBasic: Draw3D, NooNooPhysics
BMax: MiniB3D, BNetEx, MaxGUI
Codelimit 14.2 KiB (14541 Bytes)
Externe Dateien Keine Einschränkung

Ich habe euch (mit Fredko's Hilfe) auch eine kleine Sammlung an Resourcen zusammengestellt, die unter GPL stehen, oder Freeware sind, damit es nicht daran scheitert Wink:

Reiner's Tileset (Sprites, 3D Art, Texturen, einige Sounds)
SpriteLib (Pixel Art, viele Charaktere, aber auch Tilesets)
grsites.com (Kostenlose Sounds)

Das ist zwar kein BAC, aber da mein Nick im Eingangspost steht, erwarte ich eine hohe Teilnehmeranzahl Razz

So, und nun viel Erfolg, bringt die Köpfe der anderen zum Rauchen! (WIP Screenshots sind gerne gesehen)
Starfare: Worklog, Website (download)

darth

BeitragFr, Sep 16, 2011 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

es wird um WiPs gebeten? Dann wipp ich doch mal was aus dem Handgelenk!

BlitzBasic: [AUSKLAPPEN]
Const SIZE = 5
Const TILESIZE = 50
Dim dat(SIZE, SIZE)

game()
End

Function init()
For i = 0 To SIZE -1
For j = 0 To SIZE -1
dat(i, j) = j * SIZE + i + 1
Next
Next

dat(SIZE -1, SIZE -1) = 0
End Function

Function shuffle()
Local x0, y0

For k = 0 To (SIZE * SIZE) ^2
For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) = 0
x0 = i
y0 = j
EndIf
Next
Next

If Rand(0, 1) = 0
x = Rand(0, SIZE -1)
y = y0

play(x, y)
Else
x = Rand(0, SIZE -1)
y = x0

play(x, y)
EndIf
Next
End Function

Function draw()
For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) <> 0
Color 200, 200, 200
Rect i * TILESIZE, j * TILESIZE, TILESIZE, TILESIZE

Color 0, 0, 0
Rect i * TILESIZE, j * TILESIZE, TILESIZE, TILESIZE, 0
Text i * TILESIZE + TILESIZE /2, j * TILESIZE + TILESIZE /2, dat(i, j)
EndIf
Next
Next
End Function

Function play(x, y)
Local x0, y0

For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) = 0
x0 = i
y0 = j
EndIf
Next
Next

If x = x0
If y < y0
For i = y0 To y +1 Step -1
dat(x, i) = dat(x, i -1)
Next

dat(x, y) = 0
ElseIf y > y0
For i = y0 To y -1
dat(x, i) = dat(x, i +1)
Next

dat(x, y) = 0
Else
DebugLog "wrong!"
EndIf
ElseIf y = y0
If x < x0
For i = x0 To x +1 Step -1
dat(i, y) = dat(i -1, y)
Next

dat(x, y) = 0
ElseIf x > x0
For i = x0 To x -1
dat(i, y) = dat(i +1, y)
Next

dat(x, y) = 0
Else
DebugLog "wrong!"
EndIf
Else
DebugLog "wrong!"
EndIf
End Function

Function game()
Graphics SIZE * TILESIZE, SIZE * TILESIZE, 0, 2
SetBuffer BackBuffer()

Local timer = CreateTimer(60)

init()
shuffle()

While Not KeyHit(1)
draw()

If MouseHit(1)
xTile = MouseX() /TILESIZE
yTile = MouseY() /TILESIZE

play(xTile, yTile)
EndIf

Flip 0
WaitTimer(timer)
Cls
Wend

Return
End Function


Mir wurde gesagt, dass man das noch cooler machen könnte, wenn man z.b ein Bild reinlädt. Kann ich einbauen.. wenn ich die Motivation dazu finde!
Was dann noch fehlt ist ein Menü (HAHAHAHA.. als ob) und Replayvalue! Mit coolen Zählern, die dir sagen "du bist ne Flasche, du hast 132 Züge gebraucht, es wäre in 12 machbar gewesen" (was natürlich nicht kommen wird, weil ich sonst noch einen optimalen Löser schreiben müsste, und das ist gar nicht so einfach).
Aber die Idee mit dem Bild klang nicht schlecht.. dann gibts zwei Modi, einen mit Zahlen (bei dem klar ist was wohin muss) und einen mit Bild, wo man noch n bisschen Puzzel spielen muss.

Damit Schluss,
MfG,
Darth

Edit: ¯\_(ツ)_/¯ Supson! ¯\_(ツ)_/¯

Cooler Edit! Neu mit Bild! Und umstellbar! Superlulz!

BlitzBasic: [AUSKLAPPEN]
Const SIZE = 5
Const TILESIZE = 50
Dim dat(SIZE, SIZE)

Const IMG_PATH$ = "Image.jpg"
Global img

Global GAME_MODE = 0

game()
End

Function init()
For i = 0 To SIZE -1
For j = 0 To SIZE -1
dat(i, j) = j * SIZE + i + 1
Next
Next

dat(SIZE -1, SIZE -1) = 0
End Function

Function shuffle()
Local x0, y0

For k = 0 To (SIZE * SIZE) ^2
For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) = 0
x0 = i
y0 = j
EndIf
Next
Next

If Rand(0, 1) = 0
x = Rand(0, SIZE -1)
y = y0

play(x, y)
Else
x = Rand(0, SIZE -1)
y = x0

play(x, y)
EndIf
Next
End Function

Function draw()
For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) <> 0
Color 200, 200, 200
Rect i * TILESIZE, j * TILESIZE, TILESIZE, TILESIZE

If GAME_MODE = 0
Color 0, 0, 0
Rect i * TILESIZE, j * TILESIZE, TILESIZE, TILESIZE, 0
Text i * TILESIZE + TILESIZE /2, j * TILESIZE + TILESIZE /2, dat(i, j)
Else
x = ((dat(i, j) -1) Mod SIZE)
y = ((dat(i, j) -1) / SIZE)
DrawBlockRect img, i * TILESIZE, j * TILESIZE, x * TILESIZE, y * TILESIZE, TILESIZE, TILESIZE
EndIf
EndIf
Next
Next
End Function

Function play(x, y)
Local x0, y0

For i = 0 To SIZE -1
For j = 0 To SIZE -1
If dat(i, j) = 0
x0 = i
y0 = j
EndIf
Next
Next

If x = x0
If y < y0
For i = y0 To y +1 Step -1
dat(x, i) = dat(x, i -1)
Next

dat(x, y) = 0
ElseIf y > y0
For i = y0 To y -1
dat(x, i) = dat(x, i +1)
Next

dat(x, y) = 0
Else
DebugLog "wrong!"
EndIf
ElseIf y = y0
If x < x0
For i = x0 To x +1 Step -1
dat(i, y) = dat(i -1, y)
Next

dat(x, y) = 0
ElseIf x > x0
For i = x0 To x -1
dat(i, y) = dat(i +1, y)
Next

dat(x, y) = 0
Else
DebugLog "wrong!"
EndIf
Else
DebugLog "wrong!"
EndIf
End Function

Function game()
Graphics SIZE * TILESIZE, SIZE * TILESIZE, 0, 2
SetBuffer BackBuffer()

Local timer = CreateTimer(60)

img = 0
If FileType(IMG_PATH) <> 0
img = LoadImage(IMG_PATH)
ResizeImage img, GraphicsWidth(), GraphicsHeight()
EndIf

init()
shuffle()

While Not KeyHit(1)
draw()

If MouseHit(1)
xTile = MouseX() /TILESIZE
yTile = MouseY() /TILESIZE

play(xTile, yTile)
EndIf

If MouseHit(2)
GAME_MODE = 1 - GAME_MODE
EndIf
If img = 0
GAME_MODE = 0
EndIf

Flip 0
WaitTimer(timer)
Cls
Wend

Return
End Function


PS: Das ist nicht trollen.. hoffe ich.
MfG,
Darth
  • Zuletzt bearbeitet von darth am Fr, Sep 16, 2011 0:36, insgesamt einmal bearbeitet

SpionAtom

Betreff: Minesweeper Klon / Kartenspiel / SOKOBAN

BeitragFr, Sep 16, 2011 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann inspiriere ich euch auch mal:

https://www.blitzforum.de/foru...664#262664
https://www.blitzforum.de/foru...778#286778
Ist natürlich keine Teilnahme.

Das hier hingegen ist der Beginn eines Teilnehmerbeitrags: Sokoban
user posted image

Download

Nun könnt Ihr einige Level durchspielen. Ich muss fairerweise dazusagen, dass die Level nicht von mir ausgedacht sind. Als Leveleditor verwende ich den "MiniMapEditor" von Xeres. Wer Interesse hat, Level zu bauen, der braucht im Grunde nur Notepad, und eine kurze Anleitung von mir, wie die Level aufgebaut sind Very Happy
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Urubi

BeitragSo, Sep 25, 2011 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
So nun stelle ich auch die ersten Screenshots von meinem Beitrag vor:
Ziel des Spiels ist es den Ausgang("Exit") zu erreichen. Diesen kann man durch Kistenstapeln und/oder Treppensteigen erreichen. Der Spieler kann immer nur 1 Kiste hochspringen und kann auch nur Kisten aufsammeln, wenn er auf dem Boden/Kiste steht. Durch die Treppen können keine Kisten durchgenommen werden, was das Alles später(in diesem Beispielen nicht) erschweren könnte. Zudem wird es (hoffentlich) später noch Schalter, temporäre Kisten und eventuell sogar Bomben geben.
Dieser Beitrag ist ein Klon von einem Spiel, dessen Namen mir leider entfallen ist...

user posted image

user posted image

Ich weiß noch nicht, ob ich den Leveleditor dazu geben soll, da er 1. sehr unübersichtig ist und 2. würde das Codelimit übertreten werden (Also Editor und Spiel zusammen).

ZaP

BeitragSo, Sep 25, 2011 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah na das sind doch ein paar nette Aussichten Smile
@Spion: Das Spiel ist toll! Ziemlich schwierig teilweise, so muss das Very Happy
@Urubi: Sieht schön aus. Den Leveleditor kann man ja theoretisch als Spielresource betrachten, also die ausführbare Datei... Wink
Starfare: Worklog, Website (download)

BlitzMoritz

BeitragMo, Sep 26, 2011 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

Als ich das Thema "Puzzle" las, sagte ich mir: dann MACHST du auch ein Puzzle und nichts anderes.
Doch wie ich so an dies und jenes dachte, wurde mir bewusst, dass ich dieses Thema schon mehrfach ausgereizt hatte.
Es musste also eine ganz neue Spielidee her und die fängt erst einmal ziemlich "Anti-Puzzle-mäßig" an:

Jedes Puzzleteil befindet sich bereits an der richtigen Stelle! Häää? Shocked Wieso ist's dann noch ein Puzzle?
Tjaaa, man stelle sich vor, man habe die Puzzleteile mehrerer Puzzle in ein und dieselbe Kiste geworfen.
Nun gilt es, sich auf eines zu beschränken, auszusortieren und richtig herum zu drehen.
Wie's funktioniert?
Mit der rechten Maustaste klappt man ein einzelnes Puzzleteil um. So lassen sich seine verschiedenen "Puzzle-Ebenen" überprüfen.
Mit der linken Maustaste dreht man die (übrigens verschieden großen, asymmetrisch angeordneten) Puzzleteile im Uhrzeigersinn.
Ziel ist es, mit möglichst wenigen Schritten bzw. Mausklicks eines der Puzzles zusammenzusetzen.
Wieviel Puzzlebenen existieren, schwankt zufällig zwischen 3, 4 oder 5. Es kommt erschwerend hinzu, dass die Bildvorlagen jeder Puzzleebene aus abstrakten "Gemälden" ähnlicher Farbgebung bestehen.
Am schwierigsten ist der Anfang. Hat man aber erst einmal zwei zusammenhängende Teile entdeckt, löst sich der Rest sukzessiv auf.
Die Anzahl der Teile inklusive der Größe des Puzzle ist übrigens optional wählbar.

Ich hoffe, es macht Euch ein bisschen Spaß. Very Happy

Ausführbare Dateien für alle Betriebssysteme:
Download Windows-Version
Download MacOSX-Version
Download Linux-Version

Codes, Medien etc.:
Download Workspace

Falls ihr Verbesserungsvorschläge habt: Lasst es mich rechtzeitig wissen ... Wink

darth

BeitragSa, Okt 01, 2011 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

sieht so aus als hätte ich doch noch Konkurrenz gekriegt, wie gemein! Dann muss ich mich ja direkt ranhalten..
Ich habe tatsächlich ein Menü gebastelt, in dem man alles (bis auf Dinge, die ich vergass) einstellen kann! Natürlich kann man alles kaputtmachen wenn mans darauf anlegt. Probiert mal die Grösse auf 14320 einzustellen, wird nicht funktionieren. Auch ein paar andere Einstellungen werden MAVs erzeugen (weil ich eine maximale Grösse für GameStates einrichten musste..)

user posted image

Es wird vielleicht noch etwas GUI dazukommen, Bedienung funktioniert momentan über Maus. In der Zug-History springt man mittels T und Z (so wie in den meisten handelsüblichen Programmen, bloss ohne Ctrl). Esc führt zurück ins Menü (dabei fällt mir ein, dass ich Spielstände nicht lösche.. Bug!), ein weiteres Esc beendet das Spiel.

Falls ich noch etwas wichtiges vergessen habe, fällt es mir bestimmt nichtmehr ein, von daher soll jetzt genug sein.
MfG,
Darth

PS: Lulz, Download wär noch was, nicht wahr?
Diese Signatur ist leer.

ZaP

BeitragSo, Okt 02, 2011 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Darth: Ich bin mir nicht sicher, ob ich nicht etwas falsch gemacht habe, aber dein Puzzle bleibt ja völlig stumm, wenn man gewonnen hat (getestet an 2x2 und 3x3)? Sad
Außerdem gibt es ja gar kein Limit für externe Dateien, pack doch ein oder zwei Bildchen mit ins Archiv, das gibt bestimmt extra Punkte Wink

BlitzMoritz: Tolles Spiel, macht richtig Spaß Smile Fehlt aber noch der Sourcecode, damit's eine Abgabe ist Wink
Starfare: Worklog, Website (download)

PacMani

BeitragDi, Okt 04, 2011 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Urubi hat Folgendes geschrieben:
Dieser Beitrag ist ein Klon von einem Spiel, dessen Namen mir leider entfallen ist...

BlockDude? Gab's für'n TI-84 Plus auch mal. Passwort für's letzte Level war passenderweise "wTF" Wink

darth

BeitragDi, Okt 04, 2011 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ZaP, du wirfst zwei Punkte auf, auf die ich nun antworte (wie nett von mir!):

1. Fauler Kerl -.- mit 2x2 und 3x3 testen? Pfft! Aber du hast recht, ich habe völlig vergessen, eine Siegeserkennung zu bauen. Danke für den Hinweis. Ich habs jetzt mal eingefügt, wenn alles am richtigen Platz ist, wird ein "VICTORY" auf den Schirm gezaubert. (Bei 2x2 wird es zu gross sein, ab 3x3 ists passend.)

2. Mir ist bewusst, dass es kein Limit für externe Daten gibt (trotzdem danke für den Hinweis). Aber wie du den (ebenfalls gerade erst hinzugefügten) Credits entnehmen kannst, ist schon dieses Bild geklaut. Ich bin kein Künstler, und es war eigentlich auch nicht meine Idee, Bilder für das Spiel zu machen. Die Idee war, dass sich jeder eigene Bilder reinpacken kann, weil man den Pfad ja ganz einfach anpassen kann.

Nunja. Updated DLL
MfG,
Superman
Diese Signatur ist leer.

ZaP

BeitragMi, Okt 05, 2011 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, also es bleiben noch so 13.5 Stunden bis zur Abgabe, bisher haben wir drei Projekte. Wer noch eins abgibt, bekommt einen gewaltigen Keks. Also, nutzt eure Pausen, oder noch besser, eure Arbeits-/Schulzeit dazu ein Puzzlespiel zu machen! Very Happy
Starfare: Worklog, Website (download)
 

Urubi

Betreff: Abgabe

BeitragMi, Okt 05, 2011 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
BlockDude könnte es durchaus heißen, da ich es auch einige Zeit auf meinem TI hatte.
Eigentlich wollte ich noch einige Elemente einbauen, wie Kisten, die nur eine bestimmte Zeit da bleiben etc., aber ich kam leider nicht mehr dazu(und werde wohl heute auch nicht mehr dazu kommen) Sachen noch einzubauen. Zudem ist der Code auch nicht ganz so wie ich ihn haben wollte... mehr so ein WIP-Code...
Naja, aber da ich meinen Beitrag schon angekündigt hatte ist er hier:

Gesteuert wird mit den Pfeiltasten und mit Leertaste nimmt man die Kisten auf und legt sie auch wieder ab(Wenn man eine Kiste ablegen will, muss man vor sich Platz haben). Beides Auf- und Ablegen der Kisten geht nicht im Sprung. Türen benutzt man mit Pfeiltaste nach oben.
Mit Enter startet man das Level neu, falls man sich zugebaut hat.
Es gibt 6 Level. Nach dem 6.Level wird einfach beendet.

http://ul.to/hsy838su

EDIT: https://www.blitzforum.de/upload/file.php?id=10982
  • Zuletzt bearbeitet von Urubi am Mi, Okt 05, 2011 20:58, insgesamt einmal bearbeitet

ZaP

BeitragMi, Okt 05, 2011 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider will mich der Hoster nicht runterladen lassen (erst timeout, dann natürlich das Downloadlimit erreicht), lad das doch bitte ins Archiv hoch Smile
Starfare: Worklog, Website (download)

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group