Tag.
Wollte für mich und meine Freundin ein Programm schreiben, bei dem wir die nächste Wohnung einrichten können. der grundplan der wohnung wird gezeigt, mit der maus werden die objekte platziert, mit linksklick das objekt platziert und mit rechtsklick das objekt gedreht (ein anderes gedrehtes png angezeigt).
Habe eine Funktion hier aus dem Forum genommen, die ich mal bekommen hab um den Mausklick zu präzisieren. Jetzt beim klicken von objekt 1 (ein bett), platziert es objekt 1 und 2 (tv) und beendet das programm.
müsste eigentlich objekt 1 platzieren (klick) und objekt 2 danach platzieren lassen (bis klick) und dann beenden.
hier mal der code. noch kurz zur erklärung:
obj: das objekt, also 1 für bett, 2 für tv
obj1x, obj1y: die variable, bei der die mausx und y gespeichert wird bei klick und das objekt dementsprechend in der schlaufe platziert wird
objor1, objor2: die ausrichtung des objektes. bei einem rechtklick gehts zu einem anderem sprite das gedreht ist.
dazu noch ein screenie vom programm, wenns läuft. rechts werden immer die kommenden möbelstücke gezeigt.
// --------------------------------- //
// Project: wohnung prog
// Start: Sunday, December 11, 2011
// IDE Version: 10.118
GLOBAL obj, objor1, objor2, obj1x, obj1y, obj2x, obj2y
// DIM obj[2][4]
LOADSPRITE "media/plan.png", 0
LOADSPRITE "media/bett-1.jpg", 1 //bett
LOADSPRITE "media/bett-2.jpg", 2
LOADSPRITE "media/bett-3.jpg", 3
LOADSPRITE "media/bett-4.jpg", 4
LOADSPRITE "media/tv-1.jpg", 5 //tv
LOADSPRITE "media/tv-2.jpg", 6
obj=1
objor1=1
objor2=5
obj1x=700
obj1y=50
obj2x=700
obj2y=150
WHILE obj <= 3
MOUSESTATE mx, my, a, b // mauskoordinaten
DRAWSPRITE 0, 0, 0 //hgbild der plan
IF obj=1 //bett
DRAWSPRITE objor1, mx, my
IF MouseHit(b,1) = 1 AND objor1 = 1 AND obj=1 THEN objor1=2
IF MouseHit(b,1) = 1 AND objor1 = 2 AND obj=1 THEN objor1=3
IF MouseHit(b,1) = 1 AND objor1 = 3 AND obj=1 THEN objor1=4
IF MouseHit(b,1) = 1 AND objor1 = 4 AND obj=1 THEN objor1=1
IF MouseHit(a,1) = 1 AND obj = 1
obj1x=mx
obj1y=my
obj=2
ENDIF
ENDIF
IF obj=2 //tv
DRAWSPRITE objor2, mx, my
IF MouseHit(b,1) = 1 AND objor2 = 5 AND obj=2 THEN objor2=6
IF MouseHit(b,1) = 1 AND objor2 = 6 AND obj=2 THEN objor2=5
IF MouseHit(a,1) = 1 AND obj = 2
obj2x=mx
obj2y=my
obj=3
ENDIF
ENDIF
DRAWSPRITE objor1, obj1x, obj1y
DRAWSPRITE objor2, obj2x, obj2y
SHOWSCREEN
WEND
FUNCTION KeyHitUpdate:
GLOBAL gKeyDown[], gKeyState[]
LOCAL k
LOCAL i
STATIC a
// First Time call/ zum ersten Mal hier
//IF BOUNDS(gKeyDown[],0)=0
IF a = 0
DIM gKeyDown[256]
DIM gKeyState[256]
a =1
ENDIF
// For each key / für jede Taste
FOR i=0 TO 255
k = KEY(i)
// Key is pressed / Taste ist gedrückt
IF k
IF gKeyDown[i]
gKeyState[i]=1
ELSE
gKeyDown[i]=1
gKeyState[i]=2
ENDIF
ELSE
// Key is not pressed / Taste nicht gedrückt
// Has key been pressed before?
// War die Taste gedrückt?
IF gKeyDown[i]
gKeyDown[i] = 0
gKeyState[i] = -1
ELSE
gKeyState[i]=0
ENDIF
ENDIF
NEXT
ENDFUNCTION
// 0 = not pressed / nicht gedrückt
// 2 = just pressed / gerade runtergedrückt
// 1 = pressed / gedrückt (gehalten)
// -1 = release event / wieder losgelassen
FUNCTION KeyHit: nkey
RETURN gKeyState[nkey]
ENDFUNCTION
// bt% = Mousebutton,
// l_mbutton = standart linke mousetaste
// es können gesammt 7 Tasten abgefragt werden
// l_mbutton = 0 sollte aber reserviert bleiben
FUNCTION MouseHit% : bt%, l_mbutton% = 1
STATIC s_k AS T_mousehit
IF bt = TRUE AND s_k.s_check[l_mbutton] = TRUE AND s_k.s_done[l_mbutton] = 1
s_k.s_done[l_mbutton] = 2
ENDIF
IF bt = TRUE AND s_k.s_check[l_mbutton] = FALSE AND s_k.s_done[l_mbutton] = 0
s_k.s_done[l_mbutton] = 1
s_k.s_check[l_mbutton] = TRUE
// ELSE
// s_k.s_done[l_mbutton] = 0
ENDIF
// IF bt = FALSE AND s_k.s_check[l_mbutton] = TRUE AND s_k.s_done[l_mbutton] = 2
// s_k.s_done[l_mbutton] = 3
// s_k.s_check[l_mbutton] = FALSE
//
// ENDIF
IF bt = FALSE AND s_k.s_check[l_mbutton] = TRUE //AND s_k.s_done[l_mbutton] = 3
s_k.s_done[l_mbutton] = 0
s_k.s_check[l_mbutton] = FALSE
ENDIF
RETURN s_k.s_done[l_mbutton]
ENDFUNCTION
TYPE T_mousehit
s_done%[6]
s_check%[6]
ENDTYPE
[attachment deleted by admin]