Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   15-Puzzle (https://www.delphipraxis.net/139908-15-puzzle.html)

False Pretense 8. Sep 2009 00:04


15-Puzzle
 
Liste der Anhänge anzeigen (Anzahl: 2)
Tag Leute!

Vor kurzem entdeckte ich per Zufall eine Version von diesem recht bekannten Schiebepuzzle "15-Puzzle" auf meiner Spielekonsole. Das besondere an dieser Version ist, dass man das Puzzle nicht mit einem Cursor löst, sondern ausschließlich mit Pfeiltasten.
Das erlaubt dem Spieler die Teile schneller hin und her zu bewegen als mit 'nem Cursor.

Nach langer Suche im Internet fand ich nichts vergleichbares für den PC, weshalb ich mich dazu entschlossen hab meine eigene Version zu programmieren.
Diese Version lässt sich mit den Pfeiltasten als auch mit der Maus lösen.

Ich wäre sehr denkbar über Kritik, Anregungen oder Lob über das Programm als auch über den Quelltext.

Viel Spaß und freundliche Grüße,
False Pretense!

P.S: Mein derzeitiger Rekord liegt bei 15 Sekunden mit meiner Version. Wer knackt ihn? =D

Mithrandir 8. Sep 2009 07:16

Re: 15-Puzzle
 
Macht n super Eindruck. :thumb: Aber zum Lösen fehlt mir die Geduld. :mrgreen:

Medium 8. Sep 2009 07:38

Re: 15-Puzzle
 
Du hast 260millisekunden pro Zug geschafft!? Und nebenbei noch den aktuellen Zustand des Brettes erfasst? My lovely mister singing club :shock: Ich werd wohl doch alt.

turboPASCAL 8. Sep 2009 08:08

Re: 15-Puzzle
 
Jo, wird wohl 'n Fehler in der Zeitnahme sein.

PS.: Falsche Sparte, Freeware <> OpenSource

// Edit: Man muss lesen können

Mithrandir 8. Sep 2009 08:09

Re: 15-Puzzle
 
Zitat:

Zitat von turboPASCAL
PS.: Falsche Sparte, Freeware <> OpenSource

Wieso, Source ist doch dabei? :gruebel:

fkerber 8. Sep 2009 08:10

Re: 15-Puzzle
 
Hi!

Zitat:

Zitat von turboPASCAL
PS.: Falsche Sparte, Freeware <> OpenSource

Inwiefern? Source ist doch dabei?
Oder übersehe ich was?


Grüße, Frederic

turboPASCAL 8. Sep 2009 08:11

Re: 15-Puzzle
 
Zitat:

Inwiefern? Source ist doch dabei?
Oder übersehe ich was?
Nein Ich ! :wall: Leider warst du schneller als ich mit meiner Korrektur.

Tonic1024 8. Sep 2009 08:34

Re: 15-Puzzle
 
Die Pfeiltastensteuerung macht mich kirre... Kann man sie vielleicht optional vertauschen/spiegeln? Mein krankes Hirn möchte nämlich den weissen Kasten bewegen und nicht die benachbarten Kästchen in den weissen Kasten hinein.

Ausserdem fänd ich es nett wenn das Bitmap in die exe kompiliert würde. Für custom-zwecke (falls das deine Absicht war) könntest du ein alternatives Bitmap per Menü laden.


Ansonsten muss ich sagen, eine schicke App...

Toni

himitsu 8. Sep 2009 09:06

Re: 15-Puzzle
 
Viele Spiele nehmen die F2 als Start
und ich würde bei Pause die Zahle verstecken ... so könnte man sonst seht leichtr cheaten.

S P *gucken* S Pfeil P *gucken* S Pfeil P *gucken* .......


Eine Option zum verauchen der Pfeiltasten wäre wirklich toll,
aber es war dennoch schön, daß man auch die Maus nutzen kann :thumb:

turboPASCAL 8. Sep 2009 09:58

Re: 15-Puzzle
 
Oder am einfach mal denken lassen, damit die Pausetaste nicht überlasted wird.

Ich mach es so: *klick mich* ( ~120 KB *.swf )

:P

Satty67 8. Sep 2009 10:11

Re: 15-Puzzle
 
Die ganz einfachen Spielchen sind doch immer noch die schönsten...

Zitat:

Zitat von himitsu
Eine Option zum verauchen der Pfeiltasten wäre wirklich toll,
aber es war dennoch schön, daß man auch die Maus nutzen kann

Glaube nicht, dass das Rauchen der Pfeiltasten wirklich den Kick bringt. Aber wenn die weggeraucht sind, sollte wirklich eine Mouse-Steuerung da sein.

Medium 8. Sep 2009 10:14

Re: 15-Puzzle
 
Du bringst mich auf eine Idee wie ich meinen tristen Büroalltag aufwerten könnte... :gruebel:

*zündel*

himitsu 8. Sep 2009 10:34

Re: 15-Puzzle
 
verTauSchen :oops:

und das mit der Maus geht ja schon :)

