Omnimaga
Calculator Community => TI Calculators => Lua => Topic started by: cypressx1 on August 02, 2011, 08:25:53 am
-
Since l don't have enough posts to upload the file,l'll upload the code ,if you're interested in it, you can try it.
Code: [lua]
x=0 T,F=0,0 b="" u=0 t=0
aa=math.random(1,10)
bb=math.random(1,10) ab=aa+bb
ts=0.06 life=10 level="learner"
function on.charIn(char)
mm=timer.getMilliSecCounter()
ch=char
if x>130 then u=1 t=t+1 end
end
function loop()
if x>220 then x=0 t=0 u=0
aa=math.random(1,10)
bb=math.random(1,10) ab=aa+bb
draw1,draw2=0,0
return loop() end end
draw=class()
function draw:paint(gc)
gc:setPen("thick","dotted")
gc:drawRect(60,150,200,50)
if draw1==1 then
gc:setColorRGB(180,180,180)
gc:fillRect(60,150,200,50)
if mm+90<timer.getMilliSecCounter()
then draw1=0 end
end
if draw2==1 then
gc:setColorRGB(20,20,20)
gc:fillRect(60,150,200,50)
if mm+90<timer.getMilliSecCounter()
then draw2=0 end
end
end
function judge()
if x>130 and x<200 and ab>10 and u==1 then
if ch=="6" then b="true"
elseif ch~="6" and ch~="a" and ch~="b" and ch~="c" and ch~="d" and ch~="p" then b="false" end
end
if x>130 and x<200 and ab<10 and u==1 then
if ch=="4" then b="true"
elseif ch~="4" and ch~="a" and ch~="b" and ch~="c" and ch~="d" and ch~="p" then b="false" end
end
if x>130 and x<200 and ab==10 and u==1 then
if ch=="5" then b="true"
elseif ch~="5" and ch~="a" and ch~="b" and ch~="c" and ch~="d" and ch~="p" then b="false" end
end
--if u==0 and t==0 then b="false" t=1 end
if b=="true" and t==1 then
T=T+1 b="" u=0 draw1=1 end
if b=="false" and t==1 then
F=F+1 b="" u=0 draw2=1 end
end
function on.paint(gc)
draw:paint(gc)
gc:setColorRGB(0,0,0)
gc:setFont("sansserif","bi",30)
gc:drawString(aa.." + "..bb,110,x,"top")
--gc:setColorRGB(100,100,100)
--gc:drawString(aa.." + "..bb,110,x-30,"top")
gc:setFont("sansserif","bi",10)
gc:drawString("T: "..T.." ".."F: "..F,0,15,"top")
gc:drawString("u: "..u,0,30,"top")
gc:drawString("t: "..t,0,45,"top")
gc:drawString("ab: "..ab,0,60,"top")
gc:drawString("x: "..x,0,75,"top")
gc:drawString("life: "..life,0,90,"top")
gc:drawString("level: "..level,0,105,"top")
if F>life then
highscore()
gc:fillRect(0,0,330,250)
gc:setColorRGB(255,255,255)
gc:setFont("sansserif","bi",30)
gc:drawString("You Lost",95,50,"top")
gc:setFont("sansserif","bi",15)
gc:drawString("your score: "..T,120,110,"top")
gc:drawString("highscore: "..var.recall("highscore"),120,130,"top")
gc:drawString("Press R to restart",170,180,"top")
if ch=="r" then x=300 T=0 F=0
return loop() end
end
timer.start(ts)
if ch=="p" then timer.stop() end
if ch=="a" then ts=0.05 life=8 level="easy" end
if ch=="b" then ts=0.04 life=6 level="medium"end
if ch=="c" then ts=0.03 life=5 level="hard" end
if ch=="d" then ts=0.02 life=3 level="extreme" end
end
function on.enterKey()
ch="xx"
timer.start(ts)
platform.window:invalidate()
end
function highscore()
if var.recall("highscore")==nil or T>var.recall("highscore")
then var.store("highscore",T)
end
var.monitor("highscore")
end
--[[function on.varChange(varlist)
local highscore=var.recall("highscore")
if not highscore then return -3 end
if type(highscore)~="number" then return -2 end
if highscore<0 then return -1 end
end]]
function on.timer()
local ss=0.45*T+3
if ss>15 then ss=15 end
x=x+(ss)
loop()
judge()
platform.window:invalidate()
end
And of course, l didn't finish it,if you have some good ideas,you can tell me.
[4]-----"<10"
[5]-----"=10"
[6]-----">10"
[a\b\c\d]------"change speed"
[p\enter]-------"pause\continue"
-
Hey,
This game is a great idea ! :)
At first I didn't realize I had to enter either 4/5/6 so I thought it didn't work :P
So, for people who like screenshots :
(http://i.imgur.com/O9H3E.jpg)
One thing I would like to tell you especially is that your code should be cleaner (it's better for us readers and especially for you).
For example, indentation (maybe that's just because the forum didn't get it right, though).
Also, you're making a lot of tests (if ... ~= ... etc.) that might be completely rewritten in a function to compare directly all the numbers/variables you're using. Thus, saving cpu, battery, time, game speed etc.
(the function judge() especially can be very optimized, I think)
In conclusion, you're saying it's your first Lua game, so I must say it's a very good start. You understood how the nspire lua API worked and your document can be used for educational purposes, so that's also a good point :)
Now, what about making the game more difficult with other calculations than basic additions ?
;)
NB : I just found a bug (idk if that's because I tested it on the computer software ant not a calculator...) : the text is not centered at the game over screen :
(http://i.imgur.com/5xAxt.jpg)
-
I think instead of "true" and "false", you should use the actual boolean values true and false. You can use these directly in conditional statements without having to compare them to anything. Instead of b=="true" you can just use b, and instead of b=="false" you can use not b.
-
That looks interesting, To bad I don't have ti-nspire.
-
oh!! thanks for your advice. l'll fix it.
-
Since l don't have enough posts to upload the file,l'll upload the code ,if you're interested in it, you can try it.
You can attach a file to the main post, I don't think that has a post limit
-
What?! it really works.l have been uploaded it
-
/me Lost the game ...
<_<
-
what's the score?
-
/me Lost the game ...
<_<
what's the score?
It was a j/k, if you want.
http://ourl.ca/12003
-
Er...it's off limits to me
-
For a first program, this is definitely very good. Nice job, cypress! :)