Omnimaga

Omnimaga => News => Topic started by: DJ Omnimaga on August 01, 2012, 05:03:03 pm

Title: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: DJ Omnimaga on August 01, 2012, 05:03:03 pm
There are still some quite cool programs coming out lately on Casio calculators. While juju is busy working on PrizmIO (http://ourl.ca/16598/312153;topicseen#new) and ruler501 on pSDL (http://ourl.ca/16417), which are ports of their respective TI-Nspire counterparts, NspireIO and nSDL, Eiyeron has just released a new version of his Bust-a-Move clone on the same platform!

(http://img.removedfromgame.com/imgs/bustamove.png)

The game is still in demo stages, but it's fully playable and you can already play through a bunch of levels. The topic about it, including the download, can be found here (http://ourl.ca/16661).

Meanwhile, on Planète-Casio, a new LuaFX game came out for the FX-9860G series: Bloxorz, a port of the popular computer game!

(http://www.planet-casio.com/files/program_images/1945-bloxorz.jpg)

Although it's still in demo stages as well, it's also very playable and looks very promising. It can be downloaded here (http://www.planet-casio.com/Fr/programmes/programme1945-1-bloxorz-purobaz-luafx.html)!
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Sorunome on August 01, 2012, 05:08:28 pm
Is the top one bubble shooter? it's looking cool!

And I like the lower game too, that thinking game :P

Now i just need a prizm/me runs
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Scipi on August 01, 2012, 08:20:51 pm
/me really needs to dig out and recharge his prizm

I haven't touched it since the semester ended :/
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: ruler501 on August 01, 2012, 08:27:06 pm
/me really needs to dig out and recharge his prizm
charge? are there rechargeable batteries for the prizm I've never seen them but I'd love to get some
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Scipi on August 01, 2012, 08:39:39 pm
Oh, wait I thought the prizm was like the Nspire in that it's rechargeable :P

My bad. Looks like I'll just dig out some batteries then.
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: mushmoom on August 01, 2012, 08:46:00 pm
 :crazy:
This is amazing!  I shall have to borrow my friend's Prizm and dance all over it  :w00t:  Keep up the awesome work!
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Eiyeron on August 02, 2012, 04:09:25 am
Oo (a newsof my game)
Thanks guys, be surethat I'll finish it!
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Jim Bauwens on August 02, 2012, 04:09:42 am
I wonder if that Bloxorg clone shares any code with the TI-Nspire Lua version.
Anyway cool :D
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Nick on August 02, 2012, 04:17:40 am
I wonder if that Bloxorg clone shares any code with the TI-Nspire Lua version.

i'm wondering too xp

i love the bust-a-move :o i tried it in lua, but didn't manage to get the collision detection to work nicely..great you got it working :) it looks amazing
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Jim Bauwens on August 02, 2012, 04:26:05 am
Here is the code I found for it:

Spoiler For Code:


-- Bloxorz by Purobaz
-- 48h CPC #4
-- Planete-Casio.fr
-- Thanks to Vebveb for LuaFX
-- useful functions
local prt=graydraw.text
local sub=string.sub
local tonb=base.tonumber
local tostr=misc.tostring2
local wait=misc.wait
-- variables
local level=1
local loop,choice
local nb
local i,j,k
   -- map
local map
local map_info={} -- width, height, x, y
local map_end={}
   -- block
local block={} -- x, y, position (1~3)
local block_move={ -- depend on keys
      {0,-1,1},
      {2,0,3},
      {0,1,1},
      {-1,0,3}
      {0,-2,3},
      {1,0,2},
      {0,1,3},
      {-1,0,2}
      {0,-1,2},
      {1,0,1},
      {0,2,2},
      {-2,0,1}
local block_pst={
   {1,0},
   {0,-1},
   {0,0}
local block_size={
   {0,-6},
   {-3,-6},
   {0,-8}
-- sprites
local sprite_map={
local sprite_block={
--functions
function load_map()
   if level==1 then
      map="111114352333350511111233"
      map_info={8,3,25,30}
      block={1,2,3}
   elseif level==2 then
      map="111114511455555555435335555404114555233112333"
      map_info={9,5,25,30}
      block={6,1,1}
   elseif level==3 then
      map="111111111143555455111111145533404533333333311233311111111111"
      map_info={15,4,25,42}
      block={12,2,2}
   elseif level==4 then
      map="1145511455435334043123311"
      map_info={5,5,25,30}
      block={5,2,3}
   elseif level==5 then
      map="45555433334111141111411112553512504112333"
      map_info={5,8,25,30}
      block={5,2,2}
   elseif level==6 then
      map="1455514043143311411123333"
      map_info={5,5,25,30}
      block={5,5,3}
   elseif level==7 then
      map="455111111145555511112555555551123335535511111250431111112331"
      map_info={10,6,25,30}
      block={2,2,3}
   elseif level==8 then
      map="111111455335511455511455114511455533333114555455511111114504233311111112555111111111111233"
      map_info={15,6,25,40}
      block={2,3,3}
   elseif level==9 then
      map="1411111114111111455114554553350423311233"
      map_info={8,5,25,30}
      block={2,1,3}
   end
function draw_map()
   for j=1,map_info[2],1 do
      for i=1,map_info[1],1 do
         nb=tonb(sub(map,((j-1)*map_info[1]+i),((j-1)*map_info[1]+i)))
         if nb==0 then map_end={i,j}
         elseif nb>1 then
            spritexy map_info[3]+4*i+4*j,map_info[4]+4*j-3*i,sprite_map[nb-1]
            refresh
            wait(1)
         end
      end
   end
function intro()
local stage="
8p8p
8p8p
8p8p
?p?p
?p?p
?p?p
p80( (
P( (`
 0P8p
local number={
`5@=@
`5P=P
`5@=@
`5@=@
   clear nil
   spritexy 14, 20, stage
   spritexy 87, 20, number[int(level/10)+1]
   spritexy 100, 20, number[int(level%10)+1]
   refresh
   wait(30)
function menu()
local menu="
8888(
8888
8888(
@@@@
local cursor="
   clear nil
   spritexy 10, 2, menu
   state(false)
   choice=0
   i=1
   repeat
      clear nil
      state(true)
      spritexy 33, 13+13*i, cursor
      refresh
      repeat
         wait(5)
      until key(5) or key(39) or key(38) or key(36) or key(44)
      if key(39) and i>1 then i=i-1
      elseif key(38) and i<3 then i=i+1
      elseif key(5) then choice=i
      elseif key(36) or key(44) then choice=4
      end
   until choice~=0 -- end of the menu
-- game
function game()
   repeat
      intro()
      load_map()
      clear nil
      draw_map()
      state(false)
      loop=0
      repeat
         clear nil
         state(true)
         spritexy map_info[3]+4*block[1]+4*block[2]+block_size[block[3]][1],map_info[4]+4*block[2]-3*block[1]+block_size[block[3]][2],sprite_block[block[3]]
         refresh
         repeat
            wait(5)
         until key(39) or key(40) or key(38) or key(37) or key(36) or key(44) or key(1)
         if key(1) then
         level=level+1
         loop=1
         elseif key(36) or key(44) then -- exit or menu
            loop=3
         else
            if key(39) then k=1
            elseif key(40) then k=2
            elseif key(38) then k=3
            elseif key(37) then k=4
            end
            block={block[1]+block_move[block[3]][k][1],block[2]+block_move[block[3]][k][2],block_move[block[3]][k][3]} -- move the block
            
            if block[1]==map_end[1] and block[2]==map_end[2] and block[3]==3 then -- winner
               level=level+1
               loop=1
               if level>9 then loop=3 end
            elseif ((block[2]-1)*map_info[1]+block[1])>=1 and ((block[2]-1)*map_info[1]+block[1])<=#map  -- looser
               and ((block[2]-1+block_pst[block[3]][2])*map_info[1]+block[1]+block_pst[block[3]][1])>=1
               and ((block[2]-1+block_pst[block[3]][2])*map_info[1]+block[1]+block_pst[block[3]][1])<=#map then
               if tonb(sub(map,((block[2]-1)*map_info[1]+block[1]),((block[2]-1)*map_info[1]+block[1])))==1
               or tonb(sub(map,((block[2]+block_pst[block[3]][2]-1)*map_info[1]+block[1]+block_pst[block[3]][1]),((block[2]+block_pst[block[3]][2]-1)*map_info[1]+block[1]+block_pst[block[3]][1])))==1 then
                  loop=2
               end
            else loop=2
            end
         end
      until loop~=0 -- end of the stage
      clear nil
      state(true)
      spritexy map_info[3]+4*block[1]+4*block[2]+block_size[block[3]][1],map_info[4]+4*block[2]-3*block[1]+block_size[block[3]][2],sprite_block[block[3]]
      refresh
      wait(10)
   until loop==3 -- end of the game
-- main
graydraw.setcolor(true)
repeat
   menu()
   wait(5)
   if choice==1 then
      level=1
      game()
   --elseif choice==2 then
   --elseif choice==3 then
   end
until choice==4
graydraw.setcolor(false)


It might be a bit corrupted ^^
Anything you recognize ?
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Nick on August 02, 2012, 04:45:49 am
Quote from: jimbauwens
Anything you recognize ?

nah, not really.. i think he would have asked me if he would have used it (which would have been quite normal)

could anyone place an animated screenshot or video of it? i want to see it working xp
Title: Re: Bust-a-move on PRIZM, Bloxorz on 9860G
Post by: Eiyeron on August 02, 2012, 05:40:29 am
FOr the collision, it's a bit simple, I'm using the formula for the sprite coords, and I use it for each bubble in the map.
The very first beta published was made in 2 days, I didn't have the ideas to optimize it.