Vi programmerar ett racingspel där horisontell hastighet styrs via lutning av skärmen och där bilen följer en given racingbana så länge hastigheten inte är för stor. Målet med spelet är att komma från start till mål på kortast tid.
Vi lär oss hur racerbilen styrs att följa vägen via fjäderkrafter. Vägen sträckning bestäms slumpmässigt via math.random().
Template 1: (Titta på spelet)
— Racing
curve={}
for i=1,3 do
curve[i]=math.random(-50,50)
end
function setup()
print(“Racing”)
displayMode(FULLSCREEN)
poscar=vec2(10,road(10))
velcar=vec2(0,0)
acccar=vec2(0,0)
dt=0.02
tree = {}
crash=0
sound(“Game Sounds One:Wind 2”)
for i=1,10 do
tree[i]=math.random(-10,10)
end
end
t=0
function draw()
t=t+1
print(t)
sprite(“SpaceCute:Background”,WIDTH/2,HEIGHT/2,3*WIDTH)
fill(122, 122, 121, 255)
for n=1,2000 do
ellipse(n,road(n),20)
end
font(“AmericanTypewriter”)
fontSize(100)
fill(21, 19, 17, 255)
text(t,400,800)
for i=1,10 do
sprite(“Small World:Tree 3”,300+20*tree[i],300+20*tree[11-i],math.random(97,100))
end
poscar.x=poscar.x+(40*Gravity.x)
if math.abs(poscar.y – road(poscar.x))>1 and math.abs(poscar.y – road(poscar.x))<10 then
acccar.y =1000*(road(poscar.x) – poscar.y)
velcar.y= 0.5*velcar.y + acccar.y*dt
poscar.y = poscar.y +velcar.y*dt
end
sprite(“SpaceCute:Beetle Ship”, poscar.x, poscar.y, math.random(45,50))
if math.abs(poscar.y – road(poscar.x))>10 then
poscar.y = poscar.y +velcar.y*dt
end
if math.abs(poscar.y – road(poscar.x))>20 then
crash=crash+1
if crash==2 then
sound(“Game Sounds One:Crowd Boo”)
end
fill(249, 17, 17, 255)
text(“Crash”..crash,200,200)
end
end
function road(x)
local road = 0
for i=1,3 do
road = road + curve[i]*math.sin(0.01*x*i)
end
road=road+500
return road
end