Quantcast

You are welcome.. (and some more demo code)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

You are welcome.. (and some more demo code)

Berkant Atay
Happy to see you having started writing your home code, jimmyjoejack.. I also code on my Treo in bed (till my wife kicks me out)  :)

Since I cannot upload files to the files section any more, I copy-pasted here some more demonstration codes I wrote. There are 9 programs separated with asterices. Just copy them in a new .txt file on your desktop, then copy these text files on your SD card's PALM\Programs\Plua\SRC folder, then change the extensions to lower case ".lua". You can access and run them in Plua after changing to "Card"...

Here we go...


*********************************************************************

-- ** Combinatorial Mathematics **

function fact(x)
   local mult=1
   for i=1,x do
   mult=mult*i
   end
  return mult
end

function getnumbers()
  local p=gui.gettext(num1field)
  if p=="" then gui.alert("You cannot leave a field blank.") return nil,nil end
  if tonumber(p)==nil then gui.alert("Only numbers.") return end
  p=tonumber(p)
  if p~=tonumber(string.format("%d", p)) then gui.alert("Integral numbers please.") return nil,nil end
  local q=gui.gettext(num2field)
  if q=="" then gui.alert("You cannot leave a field blank.") return nil,nil end
  if tonumber(q)==nil then gui.alert("Only numbers.") return end
  q=tonumber(q)
  if q~=tonumber(string.format("%d", q)) then gui.alert("Integral numbers please.") return nil,nil end
  if p<q then gui.alert("First argument cannot be smaller than the second.") return nil,nil end
  return p,q
end
 
function permu()
  local p,q=getnumbers()
  if p==nil or q==nil then return end
  screen.moveto(0,200)
  print("                                                                       ")
  print("                                                                       ")
  print("                                                                       ")
  screen.moveto(0,200)
  local k=fact(p)/fact(p-q)
  s="   The permutation of  ( "..tostring(p).." , "..tostring(q).." )  is "
  print(s)
  print()
  print("     ",k)
  return
end

function combi()
   local p,q=getnumbers()
   if p==nil or q==nil then return end
   screen.moveto(0,200)
   print("                                                                        ")
   print("                                                                        ")        
   print("                                                                        ")
   screen.moveto(0,200)
   local k=fact(p)/(fact(q)*fact(p-q))
   s="   The combination of  ( "..tostring(p).." , "..tostring(q).." )  is "
   print(s)
   print()
   print("     ",k)
   return
end

gui.title("COMBINATORIAL MATHEMATICS")
screen.moveto(10,50)
num1field=gui.field(1,10,10,"",not nil,nil)
screen.moveto(140,50)
num2field=gui.field(1,10,10,"",not nil,nil)
screen.moveto(5,100)
butcomb=gui.button("combination")
screen.moveto(133,100)
butperm=gui.button("permutation")
screen.moveto(180,270)
exitbtn=gui.button("Quit")
screen.rect(6,48,92,28)
screen.rect(132,48,92,28)
gui.setfocus(num1field)

while true do
 ev,id=gui.event()
  if ev==appStop then break end
  if ev==ctlSelect and id==butperm then permu() end
  if ev==ctlSelect and id==butcomb then combi() end
  if ev==ctlSelect and id==exitbtn then os.exit() end
end


*********************************************************************


-- ** Random colored disks, fun to watch.. **

screen.clear()
while true do
x=math.random(320)
y=math.random(320)
c=screen.rgb(math.random()*256,math.random()*256,math.random()*256)
r1=math.random(160)
r2=math.random(160)
screen.disc(x,y,r1,r2,c)
ev=gui.event(0)
if ev==appStop then break end
end


**********************************************************************


--   **  Simple demostration game **


function  initfile()
points=0
person={}
f,numrec=io.open("db:/Gamehigh.ber","r+")
if numrec==0 then person={"nobody",0}
        data=bin.pack("SB", person)
        f:createrec(string.len(data))
        f:openrec(0)
        f:write(data)
        high=0
        f:closerec() end
f:openrec(0)
data=f:read("*a")
person=bin.unpack("SB", data)
high=person[2]
f:closerec()
f:close()
end

function play()
shots={}
gui.destroy()
for n=1,10 do
gui.title("Points: "..points)
  for i=1,n do
     if shots[i]==1 then screen.disc(120+i*16,14,8,6,screen.rgb(0,255,0))
     else screen.disc(120+i*16,14,8,6,screen.rgb(255,0,0))
     end
  end  
os.sleep(0.1+3*math.random())
x=math.random(300)+10
y=math.random(270)+40
screen.disc(x,y,10,10,screen.rgb(255,0,0))
t=os.clock()
while true do
ev,inx,iny=gui.event(0)  
   if ev==appStop then os.exit() end
   if os.clock()-t>0.5 then break end
   if    ((ev==penDown)
   and (inx>x-10) and (inx<x+10)
   and (iny>y-10) and (iny<y+10))
   then
       points=points+1
       screen.disc(x,y,10,10,screen.rgb(0,0,255))
       os.sleep(0.1)
       shots[n]=1
       break end
   end
   end
end

function trunk()
if points>high then
      newrecname=gui.input("You broke the record !  Enter your name:")
      person[1]=newrecname
      person[2]=points
      f=io.open("db:/Gamehigh.ber","r+")
      f:removerec(0)
      data=bin.pack("SB", person)
      f:createrec(string.len(data))
      f:openrec(0)
      f:write(data)
      f:closerec()
      f:close()
      high=points
      end
