
-----------------------------------
skatelhs
Thu May 22, 2003 9:59 pm

Simple Crosshair Movement- Help Needed
-----------------------------------
so, im making a game ( :shock: ) for compsci class, grade 10, final evaluation.
Im doin somethin like that arcade game(like the ones in arcades), where you step on that thing and your character pops up, and you shoot.  I'm not doin any poppin up actually, just people stop shooting you when you put your gun away.  I'm not really too far along, I am just in the process of making the crosshair and noises.  Heres the code I've got so far...
var x, y, button : int
loop
    Mouse.Where (x, y, button)
    %CROSSHAIR
    locatexy (maxx div 2, maxy div 2)
    %Making "Out of Bounds" Area for crosshair
    if y > 390 then
        y := 390
    elsif
            y < 10 then
        y := 10
    end if
    if x > maxx then
        x := maxx
    elsif
            x < 10 then
        x := 10
    end if
    %Triple-Thick Horizontal Line
    drawline (x - 30, y, x + 30, y, black)
    drawline (x - 30, y - 1, x + 30, y - 1, black)
    drawline (x - 30, y + 1, x + 30, y - 1, black)
    %Triple-Thick Vertical Line
    drawline (x, y - 30, x, y + 30, black)
    drawline (x - 1, y - 30, x - 1, y + 30, black)
    drawline (x + 1, y - 30, x + 1, y + 30, black)
    %Clearing Screen of Crosshair
    cls
    %Button-Click "Shooting"
    if button = 1 then
    %Gun Sound
        sound (20000, 20)
        sound (2000, 20)
        sound (1000, 20)
        sound (200, 20)
        locatexy (maxx div 2, maxy div 2)
    %Weird Laser Spirals    
        drawoval (x, y, 4, 4, red)
        delay (10)
        cls
        drawoval (x, y, 8, 8, red)
        delay (10)
        cls
        drawoval (x, y, 12, 12, red)
        delay (10)
        cls
        drawoval (x, y, 18, 18, red)
        delay (10)
        cls
    end if
    %Press X to draw your weapon
    var chars : array char of boolean 
        loop 
            Input.KeyDown (chars) 
            if chars (KEY_ENTER) then
            exit 
          end if
end loop
end loop

I had a few questions about it:
1) how do i get the loop to look un-crappy? Its so friggin sketchy you can barely see it.
2) does anyone have any suggestions on stuff that will make it better?
3) Whats with that last part:
var chars : array char of boolean 
        loop 
            Input.KeyDown (chars) 
            if chars (KEY_ENTER) then
            exit 
          end if
end loop
If i leave out the 
"Then
Exit"
part it doesnt ever take the "weapon" out, when i'm actually trying to make the program close when i press it? Also, how do i make it exit, say, when the key "x" is pressed, and weapon comes out when key "enter" is pressed (pretty much already like that, just dont understand how i got there)
any help would be much appreciated!
adam

-----------------------------------
Blade
Fri May 23, 2003 7:53 am


-----------------------------------
ok. to make the weapon stay you you have to hold the enter key for now. so make a boolean variable to check to see whether its true (out) or false (holstered). make the loop look somethin like this
var holster : boolean := false
%Press X to draw your weapon
var chars : array char of boolean
if holster = false then
    loop
        Input.KeyDown (chars)
        if chars (KEY_ENTER) then
            exit
            holster := true
        end if
    end loop
elsif holster = true then
    loop
        Input.KeyDown (chars)
        if chars (KEY_ENTER) then
            exit
            holster := false
        end if
    end loop
end if
this is just saying if holster is false it wont ask to draw your weapon. but if its true then you can press enter to draw it. but if its true then press enter to holster it.
to get rid of the crappy flashy if you are using version 4 of turing then you can use in your setscreen or View.Set "offscreenonly"
ex: View.Set("offscreenonly") and View.Update to update your graphics to the screen.

-----------------------------------
skatelhs
Fri May 23, 2003 8:10 am


-----------------------------------
I have no clue, whats this offscreenonly and viewupdate stuff?

-----------------------------------
skatelhs
Fri May 23, 2003 8:15 am


-----------------------------------
also im getting some problems with yours, the "holster" in "holster := true and holster:=false, is highlighted and it says it wont be executed

-----------------------------------
Homer_simpson
Fri May 23, 2003 2:10 pm


-----------------------------------
this solves the crappy loop problem
View.Set ("offscreenonly")
var x, y, button : int := 0
loop
    drawfillbox (x - 15, y - 1, x + 15, y + 1, white)
    drawfillbox (x - 1, y - 15, x + 1, y + 15, white)
    Mouse.Where (x, y, button)
    if button not= 0 then
        %shooting
        drawfillbox (x - 15, y - 1, x + 15, y + 1, 12)
        drawfillbox (x - 1, y - 15, x + 1, y + 15, 12)
        View.Update
        delay (10)
    else
        %notshooting
        drawfillbox (x - 15, y - 1, x + 15, y + 1, 9)
        drawfillbox (x - 1, y - 15, x + 1, y + 15, 9)
        View.Update
        delay (10)
    end if
end loop

i'll help u with the holster thing when i get home

-----------------------------------
Blade
Fri May 23, 2003 2:44 pm


-----------------------------------
yeah. i used yer's and added in the holster. i used getch because in this case Input.KeyDown was way too fast. you push the button and it goes off and on and off and on again. lol. it ran really slowly on my comp. maybe thats just cuz its a lil screwed and needs a reformat cuz i did something to it i wasn't supossed to ;) but here ya go.
View.Set ("offscreenonly")
var holster : boolean := false
var chars : string (1)
var x, y, button : int := 0
loop
    if hasch then
        getch (chars)
        if ord (chars) = 10 & holster = false then
            holster := true
        elsif ord (chars) = 10 & holster = true then
            holster := false
        end if
    end if
    if holster = false then
        Mouse.Where (x, y, button)
        if button not= 0 then
            %shooting
            drawfillbox (x - 15, y - 1, x + 15, y + 1, 12)
            drawfillbox (x - 1, y - 15, x + 1, y + 15, 12)
        else
            %notshooting
            drawfillbox (x - 15, y - 1, x + 15, y + 1, 9)
            drawfillbox (x - 1, y - 15, x + 1, y + 15, 9)
        end if
    end if
    View.Update
    cls
end loop
