Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Chockosta

Pages: 1 [2]
16
TI-Nspire / [Lua] RayCaster
« on: July 11, 2011, 12:00:35 pm »
Hello guys !

With the OS 3, we had no mean to have 3D games on our calcs. This was a shame, because it's really funny when people are amazed by on-calc 3D stuff. (Actually, there is already Make3D by Levak)
But now, the first raycaster engine in Lua is released !
It's only a demo, you can move in a small 3D world in greyscale (I'll add colors).
Since Lua is interpreted, it's not really fast. So it's not very good-looking, because I cast one ray for two-pixels-wide columns...
Unfortunately, textures are impossible (it would become too much slow)

I plan to do a 3D game with this little engine... But nDoom will stay really really better than it.
(I attach the released demo and two screenies. Enjoy !)

17
Other Calculators / Lua Alien Invaders
« on: June 23, 2011, 02:41:07 am »
Lua Alien Invaders



http://www.omnimaga.org/index.php?action=downloads;sa=view;down=685

The famous "space invaders" game in Lua for the TI-Nspire.
This game works with the OS 3.0.1 & 3.0.2
If you beat the high-score, save the document when closing it.
The controls are the arrows to control the spaceship and tab to shoot.
Read the readme.txt for more info.


18
TI-Nspire / [Lua] Bobby Carrot
« on: June 18, 2011, 09:20:50 am »
Hi everybody !
I introduce here my second project in Lua (after my space invaders) : Bobby Carrot.
It's a mobile game which I try to port to the Nspire.
It's a puzzle game about a little rabbit who has to eat all the carrots of each level.
I made the menu, the sprites, the level displaying and the scrolling. It remains the tiles actions and 48 levels :)
(I'm going to do a level creator in C)

First, it was going to be my contest entry. But my free version of Nspire student software expires in 18 days, so I give up (I'll have to ask someone to make the .tns for me, and I can't share the code if it's a contest entry)...  :'(

The level creator is attached, if you know the game, try it. There's a readme in the ZIP file.

19
TI-Nspire / [Lua] Space Invaders
« on: June 03, 2011, 02:56:02 pm »
Hello everybody !

That's my first post here, so I'll try to introduce myself.
First, I'm French. I am a very bad English speaker (well, I'm fifteen and our English teacher sucks) so I apologize for all the nonsenses and mistakes that I'll do.
I was a member of TI-Bank, and I left this website because of all the troubles (fights between admins, etc)
So the most interesting website about calculators was Omnimaga, and I registered.
I have a TI-83+ and a TI-Nspire (Non-CAS & clickpad), and I code in Axe, in C for Nspire and in Lua. I also program in C with OpenGL on my PC, but that's not really interesting.
Well, I think I've enough talked about myself.

I made this post because I wanted feedbacks (not sure about this word) for my newest project, a Space Invaders game in Lua.
It looks like the original game, excepted that there's only one kind of enemies, and there's no "houses". Also, the enemies doesn't go faster as they go down, but the speed increases with the level.

The player can shoot with the up arrow, but that's not really convenient. If you had any better idea...
Also, I've never tried it on a calc. I don't have any CX and I use the OS 2.0.1 on my clickpad. If you could try it on your calc (and post your hi-score !)
EDIT : final version, updated.

Thank you,
Chockosta (Loic Pujet)

Lua code (Edited, final version):
Code: [Select]
function on.charIn(ch)
if ch=="r" then
blocks={5,5,5,5,5,5,5,5,5,5,5,5}
blockAttacked=0
game="notfinished"
score=0
player=100
shotX=0
shotY=0
level=1
wait=0.04
aliensDir="right"
down="no"
aliensX={}
aliensY={}
shotsX={}
shotsY={}
lives=3
for i=1,21,1 do
aliensX[i]=(i-1)%7*31+1
aliensY[i]=math.floor((i-1)/7)*25+10
shotsX[i]=aliensX[i]
shotsY[i]=200
end
end
if ch=="c" then
originalColors=not originalColors
end
end

function blocktest(x,y)
blockAttacked=0
if y>170 and y<177 then
if x>30 and x<40 and blocks[1]>0 then
blockAttacked=1
elseif x>40 and x<=50 and blocks[2]>0 then
blockAttacked=2
elseif x>50 and x<=60 and blocks[3]>0 then
blockAttacked=3
elseif x>60 and x<=70 and blocks[4]>0 then
blockAttacked=4
elseif x>140 and x<=150 and blocks[5]>0 then
blockAttacked=5
elseif x>150 and x<=160 and blocks[6]>0 then
blockAttacked=6
elseif x>160 and x<=170 and blocks[7]>0 then
blockAttacked=7
elseif x>170 and x<=180 and blocks[8]>0 then
blockAttacked=8
elseif x>250 and x<=260 and blocks[9]>0 then
blockAttacked=9
elseif x>260 and x<=270 and blocks[10]>0 then
blockAttacked=10
elseif x>270 and x<=280 and blocks[11]>0 then
blockAttacked=11
elseif x>280 and x<=290 and blocks[12]>0 then
blockAttacked=12
end
end
end


on.charIn("r")


function on.arrowLeft()
if player>0 then
player=player-10
end
end
function on.arrowRight()
if player<290 then
player=player+10
end
end
function on.tabKey()
if shotY<=0 then
shotY=195
shotX=player+13
end
end


function on.paint(gc)
if originalColors then
gc:setColorRGB(0,0,0)
gc:fillRect(0,0,platform.window:width(),platform.window:height())
end

if not originalColors then gc:setColorRGB(0,0,0)
else gc:setColorRGB(255,255,255) end
gc:setPen("thin","smooth")
gc:setFont("sansserif","r",8)
gc:drawString("Lua Alien Invaders - Par Loic Pujet",10,200,"top")

if game=="notfinished" then
if not originalColors then gc:setColorRGB(200,0,0)
else gc:setColorRGB(255,255,255) end
for i=1,21,1 do
if aliensY[i]~=0 then
gc:drawArc(aliensX[i]+4,aliensY[i]-9,10,10,0,360)
gc:fillArc(aliensX[i]-5,aliensY[i]-4,28,8,0,360)
end
end

if not originalColors then gc:setColorRGB(0,0,200)
else gc:setColorRGB(255,255,0) end
for i=1,21,1 do
if shotsY[i]<200 then
gc:fillRect(shotsX[i],shotsY[i],2,5)
end
end
if shotY>0 then
gc:fillRect(shotX,shotY,4,6)
end

if not originalColors then gc:setColorRGB(100,0,255)
else gc:setColorRGB(0,255,0) end
gc:fillRect(player,195,30,10)
gc:fillRect(player+13,191,4,4)
gc:setFont("sansserif","r",10)
gc:drawString("Lives:"..tostring(lives).." Score:"..tostring(score).." Level:"..tostring(level),0,0,"top")

if not originalColors then add=3
else add=0 end
for i=1,12,1 do
if blocks[i]>0 then
gc:fillRect(i*10+math.floor((i-1)/4)*70+20,180-blocks[i]*2,10,blocks[i]*2)
end
end
else
if var.recall("highscore")==nil then
var.store("highscore",0)
else
if var.recall("highscore")<score then
var.store("highscore",score)
document.markChanged()
end
end
if not originalColors then gc:setColorRGB(0,0,0)
else gc:setColorRGB(255,255,255) end
gc:setFont("sansserif","b",15)
gc:drawString("Score : "..tostring(score).."        High score : "..tostring(var.recall("highscore")),50,50, "top")
if not originalColors then gc:setColorRGB(0,0,255) end
if locale.name()=="fr" then
gc:drawString("Appuyez sur R pour rejouer",50,150,"top")
else
gc:drawString("Press R to try again",80,150,"top")
end
end

if wait>0.01 then
timer.start(wait)
else
timer.start(0.01)
end

end


function on.timer()
timer.stop()

if game=="notfinished" then
if aliensDir=="right" then
for i=1,21,1 do
if aliensY[i]>0 then
aliensX[i]=aliensX[i]+1
end
end
else
for i=1,21,1 do
if aliensY[i]>0 then
aliensX[i]=aliensX[i]-1
end
end
end

if aliensDir=="right" then
for i=1,21,1 do
if aliensX[i]>295 then
down="yes"
end
end
else
for i=1,21,1 do
if aliensX[i]<5 then
down="yes"
end
end
end

if down=="yes" then
down="no"
for i=1,21,1 do
if aliensY[i]>0 then
aliensY[i]=aliensY[i]+25
end
end
if aliensDir=="left" then
aliensDir="right"
else
aliensDir="left"
end
end

for i=1,21,1 do
if aliensY[i]>180 then
game="finished"
end

if shotsY[i]>=200 and aliensY[i]~=0 then
if math.random(1,100)==5 then
shotsY[i]=aliensY[i]+math.random(1,10)
shotsX[i]=aliensX[i]
end
else
shotsY[i]=shotsY[i]+3
end

blocktest(shotsX[i],shotsY[i])
if blockAttacked>0 then
shotsY[i]=201
blocks[blockAttacked]=blocks[blockAttacked]-1
end

if shotsY[i]<200 then
if shotsY[i]>195 and shotsX[i]>player and shotsX[i]<player+30 then
lives=lives-1
shotsY[i]=200
end
end

if shotY>0 and shotY>aliensY[i]-5 and shotY<aliensY[i]+5 and shotX>aliensX[i]-10 and shotX<aliensX[i]+21 then
aliensY[i]=0
aliensX[i]=100
shotY=0
score=score+1
end
end

blocktest(shotX,shotY)
if blockAttacked>0 then
shotY=-1
blocks[blockAttacked]=blocks[blockAttacked]-1
end

if shotY>=0 then
shotY=shotY-5
end

if lives<=0 then
game="finished"
end


wintest=0
for i=1,21,1 do
wintest=wintest+aliensY[i]
end

if wintest==0 then
if wait>0.01 then
wait=wait-0.005
end
level=level+1
aliensDir="right"
down="no"
for i=1,21,1 do
aliensX[i]=(i-1)%7*31+1
aliensY[i]=math.floor((i-1)/7)*25+10
shotsX[i]=aliensX[i]
shotsY[i]=200
end
end
end

platform.window:invalidate()
end

I attached the .tns It works on OS 3.0.1 and OS 3.0.2 (edited : bug fixed)

Pages: 1 [2]