Log In  

Cart #peyejoyufi-0 | 2019-03-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#62495 2019-03-04 02:27

--function that builds bricks
function buildbricks(level)
local i,j,o,chr,last
--x value for bricks
brick_x = {}
--y value for bricks
brick_y = {}
--visibility of bricks
brick_v = {}
--chart for bricks (how many bricks and where are they)
j=0
for i=1, #level do
j +=1
chr=sub(level,i,i)
if chr=="b" then
last = "b"
add (brick_x, 4+((j-1)%11)(brick_w+2))
add (brick_y, 20+flr((j-1)/11)
(brick_h+2))
add (brick_v, true)
all_bricks += 1
elseif chr=="x" then
last = "x"
elseif chr == "/" then
j=(flr((j-1)/11)+1)11
elseif chr>="1" and chr<="9" then
for o=1, chr+0 do
if last == "b" then
add (brick_x, 4+((j-1)%11)
(brick_w+2))
add (brick_y, 20+flr((j-1)/11)*(brick_h+2))
add (brick_v, true)
all_bricks += 1
elseif last == "x" then
end
j+=1
end
j+=1
end
end
end
function levelfinished()
if #brick_v == 0 then return true end for i=1,#brick_v do
if brick_v[i] == true then
return false
end
end
return true
end
function show_menu()
cls()
print ('brick blaster', 20, 35, 11)
print ('press x to begin', 20, 45, 3)
--start game
if btn(5) then
go_game = true
buildbricks(level)
run_game ()
sfx(4)
life = 3
end
end
--changes levels
function levelchange()
cls()
ball_x = 30
ball_y = 70
ball_size = 2
ball_color = 10
x_speed = 1
y_speed = 1
pad_x = 52
pad_y = 120
pad_w = 24
pad_h = 3
pad_speed = 0
pad_color = 6
print ("level complete", 20, 70, 11)
print ("press x then up/down arrow",0,80,3)
print ("to change level", 0 ,90, 3)
if btn (5) then
level = levels[levelnum]
buildbricks(level)
leveldone = false
go_game = true
end
end
function game_over()
--what happens when life = 0
cls()
print ('game over', 20, 35, 11)
print ('press z to restart', 20, 45, 3)
ball_x = 30
ball_y = 70
--size of the ball
ball_size = 2
--color of the ball
ball_color = 10
--speed of the ball
x_speed = 1
y_speed = 1
--where the paddle begins
pad_x = 52
pad_y = 120
--size of paddle
pad_w = 24
pad_h = 3
--speed of paddle
pad_speed = 0
--color of paddle
pad_color = 6
if btn(4) then
cls()
sfx(1)
go_game = false
game_done = false
levelnum = 0
life = 3
end
end
function keep_going()
--what happens when life > 0
cls ()
print ('you died', 20, 35, 11)
print ('press x to continue', 20, 45, 3)
ball_x = 30
ball_y = 70
ball_size = 2
ball_color = 10
x_speed = 1
y_speed = 1
pad_x = 52
pad_y = 120
pad_w = 24
pad_h = 3
pad_speed = 0
pad_color = 6
if btn(5)
then cls()
go_game = true
game_done = false
end
end
--function that clears screen and builds bricks
function _init()
cls()
ball_x = 30
ball_y = 70
ball_size = 2
ball_color = 10
x_speed = 1
y_speed = 1
pad_x = 52
pad_y = 120
pad_w = 24
pad_h = 3
pad_speed = 0
pad_color = 6
--size of bricks
brick_w = 10
brick_h = 4
--set various states of game
go_game = false
game_done = false
--changing levels
all_bricks = 0
levelnum = 1
-- chart that creates levels
levels = {}
levels [1] = "xxxxbbxxxx/xxxbbbbxxx/xxbbbbbbxx/xbbbbbbbbx/bbbbbbbbbb/bxbxbxbxbx/xbxbxbxbxb"
levels [2] = "bbbbbbbbbb/xxxxxxxxxx/bbbbbbbbbb/xxxxxxxxxx/bbbbbbbbbb/xxxxxxxxxx/bbbbbbbbbb"
levels [3] = "bbbbbbbbbb/xbxbxbxbxb/bxbxbxbxbx/xbxbxbxbxb/bxbxbxbxbx/xbxbxbxbxb/bbbbbbbbbb"
--current level
level = levels[levelnum]
sfx(5)
end
--function moving ball at 60 frames per second
function _update60()
if go_game == false and game_done == false then show_menu() end
if go_game == true and game_done == false then run_game() end
if go_game == false and game_done == true and life > 0 then keep_going() end
if leveldone == true and go_game == false and levelnum <= #levels then levelchange() end
if life == 0 then game_over() end
if levelnum >= #levels then life = 0 game_over() end
if life == 0 then game_over() end
end
function run_game()
pad_x+=pad_speed
ball_y = ball_y + y_speed
ball_x = ball_x + x_speed
button_press = false
leveldone = false
if btn(2) then
levelnum = 2
level = levels[levelnum]
buildbricks(level)
end
if btn(3) then
levelnum = 3
level = levels[levelnum]
buildbricks(level)
end
if all_bricks == 0 and levelnum < #levels then leveldone = true go_game = false
levelnum +=1
end
if btn(0)then
pad_speed = -3
end
if btn(1)then
pad_speed = 3
end
--friction on paddle
if not (buttpress) then
pad_speed = pad_speed/2
end
--if ball reaches x=127
if ball_x > 127
then x_speed = -1
sfx(0)
end
--if ball reaches x=0
if ball_x < 0
then x_speed = 1
sfx(0)
end
--if ball reaches y=127
if ball_y > 127
then sfx(2)
game_done = true
go_game = false
life = life - 1
end
--if ball reaches y=0
if ball_y < 0
then y_speed = 1
sfx(0)
end
--keeps paddle white when not being hit
pad_color = 7
--changes paddle color when ball hits it
if ball_hit(pad_x, pad_y, pad_w,pad_h)
then pad_color = 12
y_speed = -abs(y_speed)
end
--bricks don't show when ball hits them
for i=1,#brick_x do
if brick_v[i] and ball_hit(brick_x[i], brick_y[i], brick_w, brick_h) then
brick_v[i] = false
all_bricks -= 1
y_speed = -y_speed
sfx(3)
end
end
end
--function that draws ball, paddle, and bricks
function _draw()
if go_game == true and game_done == false then
cls()
print('lives:', 0, 0, 11)
print(life, 25, 0, 3)
print('level:',0,6,3)
print (levelnum, 25,6,11)
circfill(ball_x, ball_y, ball_size,10)
rectfill(pad_x, pad_y, pad_x+pad_w, pad_y+pad_h, pad_color)
for i=1, #brick_x do
if brick_v[i] then
rectfill(brick_x[i], brick_y[i], brick_x[i]+brick_w, brick_y[i]+brick_h, 11)
end
end
end
end
--detects ball hitting the paddle
function ball_hit(pad_x, pad_y, pad_w, pad_h)
--y position of ball and its size at y value of paddle
if ball_y - ball_size > pad_y + pad_h
then x = 'y-r > pad_y + pad_h'
return false
end
if ball_y + ball_size < pad_y
then x = 'y+r < pad_y'
return false
end
--x position of ball and its size at x value of paddle
if ball_x - ball_size > pad_x + pad_w
then
x = 'x-r > pad_x + pad_w'
return false
end
if ball_x + ball_size < pad_x
then
x = 'x+r < pad_x'
return false
end
return true
end

P#62496 2019-03-04 02:28

[Please log in to post a comment]