xZise 8. Sep 2009 11:30

Re: 15-Puzzle
 
Hallo,
nettes Spiel, aber die Zeilen 87 und 88 sind problematisch:
Delphi-Quellcode:
TButton(findcomponent('piece_' + IntToStr(field[x, y]))).Left := (x - 1) * 50;
TButton(findcomponent('piece_' + IntToStr(field[x, y]))).Top := (y - 1) * 50;
Es geht zwar an sich, aber statt TButton solltest du TImage nehmen.

Und was hälst du davon dir eine TImage Nachfahrenklasse zu erstellen, die Zum Beispiel die X/Y Pos speichert?
Delphi-Quellcode:
TSwapImage = class(TImage)
public
  property X : Integer read GetX write SetX
  property Y : Integer read GetY write SetY
end;

procedure TSwapImage.SetX(Value : Integer)
begin
  // "Verbesserte" Variante... Die verhindert eine falsche Eingabe. Ansonsten kannst du natürlich auf Min/Max verzichten
  Left := Max(Min(Value, 4), 0) * 50;
end;
Außerdem könntest du da dann auch "ihren" Wert speichern.

Und vielleicht solltest du verhindern "FindComponent" zu verwenden und stattdessen vielleicht die T(Swap)Image-Objekte in einer TObjectList zu speichern?

Außerdem sollte man mit einem Klick alle entsprechend verschieben...
Also wenn wir in der Reihe haben:
2304
Das man auf die 2 Klickt und er dann hat:
0234

MfG
xZise

Christian18 8. Sep 2009 11:42

Re: 15-Puzzle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich hab das Spielchen auch mal getestet und einen kleinen Bug gefunden.

1. Wenn die Pause aktiviert ist, lassen sich die Kästchen mit den Pfeiltasten trotzdem verschieben. So kann man einen neuen Rekord von 0 Sekunden aufstellen.

2. Wenn die Pause aktiviert ist, sollte sich das Programm die Zeit merken und nicht immer wieder bei 0 anfangen die Sekunden zu zählen. Auch dies ermöglicht einen rekord von 0 sekunden.

PS: Ich hab mal einen neuen Rekord im Screenshot gemacht. :-) 6 Sekunden, Neuer Rekord!!!

Christian18 8. Sep 2009 12:06

Re: 15-Puzzle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bins nochmal. Ich wollte gerade nochmal ohne Pause spielen um zu schauen wie schnell ich bin. Also auf richtiger weise.

jetzt ist mir aufgefallen, dass der Zug zähler wohl auch net richtig funzt. Hatte das wärend des Spielens nicht angeschaut. viel mir nur zum schluss auf, deshalb kann ich den fehler nicht wirklich lokalisieren. aber ich haben 100pro mehr als 3 züge benötigt.

edit:

aber sonst eine tolle pausen beschäftigung. echt tolle idee mit den pfeiltasten.

mfg christian18

Angel4585 8. Sep 2009 12:23

Re: 15-Puzzle
 
Ich bin zu dumm für dieses Spiel.
Ich will immer das weisse Quadrat noch oben schieben, dabei gehts dann nach unten wenn ich nach oben drück.
Ne Einstellung um die Tasten invertiert nutzen zu können wäre Klasse :D

Edit:
trotzdem geschafft :D

---------------------------
Information
---------------------------
Gelöst!

Benötigte Zeit: 160 Sekunden
Benötigte Züge: 112
---------------------------
OK
---------------------------


Ne Onlinehighscore wäre nicht schlecht :D

False Pretense 8. Sep 2009 14:39

Re: 15-Puzzle
 
Zitat:

Zitat von Daniel G
Macht n super Eindruck. Thumbs up! Aber zum Lösen fehlt mir die Geduld. Mr. Green

Danke! :-D
Achwas, das kriegst du schon noch hin! Wenn man das erstmal gelöst hat, weiß man, dass sich die Geduld gelohnt hat! *gg*


Zitat:

Zitat von Medium
Du hast 260millisekunden pro Zug geschafft!? Und nebenbei noch den aktuellen Zustand des Brettes erfasst? My lovely mister singing club :shock: Ich werd wohl doch alt.

Von den 58 Zügen hab ich mir natürlich nicht jeden angeschaut. Meistens löse ich das so, dass ich ein 2x2 Viereck mit dem weißen Feld im Auge behalte und die Teile durch schnelles Drücken von z.B. Links + oben rotieren lasse. Aber die Zeit müsste so hinkommen, auf meiner Spielekonsole schaffe ich auch immer um die 15 Sekunden. Ein Fehler in der Zeitnahme ist es meiner Meinung nach eher nicht.

@: Tonic1024 und Angel4585 und himitsu:
Alles klar, die Tastenvertauschtopion werde ich für euch einbauen! :)


Zitat:

Zitat von Tonic1024
Ausserdem fänd ich es nett wenn das Bitmap in die exe kompiliert würde. Für custom-zwecke (falls das deine Absicht war) könntest du ein alternatives Bitmap per Menü laden.

mh..., eine gute Idee. Ich werd's mir überlegen. Danke :)

@Christian18:
Danke für die Bugreports. Ich werde die Bugs natürlich gleich mal fixen :D
btw: 49 Sekunden sind doch schon echt gut ^^

@ xZise:
Oh, ok, das TButton bei findcomponent hab ich wohl vergessen zu ändern, denn vor den Images hab ich alles mit Buttons gemacht. Danke für den Hinweis.
Das mit der TImage Nachfahrenklasse werde ich mir überlegen, an sich ist die Idee echt gut.
Dass man mit einem Klick alle nachfolgenden Teile verschieben kann, hab ich mir auch schon überlegt. Kommt auf jedenfall noch rein :D

DerAndereMicha 22. Dez 2009 08:21

Re: 15-Puzzle
 
Hallo,

tolles Spiel, ich bin schon sehr lange Fan.

Um so mehr hab ich mich gefreut, daß es auch endlich mal ne Delphi-Version davon gibt - und dazu macht Sie auch noch nen guten Eindruck. Klasse !

Das einzige, was ich noch beheben würde, sind die Speicher-Leaks. Schreib doch einfach mal

Delphi-Quellcode:
 pic_field.Free;
 pieces.Free;
ins OnDestroy-Ereignis Deiner Main-Form ;-)

Gruß
Micha

kingsusu 27. Dez 2009 23:14

Re: 15-Puzzle
 
- cool! :thumb:

Wie hast du so ein cooles Design hinbekommen?

ChEeTaH 7. Jan 2010 09:34

Re: 15-Puzzle
 
Zuerst mal ein dickes Lob^^ Das Spiel ist echt der "Minutentotschlager" wenn man z.B. gleich los muss, aber noch n paar Minuten Zeit hat und nicht weiß was man derzeit tun soll^^

Könntest du mal ein Video machen, wie du das Puzzle löst? würde mich schonmal interessieren, wie schnell du bist^^. Immo bin ich immer bei 200-300 Sekunden. Den Vorschlag, einen Online-Highcore einzurichten würde ich auch begrüßen :). Gibt es eigntl iwelche Tricks, um am schnellsten zum Ziel zu gelangen? So in der Art geheime Kombos oder so :D

himitsu 7. Jan 2010 09:49

Re: 15-Puzzle
 
Nachdem ich die Pfeiltasten vertauscht hab (Pfeilrichtung = Bewegungsrichtung des Freifeldes),
hab ich grad mal 118s benötigt, aber ich hab mich unten auch etwas verlaufen/verschoben, als ich wo ich dann nur noch eine Zahl verschieben mußte :oops:

Code:
1  2  3  4
5  6  7  8
9 10 11 12
  14 15 [color=#ff0000]13[/color]

DerAndereMicha 7. Jan 2010 11:03

Re: 15-Puzzle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab den Rekord gebrochen. 5 Sekunden !!! Kein Witz. War bisher immer so bei 20 Sekunden.

Muß allerdings zugeben, daß die 1. und 2.Zeile nach dem Start schon fertig sortiert waren. Zufall sei Dank :-)

Gruß
Micha

markus5766h 7. Jan 2010 13:46

Re: 15-Puzzle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

@False Pretense : schöne Spielerei (für die kleine Pause zwischendurch ...)

falls Du ein paar andere fields gebrauchen kannst, hab' welche in den Anhang gepackt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz