|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
You are welcome.. (and some more demo code)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... |
|
|
Re: You are welcome.. (and some more demo code)--- In plua@..., "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. |
|
|
Re: Re: You are welcome.. (and some more demo code)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] |
| Free embeddable forum powered by Nabble | Forum Help |