screen.clear()
gui.title("Hunt 'em down ! !")
screen.moveto(130,180)
print("Last game points: "..points)
screen.moveto(130,210)
print("High score: "..high.." by "..person[1])
screen.moveto(130,130)
startbtn=gui.control{type="button",text="Start",width=100}
screen.moveto(250,270)
quitbtn=gui.button("Quit")
screen.moveto(80,80)
gui.label("Press Start to begin...")
points=0
end


initfile()
trunk()
while true do
e,v=gui.event()
if e==appStop then os.exit() end
if e==ctlSelect and v==startbtn then
    play()
    trunk()
    end
if e==ctlSelect and v==quitbtn then os.exit() end
end


*********************************************************************


-- ** Reflecting ball on screen **  
-- ** You can also draw a full circle, but buffering makes it slightly faster.**

screen.clear(0)
bufempty=buffer.get(0,0,10,10)
screen.disc(5,5,5,5,16777215)
buffull=buffer.get(0,0,10,10)

function makecircle()
buffer.put(bufempty,xo,yo)
buffer.put(buffull,x,y)
end

screen.clear(0)
x=50+math.random(130)
y=50+math.random(130)
repeat
xd=math.random(3)-1
until xd~=0
repeat
yd=math.random(3)-1
until yd~=0

while true do
xo,yo=x,y
x=x+xd
y=y+yd
if x>315 then xd=math.random(3)-3
   elseif x<5 then xd=math.random(3)
   elseif y>315 then yd=math.random(3)-3
   elseif y<5 then yd=math.random(3)
   end
if gui.event(0)==appStop then break end
makecircle()
end


*********************************************************************


-- ** Draw on the screen **

screen.clear(0)
white=screen.rgb(255,255,255)
while true do  
  ev,x,y = gui.event()
  if ev==penDown then xo=x yo=y end
  if ev ==penMove  then
  screen.line(xo,yo,x,y,white)
  xo=x yo=y
  elseif ev == appStop then os.exit()
  end  
end


*********************************************************************


-- **  Using sound.tone and slider **

function ex()
screen.clear()
screen.moveto(70,150)
print("Thanks for using me...")
os.sleep(1)
os.exit()
end

function act()
screen.font(7)
screen.moveto(10,280)
print("                                      ")
screen.moveto(10,280)
screen.color(screen.rgb(200,0,0),bckgrnd)
print("Now playing...")
sound.tone(freq,dur,vol)
screen.moveto(10,280)
print("                                      ")
screen.moveto(10,280)
screen.color(screen.rgb(0,160,0),bckgrnd)
print("Finished.")
end

function pr()
screen.font(0)
screen.color(0,bckgrnd)
screen.moveto(240,147)
print("        ")
screen.moveto(240,147)
print(freq-1)
screen.moveto(260,187)
print("        ")
screen.moveto(260,187)
print(math.floor(dur/100)/10)
screen.moveto(260,227)
print("        ")
screen.moveto(260,227)
print(math.floor(vol*1.5625))
end

bckgrnd=screen.rgb(190,190,250)
screen.clear(bckgrnd)
screen.moveto(10,30)
screen.color(screen.rgb(0,0,200),bckgrnd)
screen.font(7)
print("H      I      G      H      A      U      D      I      O")
screen.line(10,55,310,55)
screen.font(0)
screen.color(0,bckgrnd)
btnbeep=gui.control{type="button",text="S o u n d",x=150,y=80,width=80,height=40,font=1}
btnquit=gui.control{type="button",text="QUIT",x=270,y=280,width=36,height=20,font=3}
screen.moveto(40,220)
v=gui.slider(200,64)
screen.moveto(40,180)
d=gui.slider(200,10000)
screen.moveto(40,140)
f=gui.slider(200,9999)
screen.moveto(2,227) print("Vol")
screen.moveto(2,187) print("Time")
screen.moveto(2,147) print("Freq")
screen.moveto(294,227) print("%")
screen.moveto(294,187) print("sec")
screen.moveto(294,147) print("Hz")
freq,dur,vol=10001,0,1
pr()
gui.setfocus(btnbeep)

while true do
ev,id,value=gui.event()
if ev==appStop then ex() end
if ev==ctlSelect and id==f then freq=10000+value end
if ev==ctlSelect and id==d then dur=value end
if ev==ctlSelect and id==v then vol=value end
if ev==ctlSelect and id==btnbeep then act() end
if ev==ctlSelect and id==btnquit then ex() end
pr()
end


**********************************************************************


-- ** Classic "Life"  loop **
-- ** Ofcourse, having a 16x16 grid makes the loop faster.. **

function init()
screen.clear()
cell={}
cellnext={}
for i=1,32 do cell[i]={} end
for i=1,32 do cellnext[i]={} end
for i=1,250 do
cell[math.random(32)][math.random(32)]=1
end
end

function drawworld()
screen.clear()
for x=1,32 do
for y=1,32 do
if cell[x][y]==1 then screen.box((x-1)*10,(y-1)*10,8,8) end
end
end
end

