💦 FULL SET: Qball - Full Gallery 2025

Q*BALL

Leap into action in Q*BALL a mashup of the classic games Q*Bert and Jezzball crafted for Pico1k 2025 Jam.

Your mission may seem easy at first: simply hop across a pyramid of cubes, marking lines for destruction, but the relentless randomly bouncing q*balls are here to thwart your plans, endlessly undoing your work. Trap them away to keep them from interfering!

How many levels can you clear?

How to play:

  • Hop around the pyramid to paint lines of cubes, diagonally or horizontally. Once a line of cubes  has been marked, it'll be dropped from play, and any blocks that become separated from the player and the q*balls will slowly decay. Clear at least 16 blocks per level to advance.
  • Level timer is the green line on the left of the screen
  • Completion counter is the line on the right. Once it turns green, you've cleared enough blocks for this level.

Controls:

  • Arrow keys: Jump between cubes
  • Press X: Accelerate the timer if you want to advance to the next level sooner
  • Gamer tip: Tilt your keyboard or controller 45 degrees counterclockwise for the classic arcade experience.

Source code:

I made this game for Pico1k 2025, when compressed, the code packs down to just 1020 bytes!

Requires PICO-8 v0.2.7 or newer, as it uses the new text effects .

l=0j=0c={{0,1},{0,-1},{-1,-1},{1,1},{0,0}}for d=0,127do n=d\8e=d%8if e-2*n<2and e+2*n<32do sset(e,n,e+2*n<14and 3or 2)end end r=50k="\^w\^t\o"function _init()if r<16do print(k.."1ffgame over",28,56,7)print("⁶o1ffscore: "..l,43,70,7)flip()_init()end r=0d=100j+=1map={}for d=0,9do map[d]={}for n=0,d+1do map[d][n]=d>0and d<9and n>0and n<=d and{0,11,0}or{500,9,1}end end o={{2,4,0,0,0}}for d=1,j do n=rnd(7)\1+1e=rnd(n)\1+1add(o,{e,n,0,0,0})end end function _draw()cls()for d=1,8do for n=1,d do map[d][n][1]+=map[d][n][3]if map[d][n][2]==9and map[d][n][3]==0do h,w=rnd(2),rnd(2)else h,w=0,0end pal{0,2,map[d][n][2]}spr(0,48+n*16-d*8+h,d*13+map[d][n][1]+w,1,2,true)pal{0,8,map[d][n][2]}spr(0,48+n*16-d*8+8+h,d*13+map[d][n][1]+w,1,2,false)pal()end end function g(d)i=1m=1for n=1,#d do v=map[d[n][1]][d[n][2]]if v[2]~=11do if n-i>1do if map[d[i][1]][d[i][2]][3]+v[3]+m==3do for n=i,n do map[d[n][1]][d[n][2]][2]=9end elseif v[3]==1do i=n m=1end end else m=0end end end for d=0,9do f={}for n=d,9do add(f,{n,d+1})end g(f)f={}for n=0,9-d do add(f,{d+n,n})end g(f)f={}for n=0,d+1do add(f,{d,n})end g(f)for n=1,d do if map[d][n][2]==9and map[d][n][3]==0and not(o[1][1]==n and o[1][2]==d)do map[d][n][3]=1l+=1r+=1end end end for d=#o,1,-1do if o[d][3]==0and o[d][4]==0do a=rnd(4)\1if d==1do a=4for d=0,3do if btnp(d)do a=d end end end o[d][3]=c[a+1][1]o[d][4]=c[a+1][2]if map[o[d][2]+o[d][4]][o[d][1]+o[d][3]][3]==1do o[d][3]=0o[d][4]=0end else o[d][5]+=1if o[d][5]>8do o[d]={o[d][1]+o[d][3],o[d][2]+o[d][4],0,0,0}map[o[d][2]][o[d][1]][2]=d==1and 10or 11end end u=52+o[d][1]*16-o[d][2]*8+(2*o[d][3]-o[d][4])*o[d][5]+4s=o[d][2]*13+o[d][4]*o[d][5]+o[d][5]*(o[d][5]-9)/2if d==1do print(k.."181웃",u-7,s-6,14)print('"',u-2,s-4,1)else circfill(u,s,5,1)circfill(u-1,s-1,4,12)end end b={}function p(d,n)for o in all(o)do if o[1]==d and o[2]==n do return true end end if b[n*10+d]or map[n][d][3]==1do return end b[n*10+d]=true for o in all(c)do if p(d+o[1],n+o[2])do return true end end end n=rnd(9)\1e=rnd(n+1)\1if not p(e,n)do map[n][e][2]=9end line(0,120,0,120-d,11)print(l,0,0,7)line(127,0,127,r*6,r<16and 8or 11)d-=btn(5)and 1or.1if d<=0do _init()end end

Download

Download
qball.p8.png 6.2 kB

Comments

Log in with itch.io to leave a comment.

(+1)

Very cool!

(+1)

Very very good. Impressive gameplay for 1k of code.

I managed to score 125 points.