New games every week!
JSE - Platdude's Minecart Challenge Blog
14th September 2021


Collect the stars to build up a boost, as you ride your minecart to the goal.

Gather the stars, then score at the end.
A nice little highscore challenge.

-=-=-


View on YouTube

Controls


Controls are a simple one-button affair, with either Up, Primary Face Button, or MouseDown being used for the jump button.
Hold to jump higher/longer.

What I Didn't Do


This game has taken far too long to get working!!!
No real reason for that, though. Just me being lazy again

Otherwise, the game's pretty much the same as the SmileBASIC edition, though the physics and layout are different.

JSE Sourcecode


// Platdude's Minecart Challenge // by Jayenkai // Created 2021/9/6 // https://GotoJSE.com/G6pRrJFn.BAS Symbol 0,"1__0_0_0_0_0_0_0II0_0?II0@z0?I0_z0?BB0@z0?B0B0!A_A_A_A?0C_C?00A_A?00A_A?0,C_C,0.A_A,0.A_A,"; Symbol 1,"1__0_0_0_0_0_0_0II0_0?II0_0?I0_0!BB0_0?B0B"; Symbol 2,"0__00y.0,yx.y0yxxzwxxyyxzzwwxyyxwwzzxyyxxwzxxy0yx.y0,y."; Symbol 3,"1__0_0_0_0_0_0_0_0_0_0_0_0_0.yz_z?yxzzyyzzyyzzyyzzx0zz00zz00zz00zz00zz00zz00zz00zz"; Symbol 4,"24_R_R_R_R_R_R_R_R,QR@SR_R_R_R_R_R,SR_R_R_R_R_R_R,QR_R_R_R_R_R_R_R_R_R_RSR_R_RRQR_R_R_R_R_R_R.SR_R_R_R_R_R.SR_SR_R_R_R_R_R_R_R_R_R_R,QR_R_R_R_R_SR_R_R_R_R_SR_R_R_R_R_R_RRQR_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R_RQR,SR_R_R.SR_R_R.SR_R_R_R_R_R_R_R/QR_R!SR_R_R_R_R_R_R_R_R_RR"; Symbol 5,"24_R_R_R_R_R_R_R_R_R_R_R_R!SR_R_R_R_R!SR_R_R_R_RQR_R?QR_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R_RSR_R_R,QR_R_R_R_R_R,SR_R_R_R_R_R_R_RRQR_R@SR_R_R_R_R_R@QR_R@SR_RRSR@SR_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R!QR_QR_R_R_R_R/QQR_R_R!SR_R_R_R_R/SR_R_R_R_R!QR_R_R_R_R_R_R_R_R_R_R_RR"; Symbol 6,"24_R_R_R_R_R_R_SR_R_R_R_R_R_R_R_R@SR/QR_R?SR,QR_R_R_R_R?SR@QR_R_R_R_R_R_R_R_R_R_R_R_R_R_R_R@QR_R_R_R_R_RSR_R_R_R_R,QR_R!QR_R_RRSR_QR_RRSR_R_R_R_R_R?SR_R_R_R_R_QR.SR_R_R_R_R,QR_R_R_R_R_R_R_R_RRQR_R_R_R_R_R_R_R_RSR_R_R_R_R_R_R_R_RRSR_R!SR_R_RQR_R_R_R_R_R.QR_R_R_R_R_R_R_R?"; Symbol 7,"24_R_R_R_R_R_R_R_RSR_R@QR_R_R.SR_R_R_R_R_R.QR_R_R_R_R,SR_R@SR_R_R_R_R_R.QR_R_R_R_R_R/SR_R_R_R_R_R_R_R_R@SR_RRQR_R_R_R_R_R_R_R_R_R@SR_R/QR,SR_R_R_R_R_R_R_R_R,QR_R_R_R_R,QR_R_R_R_R_R/SR_R_SR_R_R_R,QR_R_R_R_R_R_R_R!SR_R_R_R_RQR_R_R_R_R_R_R_R_R,SR?QR_R_QR_R_R?SR_R/QR_R_R_R/"; Symbol 8,"24_0_0_0_0_0_0_0_0_0R0_00S0_0_0_0_0_0_0_0_0/S0_0_R0_0_00S0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0.R0_0_0_0_0_00R0_00R0_0_0_0,S0_0.R0_0_0_0_0?S0_0_0_0_0_0?S0_0_0_0_0_0_0_0_0_R00S0_0_0!R0_0?R0_0_0_0_0,S0_0_0_0_0_0_0_0_0_0_00R0_0_0_0_0_0_0_0_00RS0_0,S"; Symbol 9,"24_0_0_0_0_0_0_0_0_0_0S0/R0_S0_0_0_0_00R0_0_0_0_0_0_0_0_0_0_0_0_0S0_0/R0_0_0.R0_0_0_0_0_0_0_0_0_0_0R0/S0/S0/R0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0?R0_0/R0_0_0!S0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0,S0,R0_0_0_0_0_0_0_0_S0_0?R0_0_0_0_0_0_0R0_0_0_0_S0_00R"; Symbol 10,"24_0_0_0_0_0!R0_0_0R0_0_S0_0_0_0_00R0_0_0_0S0_0!S0_0_0_0_0_0_0_0@R0_0_0_0_0_0@R0_0_0@S0!S0_0_0_0_0_0_0_0_0@R0_0_0S0_0_0_0_0_0_R0_0_0,S0_0_0.S0_0?R0_0_0_0_0_0_0_0_0_0!R0_0,S0_0_0_0_0_0_0S0_0@S0_0_0_0_00S0_0_0_0_0_0.R0_0_0_0_S0_0_0_0@R0_0,S0_0_0_0_0_0_0,R0_0.R"; Symbol 11,"24_0_0_0.R0_0_S0/S0_0_0_0_0_0.R0_0_0_0_0_0_0_0_00R0_0_0_0_0_0_0_0_0@R0_0_0!S0_0_0_0_0_0,R0_0_0_0@S0_0_0,S0_0_0_0_0_0@R0_0_0_0_0_0_0_0_0_0/S0_00S0_0_0_0_0_0_0_0.R0@S0.R0_R0_0_0_0_0!S0_0!S0_0_0_0_0_0!R0_0_0_0_0_0_0_0_0S0_0!S0_0_0!S0_0_0_0_0_0_0,R0!R0_0_0_0_0_S0_0_0_0R"; Symbol 12,"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_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0@x@;_;/x@w@:_:/w_w/:_:/w_w/:_:/w@v@z_z/v_v/z_z/v_v/z_z/v_v/z_z/v@z@v_v/z_z/v_v/z_z/v_v/z_z/v_v/z_z/v_v/z_z/v_v/z_z/v_v/z_z/v_v/z@"; Symbol 13,"1__0_0_0?440_0?440_0.4.0_0,4.0_0,4.0/4_4?0,4_4,0!4@0_4!0_04!0_4@0@4@0/4,0.4,0?440@44"; Symbol 14,"0__0_0H0_0H0_00H0_0,H0.H"; Dim Track(256,5) AntiAlias False Graphics 800,400,1 GameHandler("Platdude's|Minecart|Challenge","Classic|Original|Random") .StartGame Act=0 Gosub GetLev Return .GetLev Act=Act+1 Notify "Challenge "+Act,20,3 StarBump=ScreenWidth() pbonus=0 starrest=0 stars=0 px=0 py=0 pspd=6 pgo=0 pfall=1 prot=0 pland=0 plandy=0 butt=0 bdis=1 LastLeap=0 pdead=0 pdead2=0 yeay=0 SeedRnd (GameType*3717)+Act if GameType==3 then SeedRnd Mills() SetBuffer BG:AntiAlias True:ResetDraw SetCol 70,40,10 Rect 512,512,1100,1100,1 SetAlpha 0.5 For m=0 to 32 SetSize Rand(4,16) x=Rnd(1024):y=Rnd(1024) For fx=-1 to 1 For fy=-1 to 1 DrawImg x+fx*1024,y+fy*1024,Rand(8,11) Next Next Next SetBuffer FG AntiAlias False y=0 r=0 rg=0 gap=jRand(24,32) gapl=jRand(6,12) For m=0 to 256 Track(m,1)=x*16 Track(m,2)=y Track(m,3)=r Track(m,4)=1 Track(m,5)=0 y=y+Sin(rg)*16 if jRnd(0,10)<1 and m>4 then rg=jRand(-3,3)*8 if jRnd(0,10)<1 and m>8 and m<254 then Track(m,5)=jRand(3,6) if m>251 then rg=0 r=SmoothTo(r,rg,2) if m>250 then gap=10:gapl=10 gap=gap-1 if gap<0 gapl=gapl-1 Track(m,4)=0 if gapl<0 then gap=jRand(24,32):gapl=jRand(6,12) endif Next aimx=0-ScreenWidth()*0.25 aimy=0-ScreenHeight()*0.5 scrx=aimx*0.5:scry=aimy*0.5 Return .Ingame CLS:ResetDraw WrapBG 0-scrx*0.75,0-scry*0.75 aimx=px-ScreenWidth()*0.25 aimy=plandy-ScreenHeight()*0.5 scrx=SmoothTo(scrx,aimx,3) scry=SmoothTo(scry,aimy,6) pgo=pgo+1 if pspd>9 then pspd=9 if pspd<5 and px<16*256 then pspd=5 if pspd<0 then pspd=0 if pdead2>0 then pspd=0 if pgo==89 then JMTrackr(160,"G8G8G8G8A+8A+8A+8<C16D16C8C8C8>G8A+8A+8A8F8|>G16<G16>G16<G16>G16<G16>G16<G16>A+16<A+16>A+16<A+16>A+16<A+16>A+16<A+16C16<C16>C16<C16>C16<C16>C16<C16>>A+16<A+16>A+16<A+16>A16<A16>F16<F16|G8r16>G8G16A+16<D16C8r16>A+8r16A8<G8r16>G8G16A+16<D16C8r16>A+8r16A8|G8G8G16>G16A+16<D16G8G8G16>G16A+16<D16G8G8G16>G16A+16<D16G8G8G16>G16A+16<D16|r8G16G16G8A+8A+8r16F4r8r16G16G16G4r16G8A16A+8F8|G16D16G16A+16<D16>A+16G16A+16A+16F16A+16<D16F16D16>A+16<D16C16>G16<C16D16C16D16C16>G16A+16G16A+16G16F16D16F16A+16|<G8F8D8>A+4<D8F4G8F8D8>A+4<D8F4|r1r1|[d]|C8G+8D8r16G+16C8G+8D8r16G+16C8G+8D8r16G+16C8G+8D8r16G+16|r1|") if pgo>90 then px=px+pspd if pdead2>0 and pdead2<30 then pfall=0:pdead2=pdead2+1 py=py+pfall pfall=pfall+0.25 butt=0 pland=pland-1 if GamePad(ButtonA)>0.5 or GamePad(ButtonUp)>0.5 or MouseDown()>0 then butt=1 if butt==0 and bdis<2 then bdis=0 if px>255*16 bdis=1 if lastleap==0 then bdis=0 endif if butt==1 and bdis==0 and pland>0 bdis=1 pfall=-10 PlaySFX("Metal_4") if px>255*16 then lastleap=1 endif if butt==0 then pfall=pfall+0.4 l=Floor(px/16)-20 if l<0 then l=0 r=l+60 ly=Track(256,2) pbonus=Floor(px-(256*16))*10 for n=l to r m=n if n>256 then m=256 SetSize 0.55,4.05:SetRot 0 x=(n*16)-scrx:y=(Track(m,2)-scry) If Track(m,4)==1 then DrawImg x,y+68,4+(n mod 4) SetRot 180 DrawImg x,y+196,4+((n+1) mod 4) SetRot 0 DrawImg x,y+324,4+((n+2) mod 4) SetSize 0.5,0.5 SetRot Track(m,3) s=3:if n>256 then s=12 DrawImg x,y,s endif if Track(m,5)>0 SetSize 1,1 SetRot(0) DrawImg x,y-Track(m,5)*16,13,2 if Abs(x-(px-scrx))<32 and Abs((y-Track(m,5)*16)-(py-scry))<32 for e=0 to 15 ThrowParticle x,y-Track(m,5)*16,4,e*22.5,1,14,0 next Track(m,5)=0 stars=stars+1 score=score+10 PlaySFX("Beeper_Coin") endif endif if Abs((n*16)-px)<18 ly=Track(m,2) if py>Track(m,2)+64 and pfall>=0 and Track(m,4)==0 and pdead2==0 pdead2=1 plandy=py endif if Abs(py-(Track(m,2)-12))<20 and pfall>=0 and Track(m,4)==1 py=SmoothTo(py,Track(m,2)-12,2) prot=Track(m,3) if n<=256 then pspd=pspd+(prot*0.0005) if n>256 prot=0 if bdis==1 then bdis=2 if stars<=0 then pspd=pspd-0.025:stars=0 if stars>0 v=1/Ceil(2+Stars) if v>0.15 then v=0.15 stars=stars-v if Ceil(stars)<starrest then starrest=Ceil(stars) ThrowParticle px-scrx-16,(py-24)-scry,4,-90,2,13,0 ThrowParticle px-scrx-8,(py-16)-scry,4,-90,2,13,1 ThrowParticle px-scrx,(py-8)-scry,4,-90,2,13,2 ThrowParticle px-scrx-8,(py)-scry,4,-90,2,13,3 ThrowParticle px-scrx-16,(py+8)-scry,4,-90,2,13,4 c=0.5+((50-stars)*0.02) if c>5 then c=5 if c<0.5 then c=0.5 PlaySFX("Pickup_7",c) endif endif if pland<1 then PlaySFX("Noise_Thud_3") pland=4 plandy=py pfall=0 endif endif next if py>ly+64 and pdead2==0 then pdead2=1 if pdead2>0 pdead=pdead+1 if pdead>30 and pdead<80 then e=((120-pdead)/60)+1:PlaySFX("Whistle_Down",e) if pdead==90 then PlaySFX("Noise_Splash",jRnd(0.5,0.7)):PlaySFX("Noise_Rustle",jRnd(0.5,0.7)):PlaySFX("Noise_Crash",jRnd(0.5,0.7)):PlaySFX("Sonniss_Rattle_Metal",jRnd(0.5,0.7)) endif if pspd<=0 and stars<=0 and px>=256*16 pspd=0:stars=0 if yeay==0 PlaySFX("Beeper_Rise") for x=0 to ScreenWidth() step 16 ThrowParticle x,(py-scry)+16,2,jRnd(-8,8),jRnd(1.5,3),13,jRnd(0,7) Next Score=Score+pbonus endif yeay=yeay+1 endif ResetDraw:SetSize 0.5:SetRot prot DrawImg px-scrx,py-scry,0 SetSize 0.15 SetRot px*3 DrawImg (px-scrx)+Sin(150+prot)*10,(py-scry)-Cos(150+prot)*10,2 SetRot (px*3)+45 DrawImg (px-scrx)+Sin(210+prot)*10,(py-scry)-Cos(210+prot)*10,2 prot=prot-4 if stars>starrest then starrest=stars ResetDraw():SetFontSize 32 x=256*16-scrx if x>ScreenWidth()-48 then x=ScreenWidth()-48 if x<ScreenWidth()*0.5 then x=ScreenWidth()*0.5 SetSize 3.5:DrawImg x,(ScreenHeight()*0.35)-8,13,2 SetSize 1:SetCol 0,0,0:Text x,ScreenHeight()*0.35,starrest,1 if pbonus>0 then SetCol 128,200,255:Text ScreenWidth()*0.5,ScreenHeight()*0.65,pbonus,1 if yeay>0 or pdead>0 or (px>256*16 and stars<=0) then JMStop if yeay>120 or pdead>120 then if Act==3 then EndGame "Challenge Complete" if Act<3 then Gosub GetLev endif ResetDraw:TextScore jscrw/2,32,1 SetParticleSize 8 Flip Return

Views 66, Upvotes 6  
Jse , Game , Minecart
New games every week!
Site credits : Jayenkai, one crazy fool who has far too much time on his hands.
(c) Jayenkai 2023 and onwards, RSS feed

Blog - JSE - Platdude's Minecart Challenge - AGameAWeek