function tick()
for x=1,32 do
for y=1,32 do
sum=0
if x>1 and y>1 and cell[x-1][y-1]==1 then sum=sum+1 end
if y>1 and cell[x][y-1]==1 then sum=sum+1 end
if x<32 and y>1 and cell[x+1][y-1]==1 then sum=sum+1 end
if x>1 and cell[x-1][y]==1 then sum=sum+1 end
if x<32 and cell[x+1][y]==1 then sum=sum+1 end
if x>1 and y<32 and cell[x-1][y+1]==1 then sum=sum+1 end
if y<32 and cell[x][y+1]==1 then sum=sum+1 end
if x<32 and y<32 and cell[x+1][y+1]==1 then sum=sum+1 end
if sum<2 then cellnext[x][y]=0 end
if sum>3 then cellnext[x][y]=0 end
if (sum==2 or sum==3) and cell[x][y]==1 then cellnext[x][y]=1 end
if sum==3 and cell[x][y]==0 then cellnext[x][y]=1 end
end
end
cell=cellnext
end

init()
while true do
if gui.event(0)==appStop then os.exit() end
drawworld()
tick()
end


**********************************************************************


-- ** Buffers can be used to show BMP
-- ** files, but not jpg's...

screen.clear()
screen.moveto(70,50)
screen.font(7)
print("This is it !")
id,height,width=buffer.read("vfs0:/PALM/PROGRAMS/Plua/SRC/SUZUKIGSR600A-K7.bmp")  -- for example, my bike's pic..
buffer.put(id,0,0,3)
screen.moveto(100,100)
screen.font(0)
g=gui.button("This") -- you can have gui elements on a foreground..
screen.line(0,0,320,320) --...or draw something on them..
gui.main()


**********************************************************************


--  **  scrolling text like in eReader etc..  **

function newline()
buffer.use(vbuf)
screen.moveto(math.random(180),320)
print(math.random())
end

vbuf=buffer.new(320,340)
newline()

while true do
buffer.use()
for i=1,22 do
buffer.put(vbuf,0,-i)
--os.sleep(0.02) -- set the scrolling speed
if gui.event(0)==appStop then os.exit() end
end
buffer.free(vbuf)
vbuf=buffer.get(0,0,320,340)
newline()
end


**********************************************************************

END OF FILES...

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: You are welcome.. (and some more demo code)

jimmy joe jack
--- In [hidden email], "Berkant Atay" <berkant_atay@...> wrote:

