Code funzt nicht bei Mausdruck (wohnungseinrichter)

Previous topic - Next topic

Metamorphose

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.

Code (glbasic) Select

// --------------------------------- //
// 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]
lalagames - www.metamo.ch/lalagames/
Keine K?nstler Online - www.keinekuenstler.ch
M?rchenwelt PNP-RPG - www.metamo.ch/maerchenwelt