Fun 3D Platformer. by Scarab_131st May 2008 20:37
|
---|
Summary A basic 3D jump and run platformer with a timer. If anyone has any comments i'd be glad to hear them. Btw, im kind of a self taught coder, i've learned by example mostly so this is Description Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com `MY CODE IS IN CAPS sync on sync rate 40 START: hide mouse RANDOMIZE TIMER() OBJECTS AS INTEGER= 331 MOREOBJECTS AS INTEGER= 179 PNTS AS INTEGER=0 DIM ABLE(MOREOBJECTS) FOR X=0 TO 179 ABLE(X)=1 NEXT X TMR AS INTEGER=3100 ABLE2 AS BYTE=1 `SET FONT STUFF SET TEXT FONT "Lucida Sans Unicode" SET TEXT SIZE 16 `make a player pawn make object sphere 1,5 color object 1,rgb(0,255,255) set object collision to spheres 1 yrotate object 1,wrapvalue(object angle y(1)+90) `make the main platform make object box 2,2200,5,50 position object 2,object position x(2)+1100,object position y(2)-50,object position z(2) COLOR OBJECT 2, RGB(0,200,25) set object collision to boxes 2 set object collision on 2 `make lower platforms for x=3 to 100 make object box x,7,3,3 position object x,rnd(2000),object position y(2)+20,object position z(2) color object x,rgb(rnd(155)+100,rnd(155)+100,rnd(155)+100) next x `make higher platforms for x=1 to 100 make object box x+100,7,3,3 position object x+100,rnd(2000),object position y(2)+40,object position z(2) color object x+100,rgb(rnd(155)+100,rnd(155)+100,rnd(155)+100) next x `MAKE 3rd LEVEL PLATFORMS FOR X=1 TO 80 MAKE OBJECT BOX X+200, 4, 1, 3 POSITION OBJECT X+200, RND(2000), OBJECT POSITION Y(2)+60, OBJECT POSITION Z(2) COLOR OBJECT X+200, RGB(RND(200)+55, RND(200)+55, RND(50)+205) NEXT X `MAKE HIGHEST PLATFORMS FOR X=1 TO 50 MAKE OBJECT BOX X+280, 8, 1, 3 POSITION OBJECT X+280, RND(2000), OBJECT POSITION Y(2)+80, OBJECT POSITION Z(2) NEXT X `POINTS FOR FIRST LEVEL FOR X=0 TO 49 MAKE OBJECT SPHERE OBJECTS+X, 5 POSITION OBJECT OBJECTS+X, OBJECT POSITION X(3+X), OBJECT POSITION Y(3+X)+6, OBJECT POSITION Z(2) COLOR OBJECT OBJECTS+X, RGB(120, 40, 40) NEXT X `POINTS FOR 2nd LEVEL FOR X=50 TO 99 MAKE OBJECT SPHERE OBJECTS+X, 4 POSITION OBJECT OBJECTS+X, OBJECT POSITION X(51+X), OBJECT POSITION Y(51+X)+6, OBJECT POSITION Z(2) COLOR OBJECT OBJECTS+X, RGB(40,40,120) NEXT X `LEVEL 3 FOR X=100 TO 149 MAKE OBJECT SPHERE OBJECTS+X, 3 POSITION OBJECT OBJECTS+X, OBJECT POSITION X(101+X), OBJECT POSITION Y(101+X)+4, OBJECT POSITION Z(2) COLOR OBJECT OBJECTS+X, RGB (40, 150, 40) NEXT X `LEVEL 4 FOR X=150 TO 179 MAKE OBJECT SPHERE OBJECTS+X, 3 POSITION OBJECT OBJECTS+X, OBJECT POSITION X(131+X), OBJECT POSITION Y(131+X)+4, OBJECT POSITION Z(2) NEXT X jumptime=0 `main loop do `x=object position x(1) `determine if object is in the air if air=1 then position object 1,object position x(1),object position y(1)-1,object position z(1) if object collision(1,0)>0 then air=0 if object collision(1,0)=0 then air=1 `determine if it is jumping if jump=1 and jumptime<25 inc jumptime air=0 position object 1,object position x(1),object position y(1)+1,object position z(1) if object position y(1)=>object position y(2)+25 and jumptime=25 jumptime=0 jump=0 air=1 endif endif `accept keyboard input IF ABLE2=1 if leftkey()=1 then move object 1,-1 if rightkey()=1 then move object 1,1 if UPkey()=1 and jump=0 and air=0 then jump=1 ENDIF `set the position of the camera position camera OBJECT POSITION X(1),object position y(1)+70,object position z(1)-120 `POINT SYSTEM FOR X=0 TO 179 IF ABLE(X)=1 IF OBJECT COLLISION(1,OBJECTS+X)>0 ABLE(X)=0 DELETE OBJECT OBJECTS+X IF X<50 INC PNTS, 5 ENDIF IF X>49 AND X<100 INC PNTS, 10 ENDIF IF X>99 AND X<150 INC PNTS, 20 ENDIF IF X>149 AND X<180 INC PNTS, 50 ENDIF ENDIF ENDIF NEXT X `PRINT SCORE SET CURSOR 20, 10 PRINT "Score: ",PNTS, " points.", "Time: ", TMR/100 IF SPACEKEY() SET CURSOR 260, 240 PRINT "Score: ", PNTS, " points." ENDIF `DECREASE TIMER IF ABLE2>0 DEC TMR, 1 ENDIF `ENDGAME SEQUENCE IF TMR<1 ABLE2=0 SET TEXT SIZE 24 CENTER TEXT 320, 240, "TIME!" SET TEXT SIZE 16 CENTER TEXT 320, 260, "Continue?" INK RGB(255,255,255),0 BOX 280, 280, 315, 290 BOX 330, 280, 365, 290 INK RGB (0,0,0),0 CENTER TEXT 320, 276, "Yes, or No?" INK RGB(255,255,255),0 SHOW MOUSE IF MOUSECLICK() IF MOUSEX()>279 IF MOUSEX()<316 IF MOUSEY()>279 IF MOUSEY()<291 FOR X=1 TO 510 DELETE OBJECT X NEXT X GOTO START ENDIF ENDIF ENDIF ENDIF IF MOUSEX()>329 IF MOUSEX()<366 IF MOUSEY()>279 IF MOUSEY()<291 END ENDIF ENDIF ENDIF ENDIF ENDIF SET TEXT SIZE 24 ENDIF `refresh the screen sync `end the main loop loop |