>
> Happy to see you having started writing your home code, jimmyjoejack.. I also code on my Treo in bed (till my wife kicks me out)  :)
>
> Since I cannot upload files to the files section any more, I copy-pasted here some more demonstration codes I wrote. There are 9 programs separated with asterices. Just copy them in a new .txt file on your desktop, then copy these text files on your SD card's PALM\Programs\Plua\SRC folder, then change the extensions to lower case ".lua". You can access and run them in Plua after changing to "Card"...
>
> Here we go...
>
>
> *********************************************************************
>
> -- ** Combinatorial Mathematics **
>
> function fact(x)
>    local mult=1
>    for i=1,x do
>    mult=mult*i
>    end
>   return mult
> end
>
> function getnumbers()
>   local p=gui.gettext(num1field)
>   if p=="" then gui.alert("You cannot leave a field blank.") return nil,nil end
>   if tonumber(p)==nil then gui.alert("Only numbers.") return end
>   p=tonumber(p)
>   if p~=tonumber(string.format("%d", p)) then gui.alert("Integral numbers please.") return nil,nil end
>   local q=gui.gettext(num2field)
>   if q=="" then gui.alert("You cannot leave a field blank.") return nil,nil end
>   if tonumber(q)==nil then gui.alert("Only numbers.") return end
>   q=tonumber(q)
>   if q~=tonumber(string.format("%d", q)) then gui.alert("Integral numbers please.") return nil,nil end
>   if p<q then gui.alert("First argument cannot be smaller than the second.") return nil,nil end
>   return p,q
> end
>  
> function permu()
>   local p,q=getnumbers()
>   if p==nil or q==nil then return end
>   screen.moveto(0,200)
>   print("                                                                       ")
>   print("                                                                       ")
>   print("                                                                       ")
>   screen.moveto(0,200)
>   local k=fact(p)/fact(p-q)
>   s="   The permutation of  ( "..tostring(p).." , "..tostring(q).." )  is "
>   print(s)
>   print()
>   print("     ",k)
>   return
> end
>
> function combi()
>    local p,q=getnumbers()
>    if p==nil or q==nil then return end
>    screen.moveto(0,200)
>    print("                                                                        ")
>    print("                                                                        ")        
>    print("                                                                        ")
>    screen.moveto(0,200)
>    local k=fact(p)/(fact(q)*fact(p-q))
>    s="   The combination of  ( "..tostring(p).." , "..tostring(q).." )  is "
>    print(s)
>    print()
>    print("     ",k)
>    return
> end
>
> gui.title("COMBINATORIAL MATHEMATICS")
> screen.moveto(10,50)
> num1field=gui.field(1,10,10,"",not nil,nil)
> screen.moveto(140,50)
> num2field=gui.field(1,10,10,"",not nil,nil)
> screen.moveto(5,100)
> butcomb=gui.button("combination")
> screen.moveto(133,100)
> butperm=gui.button("permutation")
> screen.moveto(180,270)
> exitbtn=gui.button("Quit")
> screen.rect(6,48,92,28)
> screen.rect(132,48,92,28)
> gui.setfocus(num1field)
>
> while true do
>  ev,id=gui.event()
>   if ev==appStop then break end
>   if ev==ctlSelect and id==butperm then permu() end
>   if ev==ctlSelect and id==butcomb then combi() end
>   if ev==ctlSelect and id==exitbtn then os.exit() end
> end
>
>
> *********************************************************************
>
>
> -- ** Random colored disks, fun to watch.. **
>
> screen.clear()
> while true do
> x=math.random(320)
> y=math.random(320)
> c=screen.rgb(math.random()*256,math.random()*256,math.random()*256)
> r1=math.random(160)
> r2=math.random(160)
> screen.disc(x,y,r1,r2,c)
> ev=gui.event(0)
> if ev==appStop then break end
> end
>
>
> **********************************************************************
>
>
> --   **  Simple demostration game **
>
>
> function  initfile()
> points=0
> person={}
> f,numrec=io.open("db:/Gamehigh.ber","r+")
> if numrec==0 then person={"nobody",0}
>         data=bin.pack("SB", person)
>         f:createrec(string.len(data))
>         f:openrec(0)
>         f:write(data)
>         high=0
>         f:closerec() end
> f:openrec(0)
> data=f:read("*a")
> person=bin.unpack("SB", data)
> high=person[2]
> f:closerec()
> f:close()
> end
>
> function play()
> shots={}
> gui.destroy()
> for n=1,10 do
> gui.title("Points: "..points)
>   for i=1,n do
>      if shots[i]==1 then screen.disc(120+i*16,14,8,6,screen.rgb(0,255,0))
>      else screen.disc(120+i*16,14,8,6,screen.rgb(255,0,0))
>      end
>   end  
> os.sleep(0.1+3*math.random())
> x=math.random(300)+10
> y=math.random(270)+40
> screen.disc(x,y,10,10,screen.rgb(255,0,0))
> t=os.clock()
> while true do
> ev,inx,iny=gui.event(0)  
>    if ev==appStop then os.exit() end
>    if os.clock()-t>0.5 then break end
>    if    ((ev==penDown)
>    and (inx>x-10) and (inx<x+10)
>    and (iny>y-10) and (iny<y+10))
>    then
>        points=points+1
>        screen.disc(x,y,10,10,screen.rgb(0,0,255))
>        os.sleep(0.1)
>        shots[n]=1
>        break end
>    end
>    end
> end
>
> function trunk()
> if points>high then
>       newrecname=gui.input("You broke the record !  Enter your name:")
>       person[1]=newrecname
>       person[2]=points
>       f=io.open("db:/Gamehigh.ber","r+")
>       f:removerec(0)
>       data=bin.pack("SB", person)
>       f:createrec(string.len(data))
>       f:openrec(0)
>       f:write(data)
>       f:closerec()
>       f:close()
>       high=points
>       end
> screen.clear()
> gui.title("Hunt 'em down ! !")
> screen.moveto(130,180)
> print("Last game points: "..points)
> screen.moveto(130,210)
> print("High score: "..high.." by "..person[1])
> screen.moveto(130,130)
> startbtn=gui.control{type="button",text="Start",width=100}
> screen.moveto(250,270)
> quitbtn=gui.button("Quit")
> screen.moveto(80,80)
> gui.label("Press Start to begin...")
> points=0
> end
>
>
> initfile()
> trunk()
> while true do
> e,v=gui.event()
> if e==appStop then os.exit() end
> if e==ctlSelect and v==startbtn then
>     play()
>     trunk()
>     end
> if e==ctlSelect and v==quitbtn then os.exit() end
> end
>
>
> *********************************************************************
>
>
> -- ** Reflecting ball on screen **  
> -- ** You can also draw a full circle, but buffering makes it slightly faster.**
>
> screen.clear(0)
> bufempty=buffer.get(0,0,10,10)
> screen.disc(5,5,5,5,16777215)
> buffull=buffer.get(0,0,10,10)
>
> function makecircle()
> buffer.put(bufempty,xo,yo)
> buffer.put(buffull,x,y)
> end
>
> screen.clear(0)
> x=50+math.random(130)
> y=50+math.random(130)
> repeat
> xd=math.random(3)-1
> until xd~=0
> repeat
> yd=math.random(3)-1
> until yd~=0
>
> while true do
> xo,yo=x,y
> x=x+xd
> y=y+yd
> if x>315 then xd=math.random(3)-3
>    elseif x<5 then xd=math.random(3)
>    elseif y>315 then yd=math.random(3)-3
>    elseif y<5 then yd=math.random(3)
>    end
> if gui.event(0)==appStop then break end
> makecircle()
> end
>
>
> *********************************************************************
>
>
> -- ** Draw on the screen **
>
> screen.clear(0)
> white=screen.rgb(255,255,255)
> while true do  
>   ev,x,y = gui.event()
>   if ev==penDown then xo=x yo=y end
>   if ev ==penMove  then
>   screen.line(xo,yo,x,y,white)
>   xo=x yo=y
>   elseif ev == appStop then os.exit()
>   end  
> end
>
>
> *********************************************************************
>
>
> -- **  Using sound.tone and slider **
>
> function ex()
> screen.clear()
> screen.moveto(70,150)
> print("Thanks for using me...")
> os.sleep(1)
> os.exit()
> end
>
> function act()
> screen.font(7)
> screen.moveto(10,280)
> print("                                      ")
> screen.moveto(10,280)
> screen.color(screen.rgb(200,0,0),bckgrnd)
> print("Now playing...")
> sound.tone(freq,dur,vol)
> screen.moveto(10,280)
> print("                                      ")
> screen.moveto(10,280)
> screen.color(screen.rgb(0,160,0),bckgrnd)
> print("Finished.")
> end
>
> function pr()
> screen.font(0)
> screen.color(0,bckgrnd)
> screen.moveto(240,147)
> print("        ")
> screen.moveto(240,147)
> print(freq-1)
> screen.moveto(260,187)
> print("        ")
> screen.moveto(260,187)
> print(math.floor(dur/100)/10)
> screen.moveto(260,227)
> print("        ")
> screen.moveto(260,227)
> print(math.floor(vol*1.5625))
> end
>
> bckgrnd=screen.rgb(190,190,250)
> screen.clear(bckgrnd)
> screen.moveto(10,30)
> screen.color(screen.rgb(0,0,200),bckgrnd)
> screen.font(7)
> print("H      I      G      H      A      U      D      I      O")
> screen.line(10,55,310,55)
> screen.font(0)
> screen.color(0,bckgrnd)
> btnbeep=gui.control{type="button",text="S o u n d",x=150,y=80,width=80,height=40,font=1}
> btnquit=gui.control{type="button",text="QUIT",x=270,y=280,width=36,height=20,font=3}
> screen.moveto(40,220)
> v=gui.slider(200,64)
> screen.moveto(40,180)
> d=gui.slider(200,10000)
> screen.moveto(40,140)
> f=gui.slider(200,9999)
> screen.moveto(2,227) print("Vol")
> screen.moveto(2,187) print("Time")
> screen.moveto(2,147) print("Freq")
> screen.moveto(294,227) print("%")
> screen.moveto(294,187) print("sec")
> screen.moveto(294,147) print("Hz")
> freq,dur,vol=10001,0,1
> pr()
> gui.setfocus(btnbeep)
>
> while true do
> ev,id,value=gui.event()
> if ev==appStop then ex() end
> if ev==ctlSelect and id==f then freq=10000+value end
> if ev==ctlSelect and id==d then dur=value end
> if ev==ctlSelect and id==v then vol=value end
> if ev==ctlSelect and id==btnbeep then act() end
> if ev==ctlSelect and id==btnquit then ex() end
> pr()
> end
>
>
> **********************************************************************
>
>
> -- ** Classic "Life"  loop **
> -- ** Ofcourse, having a 16x16 grid makes the loop faster.. **
>
> function init()
> screen.clear()
> cell={}
> cellnext={}
> for i=1,32 do cell[i]={} end
> for i=1,32 do cellnext[i]={} end
> for i=1,250 do
> cell[math.random(32)][math.random(32)]=1
> end
> end
>
> function drawworld()
> screen.clear()
> for x=1,32 do
> for y=1,32 do
> if cell[x][y]==1 then screen.box((x-1)*10,(y-1)*10,8,8) end
> end
> end
> end
>
> function tick()
> for x=1,32 do
> for y=1,32 do
> sum=0
> if x>1 and y>1 and cell[x-1][y-1]==1 then sum=sum+1 end
> if y>1 and cell[x][y-1]==1 then sum=sum+1 end
> if x<32 and y>1 and cell[x+1][y-1]==1 then sum=sum+1 end
> if x>1 and cell[x-1][y]==1 then sum=sum+1 end
> if x<32 and cell[x+1][y]==1 then sum=sum+1 end
> if x>1 and y<32 and cell[x-1][y+1]==1 then sum=sum+1 end
> if y<32 and cell[x][y+1]==1 then sum=sum+1 end
> if x<32 and y<32 and cell[x+1][y+1]==1 then sum=sum+1 end
> if sum<2 then cellnext[x][y]=0 end
> if sum>3 then cellnext[x][y]=0 end
> if (sum==2 or sum==3) and cell[x][y]==1 then cellnext[x][y]=1 end
> if sum==3 and cell[x][y]==0 then cellnext[x][y]=1 end
> end
> end
> cell=cellnext
> end
>
> init()
> while true do
> if gui.event(0)==appStop then os.exit() end
> drawworld()
> tick()
> end
>
>
> **********************************************************************
>
>
> -- ** Buffers can be used to show BMP
> -- ** files, but not jpg's...
>
> screen.clear()
> screen.moveto(70,50)
> screen.font(7)
> print("This is it !")
> id,height,width=buffer.read("vfs0:/PALM/PROGRAMS/Plua/SRC/SUZUKIGSR600A-K7.bmp")  -- for example, my bike's pic..
> buffer.put(id,0,0,3)
> screen.moveto(100,100)
> screen.font(0)
> g=gui.button("This") -- you can have gui elements on a foreground..
> screen.line(0,0,320,320) --...or draw something on them..
> gui.main()
>
>
> **********************************************************************
>
>
> --  **  scrolling text like in eReader etc..  **
>
> function newline()
> buffer.use(vbuf)
> screen.moveto(math.random(180),320)
> print(math.random())
> end
>
> vbuf=buffer.new(320,340)
> newline()
>
> while true do
> buffer.use()
> for i=1,22 do
> buffer.put(vbuf,0,-i)
> --os.sleep(0.02) -- set the scrolling speed
> if gui.event(0)==appStop then os.exit() end
> end
> buffer.free(vbuf)
> vbuf=buffer.get(0,0,320,340)
> newline()
> end
>
>
> **********************************************************************
>
> END OF FILES...
>

