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 102, Upvotes 19
Jse
,
Game
,
Minecart
New games every week!
Places
Archives
Site credits : Site built from the ground up, in php, using Programmer's Notepad 2, and a very bored Jayenkai.
(c) Jayenkai 2023 and onwards, RSS feed
5
Blog - JSE - Platdude's Minecart Challenge - AGameAWeek