Italia
Giochi

Schiebe-Puzzle - OpenSource

 
- Page 1 -



Julian
Schmidt
Kleines aus Langeweile entstandenes Game.

Download
externer Download

698 kB
Kurzbeschreibung: mirror1
Hochgeladen:20.05.2012
Downloadcounter287
Download
 
XProfan X2
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
04.04.2012  
 



 
- Page 3 -



Julian
Schmidt
Jörg Sellmeyer (05.04.12)
Wie würdest du das Mischen spektakulärer machen.
Da brauchst Du einfach nur dreimal hintereinander nach dem Mischen die Einzelbilder Mostra und schon sieht es wie Mischen aus.


Du meinst das ich es dreimal mischen und Mostra soll. Und das dritte mal ist das finale Ergebnis!?

Jörg Sellmeyer (05.04.12)
Wieso. Wenn man es selbst löst, bekommt man ihn auch nicht angezeigt.
Darum geht es ja - es potuto eine Belohnung sein, wenn man es geschafft hat. Und naturalmente kennt man das Bild oder kann es sich Mostra lassen aber der Witz ist ja, dass man es sich erarbeiten soll.


Ich potuto auch Mostra wie viele Züge man gebraucht hat.
Wenn man auf lösen klickt hat man 0 Züge gebraucht. Wenn man es selber löst braucht man mehr als 0 Züge.

Jörg Sellmeyer (05.04.12)
Das Auflösen würde ich auch gerne Animieren. Allerdings weiß ich nicht wie ich ansätzen soll.
Das weiß ich leider auch nicht. Auf Wikipedia gibt's allgemeine Infos und einen Verweis zu einem selbst auflösenden Java-Puzzle:  [...] 
Google findet bestimmt Lösungswege...


Werde ich mir Morgen mal angucken. Vlt nützt es mir etwas.

Jörg Sellmeyer (05.04.12)
Hast Du denn mittlerweile herausgefunden, was den Fehler im compilati Programm auslöst?


Leider nein. Ich habe keine Idee woran es liegen potuto. Vlt potuto mal jemand hier aus dem Foro den Quelltext auf mögliche Gründe untersuchen.

Jörg Sellmeyer (05.04.12)
Achso: das Leerfeld sollte noch eine (vielleicht rote) Umrandung haben. Wenn man ein Bild mit viel schwarz hat, ist es mühsam zu finden.


Würde mir nicht so gut gefallen. Es würde das komplette Design verschandeln
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
06.04.2012  
 




Jörg
Sellmeyer

Du meinst das ich es dreimal mischen und Mostra soll. Und das dritte mal ist das finale Ergebnis!?


Genau


Werde ich mir Morgen mal angucken. Vlt nützt es mir etwas.


Ich glaub das ist nicht einfach. Vielleicht kann Frank Dir da Unterstützung zukommen lassen. Der hat mal 'ne Dll geschrieben, die "Wege findet".


Es würde das komplette Design verschandeln


Stimmt schon - aber: form follows function; falls Dir das was sagt.
Es reicht, wenn Du es, z.B. bei Drücken der Strg-Taste, kurz aufblinken lässt.


Vlt potuto mal jemand hier aus dem Foro den Quelltext auf mögliche Gründe untersuchen.


Ich schätze, solange Du den Code nicht etwas aufräumst, wirst Du Dir da wenig Hoffnung machen können...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 




Julian
Schmidt
Jörg Sellmeyer (06.04.12)
Du meinst das ich es dreimal mischen und Mostra soll. Und das dritte mal ist das finale Ergebnis!?
Genau


Ok, habe ich nun eingebaut.

Jörg Sellmeyer (06.04.12)
Werde ich mir Morgen mal angucken. Vlt nützt es mir etwas.
Ich glaub das ist nicht einfach. Vielleicht kann Frank Dir da Unterstützung zukommen lassen. Der hat mal 'ne Dll geschrieben, die "Wege findet".


