Post by leon26leon26 on Oct 6, 2016 20:18:44 GMT
Simple Pong game.
Old code, slightly altered for multitouch.
On half of the screen controls one paddle, the other the other.
Code:
Old code, slightly altered for multitouch.
On half of the screen controls one paddle, the other the other.
Code:
--[[-------------------------
Pong
Game made by leon26leon26
Version 1.0
Changelog:
+added game
If you make any changes to the code or have suggestions, please notify me of what you did, as I may incorporate it in the next update.
©leon26leon26
--]]-------------------------
--=========================--
-- Wrapping the draw lib --
--=========================--
color={white=draw.white,
black=draw.black,
lightgray=draw.lightgray,
gray=draw.gray,
darkgray=draw.darkgray,
red=draw.red,
green=draw.green,
blue=draw.blue,
cyan=draw.cyan,
magenta=draw.magenta,
orange=draw.orange,
purple=draw.purple,
brown=draw.brown,
yellow=draw.brown,
}
--=========================--
-- Wrapping the draw lib --
--=========================--
--this converts coordinates based on your screen size
OldDraw=draw
draw={setscreen=OldDraw.setscreen,beginframe=OldDraw.beginframe,endframe=OldDraw.endframe,clear=OldDraw.clear,waittouch=OldDraw.waittouch,getport=OldDraw.getport,setfont=OldDraw.setfont,setlinestyle=OldDraw.setlinestyle,stringsize=OldDraw.stringsize,showtitle=OldDraw.showtitle,tracktouches=OldDraw.tracktouches,doevents=OldDraw.doevents,settitle=OldDraw.settitle}
function draw.rect(x1,y1,x2,y2,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
OldDraw.rect(x1,y1,x2,y2,color)
end
function draw.fillrect(x1,y1,x2,y2,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
OldDraw.fillrect(x1,y1,x2,y2,color)
end
function draw.roundedrect(x1,y1,x2,y2,round,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
OldDraw.roundedrect(x1,y1,x2,y2,round,color)
end
function draw.fillroundedrect(x1,y1,x2,y2,round,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
OldDraw.fillroundedrect(x1,y1,x2,y2,round,color)
end
function draw.circle(x1,y1,rad,color)
x1=x1/320*xdim
y1=y1/568*ydim
rad=rad/568*ydim
OldDraw.circle(x1,y1,rad,color)
end
function draw.fillcircle(x1,y1,rad,color)
x1=x1/320*xdim
y1=y1/568*ydim
rad=rad
OldDraw.fillcircle(x1,y1,rad,color)
end
function draw.triangle(x1,y1,x2,y2,x3,y3,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
x3=x3/320*xdim
y3=y3/568*ydim
OldDraw.triangle(x1,y1,x2,y2,x3,y3,color)
end
function draw.filltriangle(x1,y1,x2,y2,x3,y3,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim
x3=x3/320*xdim
y3=y3/568*ydim
OldDraw.filltriangle(x1,y1,x2,y2,x3,y3,color)
end
function draw.string(string,x1,y1,color)
x1=x1/320*xdim
y1=y1/568*ydim
OldDraw.string(string,x1,y1,color)
end
function draw.line(x1,y1,x2,y2,color)
x1=x1/320*xdim
y1=y1/568*ydim
x2=x2/320*xdim
y2=y2/568*ydim OldDraw.line(x1,y1,x2,y2,color)
end
--=========================--
-- Functions --
--=========================--
function calcfps()
fpscheck=fpscheck+1
if os.difftime(os.time(), fpstime) > 1 then
fps = fpscheck
fpscheck = 0
fpstime = os.time()
end
end
--=========================--
-- Initializing --
--=========================--
function Init()
sys.clear()
draw.setscreen(1)
draw.settitle("Pong")
draw.showtitle(false)
ballmotionO={x=0,y=4}
ballmotion={x=ballmotionO.x,y=ballmotionO.y}
ballpos={x=160,y=284}
paddlepos={160,160}
paddlegoal={160,160}
score={P1=0,P2=0}
active=true
screen=0
fps=0
fpscheck=0
frame=0
local function touches(t)
for i=1,#t do
if t[i].y<ydim/2 then
paddlegoal[2]=t[i].x
else
paddlegoal[1]=t[i].x
end
end
end
draw.touchbegan=touches
draw.touchmoved=touches
draw.touchended=touches
end
function DrawAll()
xdim,ydim=draw.getport()
draw.clear(color.black)
draw.fillrect(0,283,320,285,color.white)
draw.setlinestyle(2,"square")
draw.rect(0,0,320,568,color.white)
draw.fillrect(paddlepos[1]-30,528,paddlepos[1]+30,548,color.white)
draw.fillrect(paddlepos[2]-30,20,paddlepos[2]+30,40,color.white)
do
local x=ballpos.x
local y=ballpos.y
draw.fillrect(x-10,y-10,x+10,y+10,color.white)
end
draw.setfont("copperplate",10)
draw.string(fps,5,10,color.white)
draw.endframe()
end
function MoveAll()
for i=1,8 do
for i=1,2 do
if paddlegoal[i]<paddlepos[i] then
paddlepos[i]=paddlepos[i]-1
elseif paddlegoal[i]>paddlepos[i] then
paddlepos[i]=paddlepos[i]+1
end
end
end
ballpos.x=ballpos.x+ballmotion.x
ballpos.y=ballpos.y+ballmotion.y
if ballpos.x-10<0 then
ballmotion.x=-ballmotion.x
elseif ballpos.x+10>320 then
ballmotion.x=-ballmotion.x
end
if ballpos.y<50 and (ballpos.x-paddlepos[2])<40 and (ballpos.x-paddlepos[2])>-40 then
ballmotion.y=-ballmotion.y
ballmotion.x=ballmotion.x+((ballpos.x-paddlepos[2])/20)
elseif ballpos.y>518 and (ballpos.x-paddlepos[1])<40 and (ballpos.x-paddlepos[1])>-40 then
ballmotion.y=-ballmotion.y
ballmotion.x=ballmotion.x+((ballpos.x-paddlepos[1])/20)
end
end
function Menu()
xdim,ydim=draw.getport()
draw.beginframe()
draw.clear(color.black)
draw.fillrect(130,20,190,40,color.white)
draw.fillrect(130,528,190,548,color.white)
draw.fillrect(150,274,170,294,color.white)
draw.fillrect(0,283,320,285,color.white)
draw.setlinestyle(2,"square")
draw.rect(0,0,320,568,color.white)
draw.setfont("copperplate",100)
draw.string("PONG",draw.getport()/2-draw.stringsize("PONG")/2,50,color.white)
draw.setfont("copperplate",30)
draw.string("Tap anywhere to start",xdim/2-draw.stringsize("Tap anywhere to start")/2,130,color.white)
draw.rect(5,543,25,563,color.white)
draw.line(5,543,25,563,color.white)
draw.line(25,543,5,563,color.white)
draw.endframe()
x,y=draw.waittouch()
end
function ResetPos()
ballpos={x=160,y=284}
paddlepos={160,160}
paddlegoal={160,160}
ballmotion={x=ballmotionO.x,y=ballmotionO.y}
end
function DetectGoal()
if ballpos.y<10 then
score.P1=score.P1+1
ResetPos()
elseif ballpos.y>558 then
score.P2=score.P2+1
ResetPos()
end
end
function Main()
MoveBall()
ShareData()
DrawAll()
end
--=========================--
-- Main Code --
--=========================--
Init()
Menu()
while active do
calcfps()
DrawAll()
MoveAll()
--[[
if device==1 then
paddlepos[2]=ballpos.x
elseif device==2 then
paddlepos[1]=ballpos.x
end
]]
DetectGoal()
draw.doevents()
sleep(10)
end