Computer Science Canada

mouseover

Author:  beedub [ Sat May 17, 2003 11:49 am ]
Post subject:  mouseover

hey all my.. mouseover only works for the first button... why is this? here is the code...
code:


%menu.t

var font1, font2, font3, font4, line : int
font1 := Font.New ("courier:10")
font2 := Font.New ("courier:10:bold")

%function mouseover
var mousex, mousey, mouseb,mousex1, mousey1, mouseb1,mousex2, mousey2, mouseb2,mousex3, mousey3, mouseb3 : int
function mouseover (x, y, x1, y1, x2, y2 : int) : boolean
    if x >= x1 and x <= x2 then
        if y >= y1 and y <= y2 then
            result true
        end if
    end if
    result false
end mouseover
% Back part of screen

drawfillbox (0, 0, 640, 400, 23)

% Part Underneath
drawfillbox (20, 110, 640, 150, 22)
drawbox (20, 110, 640, 150, 21)
var text : string
text := "SHOOTOUT"
var fontID : array 1 .. 32 of int

for i : 32 div 2 .. 32
    fontID (i) := Font.New ("courier:" + intstr (i))
end for

procedure Text3D (text : string)

    for t : 1 .. length (text)

        for i : 32 div 2 .. 32
            Font.Draw (text (t), t * 75, 120, fontID (i), 20 + floor (i / 32 * 10))
        end for

    end for

end Text3D

Text3D (text)


% Back part of menu


drawfillbox (260, 215, 380, 330, grey)
drawbox (260, 215, 380, 330, black)
drawfillbox (290, 350, 350, 330, grey)
drawbox (290, 350, 350, 330, black)
Font.Draw ("Menu", 300, 335, font2, black)

loop

    mousewhere (mousex, mousey, mouseb)
    if mouseover (mousex, mousey, 270, 300, 370, 320) then

        drawfillbox (270, 300, 370, 320, grey)
        drawbox (270, 300, 370, 320, black)
        Font.Draw ("Play game", 280, 308, font1, black)
    else
        drawfillbox (270, 300, 370, 320, 27)
        drawbox (270, 300, 370, 320, black)
        Font.Draw ("Play game", 280, 308, font1, black)
    end if


    %rules button
mousewhere (mousex1, mousey1, mouseb1)
    if mouseover (mousex1, mousey1, 270, 295, 370, 275) then
    drawfillbox (270, 295, 370, 275, grey)
    drawbox (270, 295, 370, 275, black)
    Font.Draw ("RULES", 289, 280, font1, black)
else
drawfillbox (270, 295, 370, 275, 27)
    drawbox (270, 295, 370, 275, black)
    Font.Draw ("RULES", 289, 280, font1, black)
end if
    %HIgh scores button
    mousewhere (mousex2, mousey2, mouseb2)
    if mouseover (mousex2, mousey2, 270, 270, 370, 250) then

    drawfillbox (270, 270, 370, 250, grey)
    drawbox (270, 270, 370, 250, black)
    Font.Draw ("High Scores", 282, 255, font1, black)
    else
      drawfillbox (270, 270, 370, 250, 27)
    drawbox (270, 270, 370, 250, black)
    Font.Draw ("High Scores", 282, 255, font1, black)
    end if
   

    %HIgh scores button
       mousewhere (mousex3, mousey3, mouseb3)
    if mouseover (mousex3, mousey3, 270, 245, 370, 225) then

    drawfillbox (270, 245, 370, 225, grey)
    drawbox (270, 245, 370, 225, black)
    Font.Draw ("EXIT", 290, 230, font1, black)
else
drawfillbox (270, 245, 370, 225, 27)
    drawbox (270, 245, 370, 225, black)
    Font.Draw ("EXIT", 290, 230, font1, black)
end if

end loop

also is there ne code to get rid of the detection lines?? (the little lines moving up and downt he buttons)

Author:  nate [ Sat May 17, 2003 3:23 pm ]
Post subject:  View.Update

1 thing which would spare anyone who is playing that games eyes would be to use (these are the so called detection lines! (but they actually aren't))

View.Set ("offscreenonly") put this right before you loop

then put right before the end loop

View.Update

as for not workin for any of the other boxes i am 2 lazy to figure it out

-Nate

Author:  Homer_simpson [ Sat May 17, 2003 4:30 pm ]
Post subject: 

the mouse over function needed alittle upgrade...
code:
%menu.t

var font1, font2, font3, font4, line : int
font1 := Font.New ("courier:10")
font2 := Font.New ("courier:10:bold")

%function mouseover
var mousex, mousey, mouseb, mousex1, mousey1, mouseb1, mousex2, mousey2, mouseb2, mousex3, mousey3, mouseb3 : int
function mouseover (x1, y1, x2, y2 : int) : boolean
    var x, y, b : int
    mousewhere (x, y, b)
    if (x >= x1 and x <= x2) or (x >= x2 and x <= x1) then
        if (y >= y1 and y <= y2) or (y >= y2 and y <= y1) then
            result true
        end if
    end if
    result false
end mouseover
% Back part of screen

drawfillbox (0, 0, 640, 400, 23)

% Part Underneath
drawfillbox (20, 110, 640, 150, 22)
drawbox (20, 110, 640, 150, 21)
var text : string
text := "SHOOTOUT"
var fontID : array 1 .. 32 of int

for i : 32 div 2 .. 32
    fontID (i) := Font.New ("courier:" + intstr (i))
end for

procedure Text3D (text : string)

    for t : 1 .. length (text)

        for i : 32 div 2 .. 32
            Font.Draw (text (t), t * 75, 120, fontID (i), 20 + floor (i / 32 * 10))
        end for

    end for

end Text3D

Text3D (text)


% Back part of menu


drawfillbox (260, 215, 380, 330, grey)
drawbox (260, 215, 380, 330, black)
drawfillbox (290, 350, 350, 330, grey)
drawbox (290, 350, 350, 330, black)
Font.Draw ("Menu", 300, 335, font2, black)

loop
    if mouseover ( 270, 300, 370, 320) then
        drawfillbox (270, 300, 370, 320, grey)
        drawbox (270, 300, 370, 320, black)
        Font.Draw ("Play game", 280, 308, font1, black)
    else
        drawfillbox (270, 300, 370, 320, 27)
        drawbox (270, 300, 370, 320, black)
        Font.Draw ("Play game", 280, 308, font1, black)
    end if
    if mouseover (270, 295, 370, 275) then
        drawfillbox (270, 295, 370, 275, grey)
        drawbox (270, 295, 370, 275, black)
        Font.Draw ("RULES", 289, 280, font1, black)
    else
        drawfillbox (270, 295, 370, 275, 27)
        drawbox (270, 295, 370, 275, black)
        Font.Draw ("RULES", 289, 280, font1, black)
    end if
    if mouseover (270, 270, 370, 250) then

        drawfillbox (270, 270, 370, 250, grey)
        drawbox (270, 270, 370, 250, black)
        Font.Draw ("High Scores", 282, 255, font1, black)
    else
        drawfillbox (270, 270, 370, 250, 27)
        drawbox (270, 270, 370, 250, black)
        Font.Draw ("High Scores", 282, 255, font1, black)
    end if
    if mouseover (270, 245, 370, 225) then

        drawfillbox (270, 245, 370, 225, grey)
        drawbox (270, 245, 370, 225, black)
        Font.Draw ("EXIT", 290, 230, font1, black)
    else
        drawfillbox (270, 245, 370, 225, 27)
        drawbox (270, 245, 370, 225, black)
        Font.Draw ("EXIT", 290, 230, font1, black)
    end if

end loop

Author:  Homer_simpson [ Sat May 17, 2003 4:32 pm ]
Post subject: 

add this to the beggining of the program
code:
View.Set("offscreenonly")

and add this before end loop
code:
   View.Update
   delay(5)

Author:  beedub [ Sat May 17, 2003 6:46 pm ]
Post subject: 

ty now it looks perfect..

Author:  beedub [ Sat May 17, 2003 7:36 pm ]
Post subject: 

one other thing... if i wanted to make them as buttons what would i do... whatdotcolor... mouse.where??I only ask this cuz when it changes color i dont really know what to do..

Author:  Tony [ Sat May 17, 2003 7:59 pm ]
Post subject: 

you shouldn't use what dot color, because that way you'd have to make all your objects different color Confused

just stick to math instead Wink

Author:  beedub [ Sat May 17, 2003 9:40 pm ]
Post subject: 

thats my porblem...since i am so young i havent been able to learn difficult math..the only way i can do it is with code.. or get some1 to help me with it... that is why i am here Wink

Author:  beedub [ Sun May 18, 2003 3:27 pm ]
Post subject: 

ne ideas?

Author:  Tony [ Sun May 18, 2003 4:49 pm ]
Post subject: 

i though you already got that mouseover procedure done?

Author:  void [ Sun May 18, 2003 7:39 pm ]
Post subject: 

can i suggest summin to u...USE GIU'S...ur menu isn't bad, but its kinda bad coz of the loop constantly refreshing itself...i'll c if i can make it betta...i'll post the finsished thingy soon...but yea...consider using a GUI..much easire...just create buttons and assigne procedures to them...

Author:  Tony [ Sun May 18, 2003 10:39 pm ]
Post subject: 

but so does GUI.. run in a loop I mean...

its not VB's on event programming, its still linear loop.

you know that loop GUI.ProcessEvent end loop thingy?

well basically its a shorter way of sticking everything in a loop. Ofcourse once you start processing your GUI, you cant do much more...

Author:  beedub [ Sun May 18, 2003 11:00 pm ]
Post subject: 

ya i know it... since this is my first actual good game.. i consider this like my tutorial game.. filled with flashing stuff...

Author:  void [ Mon May 19, 2003 12:07 pm ]
Post subject: 

too lazy to actualy make a good one for u..well..if u dun wanna have a GUI event...then do this..have a "switch" variable for each button...and if the button has the mouse over it, then the "switch" is tripped and the color changes, but when the mouse moves from the vicinity then the switch is off and the button is redraw..1 time...this will stop the refresh thingy u'v got going.....tony...i dunno..GUI's look much better coz it doesnt "refresh" as often....but wateva...ur the boss... Rolling Eyes

Author:  beedub [ Mon May 19, 2003 2:55 pm ]
Post subject: 

can u have mouseover GUIs?... and void what school you go to?

Author:  void [ Tue May 20, 2003 4:47 pm ]
Post subject: 

Waterloo Collegiate Insitute...and i've never experimented with mouseovers in GUI's...altho if you make a GUI menu (like the ones in word, they appear at the top and you click for the menu to drop down) it autmatically does highlight where the text is originally black, but when you highligh it it turns white with black color back.... Wink

Author:  beedub [ Tue May 20, 2003 5:33 pm ]
Post subject: 

cool you go to wci... thats cool... i go to sjk Sad private school... can you put a sample text of this gui?


: