Spel31: Balans Kontroll

balldog                                          Hund som balanserar boll!

Vi programmerar ett spel som går ut på att balansera ett antal bollar staplade på varandra via fjädrar och utsatta för viss störning i x-led, genom att med touch flytta den understa bollen. Parametrar för bollradie R, fjäderstyvhet E, dämpning D och gravitation G.

Börja med 2 bollar, sedan 3 osv. Jämför med Mechanics2 på App Store.

Template: (Titta på exempel med 4 bollar)

— Balanskontroll

function setup()

print(“Försök balansera ett antal bollar travade på varandra via fjädrar och utsatta för viss störning i x-led, genom att med touch flytta den understa bollen.”)
print(“Parametrar för bollradie R, fjäderstyvhet E, dämpning D och gravitation G.”)
print(“Börja med 2 bollar,sedan 3 osv”)

I=4

parameter.number(“R”,1,200,75)
parameter.number(“E”,1,100000,100)
parameter.number(“G”,1,100000,2000)
parameter.number(“D”,1,1000,500)

x={}
v={}
f={}
xb={}

for i=1,I do
x[i]=vec2(200,100+2*i*R)
v[i]=vec2(0,0)
f[i]=vec2(0,0)
end

for i=1,I do
xb[i]={}
end

dt=0.01
start=0

end

function draw()

background(40, 40, 50)

for i=1,I do
fill(255, 0, 40, 255)
ellipse(x[i].x,x[i].y,2*R)
end

for i=2,I do
f[i]=vec2(math.random(-100,100),-G)
for j=1,I do
dist=(x[i]-x[j]):len()
if dist < 2*R-5 then
f[i]=f[i]+E*(x[i]-x[j])
end
end
v[i]=(1-0.001*D)*v[i]+f[i]*dt
x[i]=x[i]+v[i]*dt
end

end

function touched(touch)

x[1]=vec2(CurrentTouch.x,CurrentTouch.y)

end

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s