|
Moderator, Games Team
Join Date: Jan 2009
Location: Near Washington, D.C.
Posts: 2,365
OS: Windows XP Home Edition Service Pack 3
|
Re: Brickwall Game [Help]
Thanks for the reply.
I think I do, but I did forget to attach all of the code. I accidentally chopped off some of the last, and I reattached the whole thing. I do have the subs for removing the bricks (near the end), but the bricks still aren't getting taken out.
Code:
'paddle = GraphicsWindow.AddRectangle(120, 12) 'v0.2
paddle = Shapes.AddRectangle(120, 12) 'v0.3.1
'ball = GraphicsWindow.AddEllipse(16, 16) 'v0.2
ball = Shapes.AddEllipse(16, 16) 'v.0.3.1
bricksLeft = 48
brickStartY = 35
hitcount = 0
GraphicsWindow.FontSize = 14
GraphicsWindow.MouseMove = OnMouseMove
GraphicsWindow.Title = "Brickwall Game"
For idx = 0 To 15
Array.SetValue("Green Bricks", idx, 1)
Array.SetValue("Yellow Bricks", idx, 1)
Array.SetValue("Red Bricks", idx, 1)
EndFor
DrawBricks()
score = 0
PrintScore()
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
y = gh - 28
'GraphicsWindow.MoveShape(ball, x, y) 'v0.2
Shapes.Move(ball,x,y) 'v0.3.1
deltaX = 1
deltaY = -2
Sound.PlayBellRingAndWait()
RunLoop:
x = x + deltaX
y = y + deltaY
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
If (x >= gw - 16 Or x <= 0) Then
deltaX = -deltaX
EndIf
If (y <= 0) Then
deltaY = -deltaY
EndIf
'padX = GraphicsWindow.GetLeftOfShape(paddle) 'v0.2
padX = Shapes.GetLeft(paddle) 'v.0.3.1
If ((y >= gh - 28 + 2) And x >= padX And x <= padX + 120) Then
y = gh - 28 + 2
'Sound.PlayClick()
hitcount = hitcount + 1
If Math.Remainder(hitcount, 3) = 0 Then 'Move brick downwards
For idx = 0 To 15
RemoveGreenBrick()
RemoveYellowBrick()
RemoveRedBrick()
Endfor
brickStartY = brickStartY + 20
DrawBricks()
EndIf
TestRed:
For idx = 0 To 15
If Array.GetValue("RedBricks", idx) = 1 Then
If brickStartY > gh - 160 Then
Goto EndGame
EndIf
EndIf
EndFor
TestYellow:
For idx = 0 To 15
If Array.GetValue("YellowBricks", idx) = 1 Then
If brickStartY > gh - 100 Then
Goto EndGame
EndIf
EndIf
EndFor
TestGreen:
For idx = 0 To 15
If Array.GetValue("GreenBricks", idx) = 1 Then
If brickStartY > gh - 40 Then
Goto EndGame
EndIf
EndIf
EndFor
EndTest:
deltaX = deltaX - 2 + (x -padX) / 30 ' Add some skill
If score = oldScore Then 'No bricks hit
score = score - 1
EndIf
oldScore = score
PrintScore()
deltaY = -deltaY 'Change the ball direction
EndIf
'GraphicsWindow.MoveShape(ball, x, y) 'v0.2
Shapes.Move(ball,x,y) 'v0.3.1
Program.Delay(5)
'Green Bricks
If y > brickStartY - 16 And y < brickstartY + 20 Then 'y position of brick - diameter of ball
idx = (x+8) / 40 ' Radius of ball / length of brick
idx = Math.Floor(idx) 'take integer part
If Array.GetValue("GreenBricks", idx) = 1 Then
Array.SetValue("GreenBricks", idx, 0)
RemoveGreenBrick()
Sound.PlayChime()
bricksLeft = bricksLeft - 1
deltaY = -deltaY 'Change ball direction
score = score + 15
PrintScore()
CheckEnd()
EndIf
EndIf
'Yellow Bricks
If y > brickStartY + 44 And y < brickStartY + 80 Then ' y position of brick - diameter of ball = 19
idx = (x+8) / 40 'Radius of ball / length of brick
idx = Math.Floor(idx) 'take integer part
If Array.GetValue("YellowBricks", idx) = 1 Then
Array.SetValue("YellowBricks", idx, 0)
RemoveYellowBrick()
Sound.PlayChime()
bricksLeft = bricksLeft - 1
deltaY = -deltaY 'Change ball direction
score = score + 10
PrintScore()
CheckEnd()
EndIf
EndIf
'Red Bricks
If y > brickStartY + 104 And y < brickStartY + 140 Then 'y position of brick - diameter of ball = 19
idx = (x+8) / 40 'Radius of ball / length of brick
idx = Math.Floor(idx) 'take integer part
If Array.GetValue("RedBricks", idx) = 1 Then
Array.SetValue("RedBricks", idx, 0)
RemoveRedBrick()
Sound.PlayChime()
bricksLeft = bricksLeft - 1
deltaY = -deltaY ' Change ball direction
score = score + 5
PrintScore()
CheckEnd()
EndIf
EndIf
If (y < gh) Then 'Ball not reached bottom of window
Goto RunLoop
EndIf
EndGame:
GraphicsWindow.ShowMessage("Thanks, for playing Brickwall, and your score is : " + score, "Brickwall Game")
Program.End()
Sub OnMouseMove
paddleX = GraphicsWindow.MouseX
'GraphicsWindow.MoveShape(paddle, paddleX - 60, GraphicsWindow.Height - 12) 'v0.2
Shapes.Move(paddle, paddleX - 60, GraphicsWindow.Height - 12) 'v0.3.1
EndSub
Sub PrintScore
' Clear the score first and then draw the real score text
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(10, 10, 200, 20)
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 10, "Your score is: " + score)
EndSub
Sub DrawBricks
For idx = 0 To 15 'Draw bricks
'Program.Delay(100)
If Array.GetValue("GreenBricks", idx) = 1 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Green"
Else
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
EndIf
GraphicsWindow.FillRectangle(idx * 40, brickStartY, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY, 40, 20)
GraphicsWindow.BrushColor = "Yellow"
If Array.GetValue("YellowBricks", idx) = 1 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Yellow"
Else
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
EndIf
GraphicsWindow.FillRectangle(idx * 40, brickStartY + 60, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY + 60, 40, 20)
GraphicsWindow.BrushColor = "Red"
If Array.GetValue("RedBricks", idx) = 1 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Red"
Else
GraphicsWindow.PenColor = "White"
GraphicsWindow.PenColor = "White"
EndIf
GraphicsWindow.FillRectangle(idx * 40, brickStartY + 120, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY + 120, 40, 20)
EndFor
EndSub
Sub RemoveGreenBrick
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(idx * 40, brickStartY, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY, 40, 20)
EndSub
Sub RemoveYellowBrick
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(idx * 40, brickStartY + 60, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY + 60, 40, 20)
EndSub
Sub RemoveRedBrick
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(idx * 40, brickStartY + 120, 40, 20)
GraphicsWindow.DrawRectangle(idx * 40, brickStartY + 120, 40, 20)
EndSub
Sub CheckEnd
If bricksLeft = 0 Then
GraphicsWindow.ShowMessage("Congrats, you finished the game! Your score is: " + score, "Brickwall Game")
'Goto GameStart
Program.End()
'Goto EndGame
EndIf
EndSub
__________________
Gaming troubleshooting steps.
Real peace cannot be found in what happens in Washington, D.C. Only God can give true peace to people.
|