Fly Swatter Mini Game
Author |
Message |
andrew.
|
Posted: 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
|
|
|
Dan
|
Posted: 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.
|
Posted: 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.
|
Posted: 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. |
|
|
|
|
|
|
|