local gc=love.graphics local kb=love.keyboard local abs=math.abs local max,min=math.max,math.min local rnd=math.random local scene={} local state local bx,by=640,360--Ball posotion local vx,vy=0,0--Ball velocity local ry=0--Rotation Y local p1,p2--Player data function scene.sceneInit() BG.set("none") BGM.play("way") state=0 bx,by=640,360 vx,vy=0,0 ry=0 p1={ score=0, y=360, vy=0, y0=false, } p2={ score=0, y=360, vy=0, y0=false, } end local function start() state=1 vx=rnd()>.5 and 6 or -6 vy=rnd()*6-3 end function scene.keyDown(key) if key=="space"then if state==0 then start() end elseif key=="r"then state=0 bx,by=640,360 vx,vy=0,0 ry=0 p1.score,p2.score=0,0 SFX.play("hold") elseif key=="w"or key=="s"then p1.y0=false elseif key=="up"or key=="down"then p2.y0=false elseif key=="escape"then SCN.back() end end function scene.touchDown(x,y) scene.touchMove(x,y) if state==0 then start()end end function scene.touchMove(x,y)(x<640 and p1 or p2).y0=y end function scene.mouseMove(x,y)(x<640 and p1 or p2).y0=y end --Rect Area X:150~1130 Y:20~700 function scene.update() --Update pads local P=p1 while P do if P.y0 then if P.y>P.y0 then P.y=max(P.y-8,P.y0,70) P.vy=-8 elseif P.y650 then P.vy=-P.vy*.5 P.y=650 elseif P.y<70 then P.vy=-P.vy*.5 P.y=70 end end P=P==p1 and p2 end --Update ball bx,by=bx+vx,by+vy if ry~=0 then if ry>0 then ry=max(ry-.1,0) vy=vy-.1 else ry=min(ry+.1,0) vy=vy+.1 end end if state==1 then--Playing if bx<160 or bx>1120 then P=bx<160 and p1 or p2 local d=by-P.y if abs(d)<60 then vx=-vx-(vx>0 and .05 or -.5) vy=vy+d*.08+P.vy*.5 ry=P.vy SFX.play("collect") else state=2 end end if by<30 or by>690 then by=by<30 and 30 or 690 vy,ry=-vy,-ry SFX.play("collect") end elseif state==2 then--Game over if bx<-120 or bx>1400 or by<-40 or by>760 then P=bx>640 and p1 or p2 P.score=P.score+1 TEXT.show("+1",bx>1400 and 470 or 810,226,50,"score") SFX.play("reach") state=0 bx,by=640,360 vx,vy=0,0 end end bx,by,vx,vy,ry=bx,by,vx,vy,ry end function scene.draw() --Draw score setFont(100) gc.setColor(.4,.4,.4) mStr(p1.score,470,20) mStr(p2.score,810,20) --Draw boundary gc.setColor(1,1,1) gc.setLineWidth(6) gc.line(130,20,1160,20) gc.line(130,700,1160,700) --Draw ball & speed line gc.setColor(1,1,1-abs(ry)*.16) gc.circle("fill",bx,by,10) gc.setColor(1,1,1,.1) gc.line(bx+vx*22,by+vy*22,bx+vx*30,by+vy*30) --Draw pads gc.setColor(1,.8,.8) gc.rectangle("fill",130,p1.y-50,20,100) gc.setColor(.8,.8,1) gc.rectangle("fill",1130,p2.y-50,20,100) end scene.widgetList={ WIDGET.newKey{name="reset",x=640,y=45,w=150,h=50,font=35,code=pressKey"r"}, WIDGET.newKey{name="back",x=640,y=675,w=150,h=50,font=35,code=backScene}, } return scene