Code:
--Main class:
supportedOrientations(PORTRAIT_ANY)
function setup()
parameter.watch("newtonyspeed.x")
parameter.watch("stuff1center.y")
parameter.watch("ymobility")
parameter.watch("floor.y")
parameter.watch("newtonxspeed")
parameter.watch("newtonyspeed.linearVelocity.y")
parameter.watch("newton.linearVelocity.x")
parameter.watch("newton.linearVelocity.y")
parameter.watch("stuff1center.y")
parameter.integer("WIDTH",0,1536,768)
parameter.integer("HEIGHT",0,2048,1024)
displayMode(OVERLAY)
x=TitleScreen()
end
function draw()
x:draw()
end
function touched(t)
x:touched(t)
end
--TitleScreen class: (only press start game when running this class)
TitleScreen = class()
function TitleScreen:init()
rectMode(CORNER)
textMode(CENTER)
st=false
cr=false
he=false
end
function TitleScreen:draw()
background(0, 72, 255, 255)
fontSize(HEIGHT/51.2)
local rectheight=HEIGHT/20.48
local rectwidth=rectheight*4
sprite("SpaceCute:Background",WIDTH/2,HEIGHT/2,WIDTH,HEIGHT)
stroke(0, 231, 255, 255)
strokeWidth(HEIGHT/204.8)
fill(8, 255, 0, 255)
if st then
fill(11, 0, 255, 255)
end
rect(WIDTH/2-HEIGHT/10.24,HEIGHT/2+HEIGHT/8.192,rectwidth,rectheight)
fill(8, 255, 0, 255)
if cr then
fill(11, 0, 255, 255)
end
rect(WIDTH/2-HEIGHT/10.24,HEIGHT/2-HEIGHT/40.96,rectwidth,rectheight)
fill(8, 255, 0, 255)
if he then
fill(11, 0, 255, 255)
end
rect(WIDTH/2-HEIGHT/10.24,HEIGHT/2-HEIGHT/5.85142857143,rectwidth,rectheight)
fill(255, 0, 22, 255)
text("Start Game",WIDTH/2,HEIGHT/2+HEIGHT/6.8)
text("Credits",WIDTH/2,HEIGHT/2)
text("Help",WIDTH/2,HEIGHT/2-HEIGHT/6.8)
textSize(150,30)
end
function TitleScreen:touched(touch)
if touch.x >= WIDTH/2-HEIGHT/10.24 and touch.x <= WIDTH/2+HEIGHT/10.24 and
touch.y >= HEIGHT/2+HEIGHT/8.192 and touch.y <= HEIGHT/2+HEIGHT/5.85142857143 then
if touch.state==BEGAN then
st=true
elseif touch.state==ENDED then
x=Game()
end
end
if touch.x >= WIDTH/2-HEIGHT/10.24 and touch.x <= WIDTH/2+HEIGHT/10.24 and
touch.y >= HEIGHT/2-HEIGHT/40.96 and touch.y <= HEIGHT/2+HEIGHT/40.96 then
if touch.state==BEGAN then
cr=true
elseif touch.state==ENDED then
x=Credits()
end
end
if touch.x >= WIDTH/2-HEIGHT/10.24 and touch.x <= WIDTH/2+HEIGHT/10.24 and
touch.y >= HEIGHT/2-HEIGHT/5.85142857143 and touch.y <= HEIGHT/2-HEIGHT/8.192 then
if touch.state==BEGAN then
he=true
elseif touch.state==ENDED then
x=Help()
end
end
if touch.state==ENDED then
st=false
cr=false
he=false
end
end
--Game class:
--to do: use xmobility to determine scrolling, and xmobility only.
Game=class()
if newton~=nil then
newton.destroy()
end
if stuff1center~=nil then
stuff1center.destroy()
end
if floor~=nil then
floor.destroy()
end
if newtonyspeed~=nil then
newtonyspeed.destroy()
end
function Game:init()
rectMode(CENTER)
spriteMode(CENTER)
textMode(CENTER)
newtonsize=HEIGHT/28.1
newton=physics.body(POLYGON,vec2(-newtonsize,newtonsize),vec2(-newtonsize,-newtonsize),vec2(newtonsize,-newtonsize),vec2(newtonsize,newtonsize))
newton.type=DYNAMIC
newton.info="main"
newton.x=WIDTH/2
newton.y=WIDTH/2
stuff1center=physics.body(CIRCLE,1)
stuff1center.x=WIDTH/2
stuff1center.y=-1000
stuff1center.type=KINEMATIC
stuff1={}
stuff2={}
stuff3={}
newtonxspeed=0
newtonyspeed=physics.body(CIRCLE,1,1)
newtonyspeed.type=DYNAMIC
newtonyspeed.x=-1
newtonyspeed.y=0
newtonyspeed.info="how is this possibly coliding with you?"
minheight1=0
minheight2=-stuff1center.x
floor=physics.body(EDGE,vec2(-1,stuff1center.y+1000),vec2(WIDTH,stuff1center.y+1000))
floor.type=STATIC
physics.gravity(0,-HEIGHT/4.096)
xmobility=false
left=false
right=false
ymobility=false
up=false
down=false
touching=false
yscroll=false
xscroll=false
rightwall=false
leftwall=false
xscrollboolean=true
end
function Game:draw()
if newtonyspeed.linearVelocity.x~=0 or newtonyspeed.x~=-1 then
newtonyspeed.x=-1
end
if glide==true then
newtonyspeed.linearVelocity=vec2(0,HEIGHT/20.48)
end
background(0, 72, 255, 255)
sprite("Cargo Bot:Game Area",stuff1center.x,stuff1center.y+1000+HEIGHT/2,HEIGHT*2,HEIGHT)
sprite("Cargo Bot:Claw Arm",(stuff1center.x-HEIGHT+HEIGHT/10.24-newtonsize)/2,stuff1center.y+HEIGHT/2,HEIGHT/10.24-newtonsize,HEIGHT)
sprite()
pushStyle()
fill(0, 255, 76, 255)
ellipse(stuff1center.x,stuff1center.y+1000,20)
line(-1,stuff1center.y+1000,WIDTH,stuff1center.y+1000)
ellipse(newtonyspeed.x,newtonyspeed.y,20)
popStyle()
floor.y=stuff1center.y+1000
fill(255, 19, 0, 255)
rect(newton.x,newton.y,newtonsize*2,newtonsize*2)
minheight1=stuff1center.x+minheight2
--if newton goes below minheight1, the game will end. the minheight2 will become -stuff1center every time newton hits a platform so that minheight1 will be brought up to that point.
newtonxspeed=Gravity.x*HEIGHT/4.096
if stuff1center.x<=WIDTH/2-HEIGHT+WIDTH/2+HEIGHT/5.12 and newtonxspeed>=0 then
stuff1center.x=WIDTH/2-HEIGHT+WIDTH/2+HEIGHT/5.12
xmobility=true
if newton.x>=WIDTH-HEIGHT/10.24 and newtonxspeed>0 then
rightwall=true
else rightwall=false
end
elseif stuff1center.x>=WIDTH/2+HEIGHT-WIDTH/2-HEIGHT/5.12 and newtonxspeed<=0 then
stuff1center.x=WIDTH/2+HEIGHT-WIDTH/2-HEIGHT/5.12
xmobility=true
if newton.x<=HEIGHT/10.24 and newtonxspeed<0 then
leftwall=true
else leftwall=false
end
else
if newton.x>=WIDTH/2+HEIGHT/5.12 and stuff1center.x>=WIDTH/2-HEIGHT and newtonxspeed>=0 then
xmobility=false
right=false
left=true
xscroll=true
elseif newton.x<=WIDTH/2-HEIGHT/5.12 and stuff1center.x<=WIDTH/2+HEIGHT and newtonxspeed<=0 then
xscroll=true
xmobility=false
left=false
right=true
stuff1center.linearVelocity.x=newtonxspeed
elseif newton.x>=-HEIGHT and newton.x<=HEIGHT*2 then
xmobility=true
left=true
right=true
xscroll=false
end
end
if newton.y>=HEIGHT/5.12 and newtonyspeed.linearVelocity.y>=0 then
yscroll=true
ymobility=false
up=false
down=true
elseif newton.y<=newtonsize*2 and newtonyspeed.linearVelocity.y<=0 then
yscroll=true
ymobility=false
down=false
up=true
else ymobility=true
up=true
down=true
yscroll=false
end
if xmobility==true and ymobility==true then
if leftwall==true and newton.linearVelocity.x<0 then
newton.linearVelocity=vec2(0,newtonyspeed.linearVelocity.y)
newton.x=HEIGHT/10.24
elseif rightwall==true and newton.linearVelocity.x>0 then
newton.linearVelocity=vec2(0,newtonyspeed.linearVelocity.y)
newton.x=WIDTH-HEIGHT/10.24
else
newton.linearVelocity=vec2(newtonxspeed,newtonyspeed.linearVelocity.y)
end
stuff1center.linearVelocity=vec2(0,0)
elseif xmobility==true and ymobility==false then
if leftwall==true and newton.linearVelocity.x<0 then
newton.linearVelocity=vec2(0,0)
newton.x=HEIGHT/10.24
elseif rightwall==true and newton.linearVelocity.x>0 then
newton.linearVelocity=vec2(0,0)
newton.x=WIDTH-HEIGHT/10.24
else
newton.linearVelocity=vec2(newtonxspeed,0)
end
stuff1center.linearVelocity=vec2(0,-newtonyspeed.linearVelocity.y)
elseif xmobility==false and ymobility==true then
newton.linearVelocity=vec2(0,newtonyspeed.linearVelocity.y)
stuff1center.linearVelocity=vec2(-newtonxspeed,0)
elseif xmobility==false and ymobility==false then
newton.linearVelocity=vec2(0,0)
stuff1center.linearVelocity=vec2(-newtonxspeed,-newtonyspeed.linearVelocity.y)
end
end
function Game:touched(touch)
if touch.state==BEGAN then
touching=true
glide=true
end
if touch.state==ENDED then
glide=false
end
end
function collide(c)
if c.state==BEGAN then
if c.bodyA.info==main then
newtonyspeed.linearVelocity=vec2(0,HEIGHT/4.096)
print(c.bodyB.info)
print(c.bodyB.x)
if c.bodyB.info=="how is this possibly colliding with you?" then
newtonyspeed.x=-2
end
elseif c.bodyB.info==main then
newtonyspeed.linearVelocity=vec2(0,HEIGHT/4.096)
end
end
end
Disclaimer: I try to be as independent from the forums as possible. If I am posting a bug here, it is because I’ve exhausted all other problems. I will not post my problems here before looking into them myself (as I have done in the past).