Dynamite. And thanks again. I'm sure I'll be tapping these for tips soon.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Re: You are welcome.. (and some more demo code)

Dado Sutter-2-2
Thank you all for helping to keep pLua rocking !!

Best
Dado



On Fri, Jul 3, 2009 at 13:34, jimmy joe jack <[hidden email]>wrote:

>
>
> --- In [hidden email] <plua%40yahoogroups.com>, "Berkant Atay"
> <berkant_atay@...> wrote:
> >
> > Happy to see you having started writing your home code, jimmyjoejack.. I
> also code on my Treo in bed (till my wife kicks me out) :)
> >
> > Since I cannot upload files to the files section any more, I copy-pasted
> here some more demonstration codes I wrote. There are 9 programs separated
> with asterices. Just copy them in a new .txt file on your desktop, then copy
> these text files on your SD card's PALM\Programs\Plua\SRC folder, then
> change the extensions to lower case ".lua". You can access and run them in
> Plua after changing to "Card"...
> >
> > Here we go...
> >
> >
> > *********************************************************************
> >
> > -- ** Combinatorial Mathematics **
> >
> > function fact(x)
> > local mult=1
> > for i=1,x do
> > mult=mult*i
> > end
> > return mult
> > end
> >
> > function getnumbers()
> > local p=gui.gettext(num1field)
> > if p=="" then gui.alert("You cannot leave a field blank.") return nil,nil
> end
> > if tonumber(p)==nil then gui.alert("Only numbers.") return end
> > p=tonumber(p)
> > if p~=tonumber(string.format("%d", p)) then gui.alert("Integral numbers
> please.") return nil,nil end
> > local q=gui.gettext(num2field)
> > if q=="" then gui.alert("You cannot leave a field blank.") return nil,nil
> end
> > if tonumber(q)==nil then gui.alert("Only numbers.") return end
> > q=tonumber(q)
> > if q~=tonumber(string.format("%d", q)) then gui.alert("Integral numbers
> please.") return nil,nil end
> > if p<q then gui.alert("First argument cannot be smaller than the
> second.") return nil,nil end
> > return p,q
> > end
> >
> > function permu()
> > local p,q=getnumbers()
> > if p==nil or q==nil then return end
> > screen.moveto(0,200)
> > print(" ")
> > print(" ")
> > print(" ")
> > screen.moveto(0,200)
> > local k=fact(p)/fact(p-q)
> > s=" The permutation of ( "..tostring(p).." , "..tostring(q).." ) is "
> > print(s)
> > print()
> > print(" ",k)
> > return
> > end
> >
> > function combi()
> > local p,q=getnumbers()
> > if p==nil or q==nil then return end
> > screen.moveto(0,200)
> > print(" ")
> > print(" ")
> > print(" ")
> > screen.moveto(0,200)
> > local k=fact(p)/(fact(q)*fact(p-q))
> > s=" The combination of ( "..tostring(p).." , "..tostring(q).." ) is "
> > print(s)
> > print()
> > print(" ",k)
> > return
> > end
> >
> > gui.title("COMBINATORIAL MATHEMATICS")
> > screen.moveto(10,50)
> > num1field=gui.field(1,10,10,"",not nil,nil)
> > screen.moveto(140,50)
> > num2field=gui.field(1,10,10,"",not nil,nil)
> > screen.moveto(5,100)
> > butcomb=gui.button("combination")
> > screen.moveto(133,100)
> > butperm=gui.button("permutation")
> > screen.moveto(180,270)
> > exitbtn=gui.button("Quit")
> > screen.rect(6,48,92,28)
> > screen.rect(132,48,92,28)
> > gui.setfocus(num1field)
> >
> > while true do
> > ev,id=gui.event()
> > if ev==appStop then break end
> > if ev==ctlSelect and id==butperm then permu() end
> > if ev==ctlSelect and id==butcomb then combi() end
> > if ev==ctlSelect and id==exitbtn then os.exit() end
> > end
> >
> >
> > *********************************************************************
> >
> >
> > -- ** Random colored disks, fun to watch.. **
> >
> > screen.clear()
> > while true do
> > x=math.random(320)
> > y=math.random(320)
> > c=screen.rgb(math.random()*256,math.random()*256,math.random()*256)
> > r1=math.random(160)
> > r2=math.random(160)
> > screen.disc(x,y,r1,r2,c)
> > ev=gui.event(0)
> > if ev==appStop then break end
> > end
> >
> >
> > **********************************************************************
> >
> >
> > -- ** Simple demostration game **
> >
> >
> > function initfile()
> > points=0
> > person={}
> > f,numrec=io.open("db:/Gamehigh.ber","r+")
> > if numrec==0 then person={"nobody",0}
> > data=bin.pack("SB", person)
> > f:createrec(string.len(data))
> > f:openrec(0)
> > f:write(data)
> > high=0
> > f:closerec() end
> > f:openrec(0)
> > data=f:read("*a")
> > person=bin.unpack("SB", data)
> > high=person[2]
> > f:closerec()
> > f:close()
> > end
> >
> > function play()
> > shots={}
> > gui.destroy()
> > for n=1,10 do
> > gui.title("Points: "..points)
> > for i=1,n do
> > if shots[i]==1 then screen.disc(120+i*16,14,8,6,screen.rgb(0,255,0))
> > else screen.disc(120+i*16,14,8,6,screen.rgb(255,0,0))
> > end
> > end
> > os.sleep(0.1+3*math.random())
> > x=math.random(300)+10
> > y=math.random(270)+40
> > screen.disc(x,y,10,10,screen.rgb(255,0,0))
> > t=os.clock()
> > while true do
> > ev,inx,iny=gui.event(0)
> > if ev==appStop then os.exit() end
> > if os.clock()-t>0.5 then break end
> > if ((ev==penDown)
> > and (inx>x-10) and (inx<x+10)
> > and (iny>y-10) and (iny<y+10))
> > then
> > points=points+1
> > screen.disc(x,y,10,10,screen.rgb(0,0,255))
> > os.sleep(0.1)
> > shots[n]=1
> > break end
> > end
> > end
> > end
> >
> > function trunk()
> > if points>high then
> > newrecname=gui.input("You broke the record ! Enter your name:")
> > person[1]=newrecname
> > person[2]=points
> > f=io.open("db:/Gamehigh.ber","r+")
> > f:removerec(0)
> > data=bin.pack("SB", person)
> > f:createrec(string.len(data))
> > f:openrec(0)
> > f:write(data)
> > f:closerec()
> > f:close()
> > high=points
> > end
> > screen.clear()
> > gui.title("Hunt 'em down ! !")
> > screen.moveto(130,180)
> > print("Last game points: "..points)
> > screen.moveto(130,210)
> > print("High score: "..high.." by "..person[1])
> > screen.moveto(130,130)
> > startbtn=gui.control{type="button",text="Start",width=100}
> > screen.moveto(250,270)
> > quitbtn=gui.button("Quit")
> > screen.moveto(80,80)
> > gui.label("Press Start to begin...")
> > points=0
> > end
> >
> >
> > initfile()
> > trunk()
> > while true do
> > e,v=gui.event()
> > if e==appStop then os.exit() end
> > if e==ctlSelect and v==startbtn then
> > play()
> > trunk()
> > end
> > if e==ctlSelect and v==quitbtn then os.exit() end
> > end
> >
> >
> > *********************************************************************
> >
> >
> > -- ** Reflecting ball on screen **
> > -- ** You can also draw a full circle, but buffering makes it slightly
> faster.**
> >
> > screen.clear(0)
> > bufempty=buffer.get(0,0,10,10)
> > screen.disc(5,5,5,5,16777215)
> > buffull=buffer.get(0,0,10,10)
> >
> > function makecircle()
> > buffer.put(bufempty,xo,yo)
> > buffer.put(buffull,x,y)
> > end
> >
> > screen.clear(0)
> > x=50+math.random(130)
> > y=50+math.random(130)
> > repeat
> > xd=math.random(3)-1
> > until xd~=0
> > repeat
> > yd=math.random(3)-1
> > until yd~=0
> >
> > while true do
> > xo,yo=x,y
> > x=x+xd
> > y=y+yd
> > if x>315 then xd=math.random(3)-3
> > elseif x<5 then xd=math.random(3)
> > elseif y>315 then yd=math.random(3)-3
> > elseif y<5 then yd=math.random(3)
> > end
> > if gui.event(0)==appStop then break end
> > makecircle()
> > end
> >
> >
> > *********************************************************************
> >
> >
> > -- ** Draw on the screen **
> >
> > screen.clear(0)
> > white=screen.rgb(255,255,255)
> > while true do
> > ev,x,y = gui.event()
> > if ev==penDown then xo=x yo=y end
> > if ev ==penMove then
> > screen.line(xo,yo,x,y,white)
> > xo=x yo=y
> > elseif ev == appStop then os.exit()
> > end
> > end
> >
> >
> > *********************************************************************
> >
> >
> > -- ** Using sound.tone and slider **
> >
> > function ex()
> > screen.clear()
> > screen.moveto(70,150)
> > print("Thanks for using me...")
> > os.sleep(1)
> > os.exit()
> > end
> >
> > function act()
> > screen.font(7)
> > screen.moveto(10,280)
> > print(" ")
> > screen.moveto(10,280)
> > screen.color(screen.rgb(200,0,0),bckgrnd)
> > print("Now playing...")
> > sound.tone(freq,dur,vol)
> > screen.moveto(10,280)
> > print(" ")
> > screen.moveto(10,280)
> > screen.color(screen.rgb(0,160,0),bckgrnd)
> > print("Finished.")
> > end
> >
> > function pr()
> > screen.font(0)
> > screen.color(0,bckgrnd)
> > screen.moveto(240,147)
> > print(" ")
> > screen.moveto(240,147)
> > print(freq-1)
> > screen.moveto(260,187)
> > print(" ")
> > screen.moveto(260,187)
> > print(math.floor(dur/100)/10)
> > screen.moveto(260,227)
> > print(" ")
> > screen.moveto(260,227)
> > print(math.floor(vol*1.5625))
> > end
> >
> > bckgrnd=screen.rgb(190,190,250)
> > screen.clear(bckgrnd)
> > screen.moveto(10,30)
> > screen.color(screen.rgb(0,0,200),bckgrnd)
> > screen.font(7)
> > print("H I G H A U D I O")
> > screen.line(10,55,310,55)
> > screen.font(0)
> > screen.color(0,bckgrnd)
> > btnbeep=gui.control{type="button",text="S o u n
> d",x=150,y=80,width=80,height=40,font=1}
> >
> btnquit=gui.control{type="button",text="QUIT",x=270,y=280,width=36,height=20,font=3}
> > screen.moveto(40,220)
> > v=gui.slider(200,64)
> > screen.moveto(40,180)
> > d=gui.slider(200,10000)
> > screen.moveto(40,140)
> > f=gui.slider(200,9999)
> > screen.moveto(2,227) print("Vol")
> > screen.moveto(2,187) print("Time")
> > screen.moveto(2,147) print("Freq")
> > screen.moveto(294,227) print("%")
> > screen.moveto(294,187) print("sec")
> > screen.moveto(294,147) print("Hz")
> > freq,dur,vol=10001,0,1
> > pr()
> > gui.setfocus(btnbeep)
> >
> > while true do
> > ev,id,value=gui.event()
> > if ev==appStop then ex() end
> > if ev==ctlSelect and id==f then freq=10000+value end
> > if ev==ctlSelect and id==d then dur=value end
> > if ev==ctlSelect and id==v then vol=value end
> > if ev==ctlSelect and id==btnbeep then act() end
> > if ev==ctlSelect and id==btnquit then ex() end
> > pr()
> > end
> >
> >
> > **********************************************************************
> >
> >
> > -- ** Classic "Life" loop **
> > -- ** Ofcourse, having a 16x16 grid makes the loop faster.. **
> >
> > function init()
> > screen.clear()
> > cell={}
> > cellnext={}
> > for i=1,32 do cell[i]={} end
> > for i=1,32 do cellnext[i]={} end
> > for i=1,250 do
> > cell[math.random(32)][math.random(32)]=1
> > end
> > end
> >
> > function drawworld()
> > screen.clear()
> > for x=1,32 do
> > for y=1,32 do
> > if cell[x][y]==1 then screen.box((x-1)*10,(y-1)*10,8,8) end
> > end
> > end
> > end
> >
> > function tick()
> > for x=1,32 do
> > for y=1,32 do
> > sum=0
> > if x>1 and y>1 and cell[x-1][y-1]==1 then sum=sum+1 end
> > if y>1 and cell[x][y-1]==1 then sum=sum+1 end
> > if x<32 and y>1 and cell[x+1][y-1]==1 then sum=sum+1 end
> > if x>1 and cell[x-1][y]==1 then sum=sum+1 end
> > if x<32 and cell[x+1][y]==1 then sum=sum+1 end
> > if x>1 and y<32 and cell[x-1][y+1]==1 then sum=sum+1 end
> > if y<32 and cell[x][y+1]==1 then sum=sum+1 end
> > if x<32 and y<32 and cell[x+1][y+1]==1 then sum=sum+1 end
> > if sum<2 then cellnext[x][y]=0 end
> > if sum>3 then cellnext[x][y]=0 end
> > if (sum==2 or sum==3) and cell[x][y]==1 then cellnext[x][y]=1 end
> > if sum==3 and cell[x][y]==0 then cellnext[x][y]=1 end
> > end
> > end
> > cell=cellnext
> > end
> >
> > init()
> > while true do
> > if gui.event(0)==appStop then os.exit() end
> > drawworld()
> > tick()
> > end
> >
> >
> > **********************************************************************
> >
> >
> > -- ** Buffers can be used to show BMP
> > -- ** files, but not jpg's...
> >
> > screen.clear()
> > screen.moveto(70,50)
> > screen.font(7)
> > print("This is it !")
> >
> id,height,width=buffer.read("vfs0:/PALM/PROGRAMS/Plua/SRC/SUZUKIGSR600A-K7.bmp")
> -- for example, my bike's pic..
> > buffer.put(id,0,0,3)
> > screen.moveto(100,100)
> > screen.font(0)
> > g=gui.button("This") -- you can have gui elements on a foreground..
> > screen.line(0,0,320,320) --...or draw something on them..
> > gui.main()
> >
> >
> > **********************************************************************
> >
> >
> > -- ** scrolling text like in eReader etc.. **
> >
> > function newline()
> > buffer.use(vbuf)
> > screen.moveto(math.random(180),320)
> > print(math.random())
> > end
> >
> > vbuf=buffer.new(320,340)
> > newline()
> >
> > while true do
> > buffer.use()
> > for i=1,22 do
> > buffer.put(vbuf,0,-i)
> > --os.sleep(0.02) -- set the scrolling speed
> > if gui.event(0)==appStop then os.exit() end
> > end
> > buffer.free(vbuf)
> > vbuf=buffer.get(0,0,320,340)
> > newline()
> > end
> >
> >
> > **********************************************************************
> >
> > END OF FILES...
> >
>
> Dynamite. And thanks again. I'm sure I'll be tapping these for tips soon.
>
>  
>


[Non-text portions of this message have been removed]

Loading...