var wallCreator : boolean := true
var ballTrapperBoolean : boolean := true
var barInterrupt : boolean := true
const RADIUS : int := 5
var NUM_BALLS : int := 1
var x, y, dx, dy : array 1 .. NUM_BALLS of int
var xLeadingEdge, yLeadingEdge : int
var clr1 : int := green
var clr2 : int := red
var barX, barY, button, left, middle, right : int
var lives : int := 3
var fontGameOver : int := Font.New ("Arial:80")
var barXStore1, barXStore2, barYStore1, barYStore2 : int
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives))
process ballTrapper
%Mouse Declaration
barInterrupt := true
ballTrapperBoolean := false %cant create new wall while previous one is being created
Mouse.ButtonChoose ("multibutton")
Mouse.Where (barX, barY, button)
left := button mod 10 % left = 0 or 1
middle := (button - left) mod 100 % middle = 0 or 10
right := button - middle - left % right = 0 or 100
%Left Click = Horizontal Bar
if left = 1 and barX >= maxx div 2 and whatdotcolour (barX, barY) not= blue then
for a : 1 .. barX
if whatdotcolour (barX + a, barY) = blue
then
barInterrupt := false
end if
if barInterrupt = true then
Draw.FillBox (barX + a, barY, barX, barY + 10, clr1)
Draw.FillBox (barX - a, barY, barX, barY + 10, clr2)
barXStore1 := barX + a
delay (1)
else
clr1 := blue
Draw.FillBox (barXStore1, barY, barX, barY + 10, clr1)
Draw.FillBox (barX - a, barY, barX, barY + 10, clr2)
delay (1)
end if
if barX + a = maxx %first end to reach the wall turns blue
then
clr1 := blue
end if
if barX - a = 1 and wallCreator = true %right before for loop ends
then
clr1 := blue
clr2 := blue %when the wall is complete, it will turn blue,
%indicating that the ball can collide with it
%without losing a life.
Draw.FillBox (barX + a, 0, barX, barY, clr1) %fills in the space below the ball
Draw.FillBox (barX - a - 1, 0, barX, barY, clr2) %fills in the space below the ball
end if
if wallCreator = false then %ball collided with green wall
Draw.FillBox (barX + a, barY, barX, barY + 10, white)
Draw.FillBox (barX - a, barY, barX, barY + 10, white)
lives := lives - 1 %lost life
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives))
exit
end if
end for
clr1 := green
clr2 := red %colour reset, next time a wall is created, it will be
%green, indicating that if the ball collides with it
%you will lose a life.
elsif left = 1 and barX < maxx div 2 and whatdotcolour (barX, barY) not= blue then
for a : 1 .. maxx - barX
if whatdotcolour (barX - a, barY) = blue
then
barInterrupt := false
end if
if barInterrupt = true then
Draw.FillBox (barX + a, barY, barX, barY + 10, clr1) %fills in the space below the ball
Draw.FillBox (barX - a, barY, barX, barY + 10, clr2) %fills in the space below the ball
barXStore2 := barX - a
delay (1)
else
clr2 := blue
Draw.FillBox (barX + a, barY, barX, barY + 10, clr1) %fills in the space below the ball
Draw.FillBox (barXStore2, barY, barX, barY + 10, clr2) %fills in the space below the ball
delay (1)
end if
if barX - a = 0 %first end to reach the wall turns blue
then
clr2 := blue
end if
if barX + a = maxx - 1 and wallCreator = true %right before for loop ends
then
clr1 := blue
clr2 := blue
%when the wall is complete, it will turn blue,
%indicating that the ball can collide with it
%without losing a life.
Draw.FillBox (barX + a + 1, 0, barX, barY, clr1) %fills in the space below the ball
Draw.FillBox (barX - a, 0, barX, barY, clr2) %fills in the space below the ball
end if
if wallCreator = false then %ball collided with green wall
Draw.FillBox (barX + a, barY, barX, barY + 10, white) %fills in the space below the ball
Draw.FillBox (barX - a, barY, barX, barY + 10, white) %fills in the space below the ball
lives := lives - 1 %lost life
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives))
exit
end if
end for
clr1 := green
clr2 := red %colour reset, next time a wall is created, it will be
%green, indicating that if the ball collides with it
%you will lose a life.
end if
%Right Click = Vertical Bar
if right = 100 and barY >= maxy div 2 and whatdotcolour (barX, barY) not= blue then
for a : 1 .. barY
if whatdotcolour (barX, barY + a) = blue
then
barInterrupt := false
end if
if barInterrupt = true then
Draw.FillBox (barX, barY + a, barX + 10, barY, clr1)
Draw.FillBox (barX, barY - a, barX + 10, barY, clr2)
barYStore1 := barY + a
delay (1)
else
clr1 := blue
Draw.FillBox (barX, barYStore1, barX + 10, barY, clr1)
Draw.FillBox (barX, barY - a, barX + 10, barY, clr2)
delay (1)
end if
if barY + a = maxy %first end to reach the wall turns blue
then
clr1 := blue
end if
if barY - a = 1 and wallCreator = true %right before for loop ends
then
clr1 := blue
clr2 := blue %when the wall is complete, it will turn blue,
%indicating that the ball can collide with it
%without losing a life.
Draw.FillBox (0, barY + a, barX, barY, clr1) %fills in the space to the side the ball
Draw.FillBox (0, barY - a - 1, barX, barY, clr2) %fills in the space to the side the ball
end if
if wallCreator = false then %ball collided with green wall
Draw.FillBox (barX, barY + a, barX + 10, barY, white)
Draw.FillBox (barX, barY - a, barX + 10, barY, white)
lives := lives - 1 %lost life
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives))
exit
end if
end for
clr1 := green
clr2 := red %colour reset, next time a wall is created, it will be
%green, indicating that if the ball collides with it
%you will lose a life.
elsif right = 100 and barY < maxy div 2 and whatdotcolour (barX, barY) not= blue then
for a : 1 .. maxy - barY
if whatdotcolour (barX, barY - a) = blue
then
barInterrupt := false
end if
if barInterrupt = true then
Draw.FillBox (barX, barY + a, barX + 10, barY, clr1)
Draw.FillBox (barX, barY - a, barX + 10, barY, clr2)
barYStore2 := barY - a
delay (1)
else
clr2 := blue
Draw.FillBox (barX, barY + a, barX + 10, barY, clr1)
Draw.FillBox (barX, barYStore2, barX + 10, barY, clr2)
delay (1)
end if
if barY - a = 0 %first end to reach the wall turns blue
then
clr2 := blue
end if
if barY + a = maxy - 1 and wallCreator = true %right before for loop ends
then
clr1 := blue
clr2 := blue %when the wall is complete, it will turn blue,
%indicating that the ball can collide with it
%without losing a life.
Draw.FillBox (0, barY + a + 1, barX, barY, clr1) %fills in the space to the side the ball
Draw.FillBox (0, barY - a, barX, barY, clr2) %fills in the space to the side the ball
end if
if wallCreator = false then %ball collided with green wall
Draw.FillBox (barX, barY + a, barX + 10, barY, white)
Draw.FillBox (barX, barY - a, barX + 10, barY, white)
lives := lives - 1 %lost life
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives))
exit
end if
end for
clr1 := green
clr2 := red %colour reset, next time a wall is created, it will be
%green, indicating that if the ball collides with it
%you will lose a life.
end if
%Boolean reset
wallCreator := true
ballTrapperBoolean := true
end ballTrapper
for i : 1 .. NUM_BALLS
x (i) := Rand.Int (RADIUS, maxx - RADIUS)
y (i) := Rand.Int (RADIUS, maxy - RADIUS)
dx (i) := Rand.Int (-6, 6)
dy (i) := Rand.Int (-6, 6)
end for
loop
%Boundary Wall Collision
for i : 1 .. NUM_BALLS
if x (i) + dx (i) < RADIUS or
x (i) + dx (i) > maxx - RADIUS then
%Music.Sound (440, 30)
dx (i) := -dx (i)
end if
if y (i) + dy (i) < RADIUS or
y (i) + dy (i) > maxy - RADIUS then
%Music.Sound (440, 30)
dy (i) := -dy (i)
end if
x (i) := x (i) + dx (i)
y (i) := y (i) + dy (i)
Draw.FillOval (x (i), y (i), RADIUS, RADIUS, red)
delay (5)
View.Update
Draw.FillOval (x (i), y (i), RADIUS, RADIUS, white)
%Completed Wall Collision
end for
%Uncompleted Wall Collision
if whatdotcolour (x (1) + RADIUS, y (1) + RADIUS) = green or whatdotcolour (x (1) + RADIUS, y (1) + RADIUS) = red then
wallCreator := false %if ball collides with green wall, cancel wall creation
end if
% Ball Trapper
if ballTrapperBoolean = true
then
fork ballTrapper
else
end if
%Game Over
if lives = 0 then
wallCreator := false
exit
end if
end loop
cls
View.Set ("nocursor,nobuttonbar, title:JezzBall Lives: " + intstr (lives) + " You Lose!")
for i : 1 .. 10
delay (100)
Font.Draw ("Game Over!", 30, (maxy div 2) - 20, fontGameOver, i)
end for
|