New games every week!
JSE - Hurray!! Blog
13th May 2021
No.. "Array!!!"

-=-=-

// SpikeDislike v1.0 // by Jayenkai // Created 2021/4/13 Symbol 0,"0__20!203044030,30030,404404004044040,30030,304403020!2"; Symbol 1,"0__00A,B0,A9AB,0A9AB.CAAB?CAAB?CB!CD0B.CD0,C,D"; Symbol 2,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0/y0_0_0_0_0_0_0_;0_0_0_0y0;0;0y0_0_0_0;0_0_0_0_0_0_0_y"; Graphics 1024,720,2; AA Off Dim Spike(20) Dim SpikePos(20) DebugMode 1 Highscore=0 Gosub Restart Repeat Button=Gamepad(ButtonA) or Gamepad(ButtonB) or Gamepad(ButtonRight)>0 or MouseDown() if Button==0 then bdis=0 If Ingame==0 then Gosub Menu If Ingame==1 then Gosub Game Flip Forever @Menu if Score>Highscore then Highscore=Score ResetDraw SetCol 255,100,100 SetFontSize 48 Text ScreenWidth*0.5-64,(ScreenHeight*0.4)+128,"Spike",1 Text ScreenWidth*0.5+64,(ScreenHeight*0.4)+160,"Dislike",1 SetCol 255,255,255 Text ScreenWidth*0.5,(ScreenHeight*0.4)+192,"Highscore : "+Highscore,1 SetSize 6,6 DrawImg ScreenWidth*0.5,ScreenHeight*0.4,0,0 if Button==1 and bdis==0 then Gosub Restart Return @Restart Passed=0 Score=0 ScoreShow=0 Combo=0 ComboTick=0 SuperCombo=0 Gap=360 Speed=0.6 Bounce=3.5 BounceRot=0 SpikesMade=0 BNoise=0 Delta=1 SpikeScroll=640 Ingame=1 bdis=1 For n=0 to 10 SeedRnd SpikesMade Spike(n)=Rand(0,7) SpikesMade=SpikesMade+1 SpikePos(n)=SpikesMade next return @Game CLS;ResetDraw ScoreShow=ScoreShow-((ScoreShow-Score)/5) if Abs(ScoreShow-Score)<1 then ScoreShow=Score if Button<0.5 then SuperCombo=0 dx=0 if Button>0.5 and bdis==0 then dx=Neg(-16) Starfield dx*0.5,0,2 SpikeScroll=SpikeScroll+dx SetRot 0 was=Abs(Sin(BounceRot) * (32*8)) BounceRot=BounceRot+(Bounce*Delta) is=Abs(Sin(BounceRot) * (32*8)) if is<was then BNoise=0 if is>was and BNoise==0 then PlaySFX("Beeper_Jingle_Up",1):BNoise=1 dead=0 SetFontSize 48 SetCol 180,255,180 Text ScreenWidth/2,32,Right("000000000000"+Floor(ScoreShow),12),1 ComboTick=ComboTick-2.5 if ComboTick<0 and Combo>0 thenPlaySFX("Beeper_2tone_Down"):Combo=0:SuperCombo=0 endif SetAlpha 0.5 if ComboTick>0 then Rect ScreenWidth/2,48,ComboTick*2,16,1 SetAlpha 1 SetCol 0,96,0 Rect 0,((ScreenHeight()-64)+32),ScreenWidth(),8 SetCol 80,40,0 Rect 0,((ScreenHeight()-64)+40),ScreenWidth(),100 SetCol 255,180,96 SetSize 2 DrawImg 100,((ScreenHeight()-64)-is),1,0; px=100;py=((ScreenHeight()-64)-is); if SpikeScroll<0-Gap For n=0 to 10 h=Spike(n+1) Spike(n)=h h=SpikePos(n+1) SpikePos(n)=h Next SeedRnd SpikesMade Spike(10)=Rand(0,7) SpikesMade=SpikesMade+1 SpikePos(10)=SpikesMade SpikeScroll=SpikeScroll+Gap endif // Draw Spikes For n=0 to 10 x=(Gap*n)+SpikeScroll h=Spike(n) y=(ScreenHeight()-64)-(h*32) DrawImg(x,y,0,h) h=SpikePos(n);SetFontSize 12 Text(x,ScreenHeight()-16,h,1) d=Pyth(x,y,px,py) if d<32 then dead=1 d=Pyth(x-32,y-32,px,py) if d<31 then dead=1 d=Pyth(x+32,y-32,px,py) if d<31 then dead=1 d=Pyth(x-32,y+32,px,py) if d<31 then dead=1 d=Pyth(x+32,y+32,px,py) if d<31 then dead=1 if x<68 and h>Passed then Passed=h Combo=Combo+1 ComboTick=160 SuperCombo=SuperCombo+1 Score=Score+(Combo*SuperCombo) pitch=((Combo)/20)+1 if SuperCombo<2 then PlaySFX("beeper_2tone_up",pitch) if SuperCombo>1 then PlaySFX("beeper_4tone_up",pitch) endif Next If dead==1 then bdis=1:Ingame=0:PlaySFX("Explode_Low_1"):PlaySFX("Explode_Low_2"):PlaySFX("Beeper_Fall") Return


Yesterday I did SpikeDislike using the Tilemap functionality.
Today I thought "Hey, hang on.. Why don't I ACTUALLY do that?"
I set about making a couple of new behind the scenes commands, GetArray and SetArray.
Once the script comes across a Dim, it scans the rest of the code for that variable name, converting it from, say a(5)="Hello" to SetArray("Hello","a",5);
If you'd like, you can use that function in that way, but it's nasty, so I wouldn't bother!!

Suffice to say, a(5)="Hello" now works a treat, as does Print a(5).
Oddities might ensue if you try to do complex things with arrays, but .. they should at least function for the basic stuff.

You can dim an array with up to 4 dimensions. I can't think of a need for any more than that, especially not in a fairly simplistic scripting language like this. But if YOU can think of any reasons to have more than 4 dimensions, please do let me know.
(Plus it's still kinda slow looping through all of those dimensions, so.. probably best not to!)

Rightyoo.. Give it a go, and let me know how you get on.
I now need to go and write up today's additions for the Command List page thing.
Views 81, Upvotes 13  
Jse , Arrays
New games every week!
Site credits : Jayenkai made this.
(c) Jayenkai 2023 and onwards, RSS feed

Blog - JSE - Hurray!! - AGameAWeek