Problem mit menen Programm - Schiebepuzzle
Übersicht

HansyBetreff: Problem mit menen Programm - Schiebepuzzle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Ich arbeite gerade an einem Schiebepuzzle und hatte bis jetzt bei der Programmierung keine Probleme. Jetzt jedoch ist ein kleine Frage aufgetaucht. Wie bekomme ich das jetzt hin, dass die beiden Bilder die zwischen den den Cursor liegen bzw einen grünen Rahmen haben ausgetausche wegen können. Außerdem kriege ich das mit dem Rahmen Senkrecht nicht ganz hin. Ich offe ich durchblick meinen Code und könnt mir bei den zwei Fragen helfen: Code: [AUSKLAPPEN] ; Schiebepuzzel Dim Stuecke(48) Dim Feld(8,6) SeedRnd MilliSecs() Graphics 800,600,32,1 Color 255,0,0 fontvariabel=LoadFont("Creepygirl",72,0,0,10) SetFont fontvariabel fontvariabel1=LoadFont("Arial",36,10,0,0) Text 300,0,"Schiebepuzzle" Color 100,100,100 Rect 70,50,660,500 Foto= LoadImage("f:RIMG0307.JPG") DrawImage Foto,80,60 Maus = LoadImage("f:Mauszeiger_02.bmp") MaskImage Foto,255,0,255 Color 255,255,255 For y=60 To 580 Step 80 Line 80,y,720,y Next For x=80 To 740 Step 80 Line x,60,x,540 Next For nr=1 To 48 x=((nr-1)Mod 8)*80+80 y=((nr-1)/8)*80+60 Stuecke(nr)=CreateImage(80,80) GrabImage Stuecke(nr),x,y a=((nr-1)Mod 8) + 1 b=((nr-1)/8) + 1 feld(a,b)=nr DrawImage Stuecke(feld(a,b)),x,y Next WaitKey For z=1 To 200 w=Rnd(1,6) q=Rnd(1,7) speicher=feld(q,w) feld(q,w)=feld(q+1,w) feld(q+1,w)=speicher ;Dreieckstausch - Senkrecht w=Rnd(1,5) q=Rnd(1,8) speicher=feld(q,w) feld(q,w)=feld(q,w+1) feld(q,w+1)=speicher Next SetBuffer BackBuffer() SetFont fontvariabel1 Repeat Cls Color 100,100,100 Rect 70,50,660,500 Color 255,255,255 Rect 80,60,641,481 For nr=1 To 48 x=((nr-1)Mod 8)*80+80 y=((nr-1)/8)*80+60 a=((nr-1)Mod 8) + 1 b=((nr-1)/8) + 1 DrawImage Stuecke(feld(a,b)),x,y Next mausx=MouseX() mausy=MouseY() If mausx > 690 Then mausx=690 If Mausx < 90 Then mausx=90 If MouseY() > 510 Then mausy=510 If MouseY() < 61 Then mausy=61 If (mausx+10) Mod 80<20 Color 0,255,0 maux=80*((mausx+10)/80) mauy=(80*((mausy+20)/80)-20) Rect maux-1,mauy,3,80 Line maux+80,mauy,maux-80,mauy Line maux+80,mauy+80,maux-80,mauy+80 Line maux+80,mauy+80,maux+80,mauy Line maux-80,mauy+80,maux-80,mauy Else Color 255,0,0 EndIf Text 285,5,"Schiebepuzzle" Text 10,5,Mausy DrawImage Maus, Mausx, Mausy Flip Until MouseHit(2) End |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Schiebepuzzle hatte doch immer ein Feld frei, in das man andere Puzzleteile reinschieben konnte ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Hansy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In diesem Programm ist das aber nicht nötig, da wir ja gleich die beiden Bilde die nebeneinander sind miteinander vertauschen können. | ||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann hat das ganze aber nichts mehr mit Schieben zu tun - egal.
Mit der Maus errechnest du ja die Koordinaten für die grünen Rahmen maux und mauy. dadurch hast du auch die beiden Feld()-Indizes. Man Vertauscht 2 Variableninhalte von A und B folgendermaßen: A = 56 B = 22 C = A A = B B = C Danach sollte B = 56 sein und A = 22. Und die Abfrage mit den übereinanderliegenden Feldern sollte doch genauso gehen wie die nebeneinanderliegenden Felder, nur dass du die x und y Koordinaten etwas umtauschst. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Hansy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok gut ![]() ![]() |
||
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir deinen Code jetzt nicht angeschaut, aber ich gehe davon aus dass man beide anklickt und die dann ausgetauscht werden sollten oder?
dann ermittelst du die X und Y Koordinaten der maus beim 1. Mausklick und speicherst sie in mx1 und my1 (zum beispiel). Beim 2. Mausklick wieder die X und Y Koordinaten ermiteln und z.B in mx2 und my2 abspeichern. und malst du einfach das erste Bild auf die Koordinaten mx2 und my2 und das zweite auf mx1 und my1.[/code] |
||
www.bandradr.de ! Awesome ! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group