Hab ich mir gerade durchgelesen. Auf der Wikipedia-Seite steht nicht wie man einen Lösungsweg berechnen kann. Nur wie man ermitteln kann ob ein Puzzle eine Lösung besitzt oder nicht. Das ist allerdings auch nur auf ein 15-Teile Puzzle beschränkt. Bei mir gibts Puzzle mit der Dimensione von 9, 15, 25, 36,49 und mehr Teilen.
Mir würde ein Lösungsansatz schon reichen. Ich habe keinen blassen Schimmer wie man das effektiv lösen potuto. Die einzige (uneffektive) Lösung die mir einfiele wäre einfach mit Zufall zuarbeiten. Würde naturalmente Ewigkeiten dauern...

Jörg Sellmeyer (06.04.12)
Es würde das komplette Design verschandeln
Stimmt schon - aber: form follows function; falls Dir das was sagt.
Es reicht, wenn Du es, z.B. bei Drücken der Strg-Taste, kurz aufblinken lässt.


hmmmmm....ich steh gerade ein bisschen auf dem Schlau
Wie meinst du das?

Jörg Sellmeyer (06.04.12)
Vlt potuto mal jemand hier aus dem Foro den Quelltext auf mögliche Gründe untersuchen.
Ich schätze, solange Du den Code nicht etwas aufräumst, wirst Du Dir da wenig Hoffnung machen können...


Was meinst du mit aufräumen? Ist er den nicht aufgeräumt?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
06.04.2012  
 




Jörg
Sellmeyer


Ich hab's ja schon geschrieben: Ähnliche Abläufe in Prozeduren packen, die entsprechende Parameter aufnehmen können.
Außerdem: selbsterklärende Variablennamen, eine Formatierung, die augenfreundlicher ist, insgesamt mehr mit Prozeduren arbeiten, damit der Code besser strukturiert ist...


hmmmmm....ich steh gerade ein bisschen auf dem Schlau
Wie meinst du das?


Wenn man die Strg-Taste drück, soll kurz ein Rahmen um das Leerfeld aufblinken.


Das ist allerdings auch nur auf ein 15-Teile Puzzle beschränkt.


Die Kontrolle funktioniert mit einer beliebigen Anzahl von Teilen.
Wie gesagt: zum Lösungsweg weiß ich auch nichts. Ich hab da auch noch nichts gefunden (,was ich verstehe ).
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 



@Julian:

Es ist eigentlich ganz einfach nur lösbare Puzzel zu mischen indem Du gleich nur so

Zug-um-Zug mischst wie auch zurückgespielt werden potuto.

Übrigens weist Du dann auch mit wie vielen Zügen das Spiel auf jeden Fall zu lösen ist

und kannst Mostra: Noch N Züge... oder sowas wie: "Juhu, Du hast einen noch

kürzeren Lösungsweg gefunden als der Mischweg Züge mischte!".

Diese ganzen Grafikfehler würde ich damit beheben indem das Bild schlicht im Speicher

(MCLS) erzeugt wird und nur immer jedes neue Frame auf das hWnd kopiert.

So kannst Du auch das Fenster größenskalierbar ermöglichen und mit mCopySizedBmp

immer auf die gesamte Fenstergröße ausgeben.
 
06.04.2012  
 




Jörg
Sellmeyer

Es ist eigentlich ganz einfach nur lösbare Puzzel zu mischen indem Du gleich nur so Zug-um-Zug mischst wie auch zurückgespielt werden potuto.


Das wäre auch mein nächster Vorschlag gewesen. Das nützt allerdings nichts, wenn der Spieler sich selber in un andere Situation gebracht hat.
Jetzt potuto man zwar alle Züge mitprotokollieren und dann die Lösung abrufen. das wäre aber etwas lahm. Es geht ja um einen Lösungsweg aus jeder Situation.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 




Jörg
Sellmeyer
Ich hab mal quasi das Gegenteil programmiert:
Proc QuadratKoordinaten

    Parameters a%,b%' das sind die virtuellen Koordinaten der Quadrate (also 1,1 oder 0,2)
    Declare Wert$

    If Between(%mousex,a% * Breite%,(a% + 1) * Breite%, %mousey, b% * Hoehe%,  (b% + 1) * Hoehe%)

        'hier werden die tatsächlichen X/Y-Koordinaten ermittelt
        Wert$ = Str$(%mousex \ Breite% * Breite%) + " " + Str$(%mousey \ Hoehe% * Hoehe%)

    EndIf

    Return Wert$

EndProc

Proc MouseAbfrage

    WhileLoop 0,Anzahl%-1

        WhileLoop 0,Anzahl%-1

            Test$ = QuadratKoordinaten(&Loop,l%)

            If Test$ > " "

                x% = Val(SubStr$(Test$,1," "))
                y% = Val(SubStr$(Test$,2," "))
                Break

            EndIf

            Test$ = " "

        Wend

        Case Test$ > " ":Break
        Inc l%

    Wend

    Clear l%
    'WindowTitle Test$ ' zur Kontrolle werden die X/Y-Koordinaten in der Titelleiste gezeigt

EndProc

Proc Bewegen

    Parameters x1%,y1%
    'innerhalb des Fensters bleiben

    If ((x1% > -1) And (y1% > -1)) And (((x1% + Breite%) <= Width(%hwnd)) And ((y1% + Hoehe%) <= Height(%hwnd)))

        SetWindowPos hAnzeige&,x1%,y1%
        x% = x1%
        y% = y1%
        x_alt% = x1%
        y_alt% = y1%

    EndIf

EndProc

Randomize
WindowStyle 2 | 8 | 16' | 512
Window 100,100 - 806,600 + %cyCaption + 6' Fenster kann man auch beliebig einstellen
Declare l%,Test$,x%,y%,x_alt%,y_alt%,Breite%,Hoehe%,Anzahl%
Declare i1%,i2%
Anzahl% = 4' hier kann man die Anzahl der Felder einstellen. Anzahl% = 4 ergibt 16 Felder
Breite% = (Width(%hwnd) / Anzahl%,0)
Hoehe% = (Height(%hwnd) / Anzahl%,0)
SetWindowPos %hwnd = %winleft,%wintop - (Anzahl% * Breite% + 6),(Anzahl% * Hoehe% + %cyCaption + 6)' Rundungsfehler ausgleichen
x_alt% = Rnd(Anzahl%) * Breite%
y_alt% = Rnd(Anzahl%) * Hoehe%
Var hPic& = Create("hNewPic",Breite%,Hoehe%,$0F00FF)
Var hAnzeige& = Create("Bitmap",%hwnd,hPic&,x_alt%,y_alt%)

While 1

    WaitInput
    Locate 1,1
    Case %Mousepressed = 1:MouseAbfrage()

    If %key = 2

        Break

    ElseIf Test$ > " "

        i1% = Abs(x_alt% - x%)' <= 100
        i2% = Abs(y_alt% - y%)' <= 100

        If ((i1% + i2%) = Breite%) | ((i1% + i2%) = Hoehe%)

            SetWindowPos hAnzeige&,x%,y%
            x_alt% = x%
            y_alt% = y%

        EndIf

        Test$ = " "

    ElseIf IsKey(37)

        Bewegen(x_alt% - Breite%,y_alt%)

    ElseIf IsKey(38)

        Bewegen(x_alt%,y_alt% - Hoehe%)

    ElseIf IsKey(39)

        Bewegen(x_alt% + Breite%,y_alt%)

    ElseIf IsKey(40)

        Bewegen(x_alt%,y_alt% + Hoehe%)

    EndIf

Wend


Hier wird ein Rechteck auf einer freien Fläche bewegt. Man muß im Prinzip nur noch eine Kollisionsabfrage einbauen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 



Wenn von vornherein ein Lösungsweg nicht ausgeschlossen ist dann sollte doch

eine Lösung immer mit Durchrotieren zu ermitteln sein.
 
06.04.2012  
 




Jörg
Sellmeyer
Das wäre dann Brute Force.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 




Julian
Schmidt
Jörg Sellmeyer (06.04.12)
Ich hab's ja schon geschrieben: Ähnliche Abläufe in Prozeduren packen, die entsprechende Parameter aufnehmen können.
Außerdem: selbsterklärende Variablennamen, eine Formatierung, die augenfreundlicher ist, insgesamt mehr mit Prozeduren arbeiten, damit der Code besser strukturiert ist...


hmmmm....viel Arbeit, wenn man es im Nachhinein macht. Da weiß man gar nicht wo man anfangen soll.

Jörg Sellmeyer (06.04.12)
Wenn man die Strg-Taste drück, soll kurz ein Rahmen um das Leerfeld aufblinken.


Erledigt.

iF (06.04.12)
Wenn von vornherein ein Lösungsweg nicht ausgeschlossen ist dann sollte doch
eine Lösung immer mit Durchrotieren zu ermitteln sein.


Vlt sollte ich mich erst daran machen nur lösbare Puzzles zu erstellen. Sonst wäre ein Algorithmus der es löst nicht immer zweckdienlich.
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
06.04.2012  
 




Jörg
Sellmeyer

Da weiß man gar nicht wo man anfangen soll.


Siehst Du - und das wolltest Du uns zumuten...
Schau Dir mal meinen Code an. Da wirst Du sicher was von gebrauchen können.

Z.B. erstellst Du hier immer wieder neue Bilder:
whileloop 1,part_x&,If((part_x& Mod 2)=0,2,1)

    space&=Create("hNewPic", &loop, part_y&, Back_Color())
    DrawPic space&, ((spalte_&-1)*part_x&), (zeile_&-1)*part_y&; 0
    DrawPic pic_part&[i_&], ((spalte_&-1)*part_x&)+&loop, (zeile_&-1)*part_y&; 0
    DeleteObject space&

EndWhile


Wenn Du stattdessen ein Bitmapcontrol erstellst, kannst Du das nach Belieben auf dem Fenster herumschieben.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.04.2012  
 




Julian
Schmidt
Jörg Sellmeyer (06.04.12)
Z.B. erstellst Du hier immer wieder neue Bilder:
whileloop 1,part_x&,If((part_x& Mod 2)=0,2,1)

    space&=Create("hNewPic", &loop, part_y&, Back_Color())
    DrawPic space&, ((spalte_&-1)*part_x&), (zeile_&-1)*part_y&; 0
    DrawPic pic_part&, ((spalte_&-1)*part_x&)+&loop, (zeile_&-1)*part_y&; 0
    DeleteObject space&

EndWhile




Eig. erstelle ich nicht immer neue Bild. Ich male sie nur auf das Fenster.
Per Create("hNewPic",...) (siehe oben) erstelle ich nur einen schwarzen Streifen. Statt dessen potuto ich auch den Befehl Line oder Rectangle gebrauchen.
Nachtrag: Durch Rectangle ersetzt!

Jörg Sellmeyer (06.04.12)
Wenn Du stattdessen ein Bitmapcontrol erstellst, kannst Du das nach Belieben auf dem Fenster herumschieben.


Ich sehe den Vorteil darin nicht. Ich bräuchte zusätzlich zu den Bildern noch jeweils ein Bitmapcontrol. Ich hätte also die doppelte Anzahl an Controls. Und Windows müsste mehr Speicher und CPU aufopfern!?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
06.04.2012  
 




Zum Spiel


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

111.457 Views

Untitledvor 0 min.
H.Brill02.05.2023
Sven Bader14.07.2021
Michael Klumb18.04.2016
Julian Schmidt07.01.2016
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie