Problem mit menen Programm - Schiebepuzzle

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Hansy

Betreff: Problem mit menen Programm - Schiebepuzzle

BeitragDi, März 06, 2007 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, März 06, 2007 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Schiebepuzzle hatte doch immer ein Feld frei, in das man andere Puzzleteile reinschieben konnte Confused
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Hansy

BeitragMi, März 07, 2007 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
In diesem Programm ist das aber nicht nötig, da wir ja gleich die beiden Bilde die nebeneinander sind miteinander vertauschen können.

SpionAtom

BeitragMi, März 07, 2007 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 10, 2007 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ok gut Smile Das mit dem übereinanderliegenden Feldern habe ich hinbekommen. Aber ich kriege das mit dem Tauschen nicht hin Sad

Gameprogman

BeitragSa, März 10, 2007 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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 !

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group