Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Fly Swatter Mini Game
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
andrew.




PostPosted: Sun May 11, 2008 10:27 am   Post subject: Fly Swatter Mini Game

Hi guys,

I'm having a bit of trouble with my fly swatter mini game. I have the code (which I will clean up, refine, and make it prettier later) but I just can't figure out how kep the the glass looking like it is cracked. Look at my code, you'll see that when you click somewhere, it draws a crack, but I can't think of anyway to keep the crack there. Any help?

Turing:
setscreen ("graphics:800,600,offscreenonly,nobuttonbar")
var flyx, flyy, shoofly : array 1 .. 5 of int
var Colour : array 1 .. 5 of int := init (black, black, black, black, black)
var mousex, mousey, button : int
var flycounter, hitcount : int := 0
var crack1, crack2, crack3, crack : int
var cracknum : int := 1
var crackx, cracky : array 1 .. 21 of int
crackx (1) := 0
cracky (1) := 0
crack1 := Pic.FileNew ("crack1.jpg")
crack2 := Pic.FileNew ("crack2.jpg")
crack3 := Pic.FileNew ("crack3.jpg")
var fly : int := Pic.FileNew ("fly.jpg")
crack := 0
const flyspeed := 10

for i : 1 .. 5
    shoofly (i) := 1
end for
process splat
    Music.PlayFile ("splat.mp3")
end splat
process swat
    Music.PlayFile ("swat.mp3")
end swat

for i : 1 .. 5
    randint (flyx (i), 0, maxx)
    randint (flyy (i), 0, maxy)
end for
loop
    Mouse.Where (mousex, mousey, button)
    cls
    drawline (maxx div 2 - 250, 50, maxx div 2 + 150, maxy - 50, 30)
    drawline (maxx div 2 - 200, 50, maxx div 2 + 200, maxy - 50, 30)
    if button = 1 then
        fork splat
        crackx (cracknum) := mousex
        cracky (cracknum) := mousey
        randint (crack, 1, 3)
        % I want this picture to stay drawn.
        if crack = 1 then
            Pic.Draw (crack1, crackx (cracknum) - (Pic.Width (crack1)) div 2, cracky (cracknum) - (Pic.Height (crack1)) div 2, picMerge)
        elsif crack = 2 then
            Pic.Draw (crack2, crackx (cracknum) - (Pic.Width (crack2)) div 2, cracky (cracknum) - (Pic.Height (crack2)) div 2, picMerge)
        elsif crack = 3 then
            Pic.Draw (crack3, crackx (cracknum) - (Pic.Width (crack3)) div 2, cracky (cracknum) - (Pic.Height (crack3)) div 2, picMerge)
        end if
        cracknum += 1
        hitcount += 1
    end if
    for i : 1 .. 5
        Pic.Draw (fly, flyx (i), flyy (i), picMerge)
        flyx (i) += Rand.Int (-flyspeed, flyspeed)
        flyy (i) += Rand.Int (-flyspeed, flyspeed)
        if not shoofly (i) = 1 then
            if flyy (i) >= maxy then
                flyy (i) := maxy
            elsif flyy (i) <= 0 then
                flyy (i) := 0
            elsif flyx (i) >= maxx then
                flyx (i) := maxx
            elsif flyx (i) <= 0 then
                flyx (i) := 0
            end if
        end if
        if mousex > flyx (i) - 20 and mousex < flyx (i) + 20 and mousey > flyy (i) - 20 and mousey < flyy (i) + 20 and button = 1 then
            flycounter += 1
            flyx (i) := -1000
            shoofly (i) := 1
            fork swat
        end if
    end for
    delay (50)
    View.Update
    if flycounter = 5 then
        cls
        put "You win!"
        exit
        elsif hitcount = 20 then
        cls
        put "You lose. You broke the glass."
        exit
    end if
end loop


Thanks a lot,
andrew.
Sponsor
Sponsor
Sponsor
sponsor
Dan




PostPosted: Sun May 11, 2008 8:00 pm   Post subject: RE:Fly Swatter Mini Game

It's hard to debug the code with out the pictuers but my guses is that you are clearing the screen and it clears away the images of the cracks.

What you will have to do is keep track of the where the cracks are and redraw them all every loop. Or you could store a pic of the background befor anything is drawn above it in memeory and redraw that affter the screen is cleared.
Computer Science Canada Help with programming in C, C++, Java, PHP, Ruby, Turing, VB and more!
andrew.




PostPosted: Mon May 12, 2008 6:05 pm   Post subject: RE:Fly Swatter Mini Game

I've been trying to firgure out a way to have it remember where the cracks were. I'm pretty sure the code was right but the number stored in the array was turning into 0 each loop. Anyways, that's a good idea Dan, I'll just get the screen, draw the crack and save the screen. The only problem is the flies. It will save the flies too. Hmm....
andrew.




PostPosted: Mon May 12, 2008 6:17 pm   Post subject: RE:Fly Swatter Mini Game

Question: Can you draw the same picture more than once at a time? I got it to work, but now it replaces the old one with the new one.

EDIT:: Fixed it with a for loop.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 4 Posts ]
Jump to:   


Style:  
Search: