Spel20: Racing

2011_FIA_GT1_Silverstone_2

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

Leave a comment