« Return to Thread: You are welcome.. (and some more demo code)

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

by Dado Sutter-2 :: Rate this Message:

Reply to Author | View in Thread

Thank you all for helping to keep pLua rocking !!

Best
Dado



On Fri, Jul 3, 2009 at 13:34, jimmy joe jack <wildcard_seven@...>wrote:

>
>
> --- In plua@... <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]

 « Return to Thread: You are welcome.. (and some more demo code)