DODGE! [DBP]
[Second Entry into the 20 Liner Competition]
By RUCCUS
Me getting owned by my friend
Few, never thought I could compress almost 40 lines of code into 20, but nonetheless I did it. Here's the game breakdown:
Game Info
DODGE! is a twist on the classic run around and shoot people with your gun genre. In this game, you WANT to be shot.
You are constantly shooting out a laser infront of you, when someone collides with your laser, their score goes up, and vise versa for you. Its multiplayer (2 people max) on one comp, so you can compete (Best 2 out of 3 anyone?)
This version is the compressed no-media version for the 20 Liner, but Im probably going to work on this in my spare time (when Im not working on my hundred other projects) to make it a little cooler, adding media, super moves etc. Maybe even online play.
DODGE! Controls:
Player 1:
Up Arrow Key | Forward
Back Arrow Key | Backward
Right Arrow Key | Turn Right
Left Arrow Key | Turn Left
Player 2:
Keypress "W" | Forward
Keypress "S" | Backward
Keypress "D" | Turn Right
Keypress "A" | Turn Left
I might make some more versions for the 20 liner but I dont know how much more I can fit in there with all the IF statements. I know its pretty sloppy (I didnt plan on using it for a 20 liner in the beginning) but it'll do for a non-commercial game.
DODGE! Code:
SYNC ON:SYNC RATE 0:HIDE MOUSE:AUTOCAM OFF:MAKE OBJECT CUBE 1,40:POSITION OBJECT 1,150,0,0:COLOR OBJECT 1,RGB(000,000,255):YROTATE OBJECT 1,90:MAKE OBJECT CUBE 2,40:POSITION OBJECT 2,-150,0,0:COLOR OBJECT 2,RGB(000,255,000):YROTATE OBJECT 2,-90:MAKE OBJECT SPHERE 3,50:GHOST OBJECT ON 3:MAKE OBJECT SPHERE 4,50:GHOST OBJECT ON 4:MAKE OBJECT BOX 5000,5,5,500:MAKE MESH FROM OBJECT 1,5000:DELETE OBJECT 5000:MAKE OBJECT SPHERE 6000,20,20,20:MAKE MESH FROM OBJECT 2,6000:DELETE OBJECT 6000:ADD LIMB 1,1,1:OFFSET LIMB 1,1,0,0,250:ADD LIMB 2,1,1:OFFSET LIMB 2,1,0,0,250:ADD LIMB 1,2,2:OFFSET LIMB 1,2,0,0,500:COLOR LIMB 1,2,RGB(000,000,255):ADD LIMB 2,2,2:OFFSET LIMB 2,2,0,0,500:COLOR LIMB 2,2,RGB(000,255,000):POSITION CAMERA 0,800,-800:POINT CAMERA 0,0,0:GAME$="Playing"
DO:POSITION OBJECT 4,OBJECT POSITION X(1),OBJECT POSITION Y(1),OBJECT POSITION Z(1):POSITION OBJECT 3,OBJECT POSITION X(2),OBJECT POSITION Y(2),OBJECT POSITION Z(2):CENTER TEXT SCREEN WIDTH()/2,0,"DODGE!":CENTER TEXT (SCREEN WIDTH()/2),15,"Created by RUCCUS of RUCCUS.net":CENTER TEXT (SCREEN WIDTH()/2),SCREEN HEIGHT()-20,"RUN INTO THE RAYS WITHOUT HITTING OTHERS WITH YOUR OWN!":CENTER TEXT OBJECT SCREEN X(1),OBJECT SCREEN Y(1)-30,"PLAYER 1: "+str$(P1_Score#):CENTER TEXT OBJECT SCREEN X(2),OBJECT SCREEN Y(2)-30,"PLAYER 2: "+str$(P2_Score#)
IF GAME$="Playing" AND KEYSTATE(200)=1 THEN MOVE OBJECT 1,.5
IF GAME$="Playing" AND KEYSTATE(208)=1 THEN MOVE OBJECT 1,-.5
IF GAME$="Playing" AND KEYSTATE(203)=1 THEN TURN OBJECT LEFT 1,.2
IF GAME$="Playing" AND KEYSTATE(205)=1 THEN TURN OBJECT RIGHT 1,.2
IF GAME$="Playing" AND KEYSTATE(17)=1 THEN MOVE OBJECT 2,.5
IF GAME$="Playing" AND KEYSTATE(31)=1 THEN MOVE OBJECT 2,-.5
IF GAME$="Playing" AND KEYSTATE(30)=1 THEN TURN OBJECT LEFT 2,.2
IF GAME$="Playing" AND KEYSTATE(32)=1 THEN TURN OBJECT RIGHT 2,.2
IF GAME$="Playing" AND INTERSECT OBJECT(3,LIMB POSITION X(1,2),LIMB POSITION Y(1,2),LIMB POSITION Z(1,2),OBJECT POSITION X(1),OBJECT POSITION Y(1),OBJECT POSITION Z(1))>0 THEN INC P2_Score#,1
IF GAME$="Playing" AND INTERSECT OBJECT(4,LIMB POSITION X(2,2),LIMB POSITION Y(2,2),LIMB POSITION Z(2,2),OBJECT POSITION X(2),OBJECT POSITION Y(2),OBJECT POSITION Z(2))>0 THEN INC P1_Score#,1
IF GAME$="Game Over" THEN CENTER TEXT SCREEN WIDTH()/2+rnd(3),SCREEN HEIGHT()/2+rnd(3),SGAME$:CENTER TEXT SCREEN WIDTH()/2,(SCREEN HEIGHT()/2)+15,"[ Press The Spacekey To Restart - Press Esc to Exit The Game ]"
IF SPACEKEY()=1 THEN GAME$="Playing":P1_Score#=0:P2_Score#=0:POSITION OBJECT 1,150,0,0:POSITION OBJECT 2,-150,0,0:YROTATE OBJECT 1,90:YROTATE OBJECT 2,-90
IF P1_Score#>5000 THEN P1_Score#=5000
IF P1_Score#=5000 THEN GAME$="Game Over":SGAME$="GAME OVER! PLAYER 1 WINS!"
IF P2_Score#>5000 THEN P2_Score#=5000
IF P2_Score#=5000 THEN GAME$="Game Over":SGAME$="GAME OVER! PLAYER 2 WINS!"
SYNC
LOOP
And for all of you that dont like the idea, here's the usual "If you hit em you get points" version (Not an entry for the 20 liner)
SYNC ON:SYNC RATE 0:HIDE MOUSE:AUTOCAM OFF:MAKE OBJECT CUBE 1,40:POSITION OBJECT 1,150,0,0:COLOR OBJECT 1,RGB(000,000,255):YROTATE OBJECT 1,90:MAKE OBJECT CUBE 2,40:POSITION OBJECT 2,-150,0,0:COLOR OBJECT 2,RGB(000,255,000):YROTATE OBJECT 2,-90:MAKE OBJECT SPHERE 3,50:GHOST OBJECT ON 3:MAKE OBJECT SPHERE 4,50:GHOST OBJECT ON 4:MAKE OBJECT BOX 5000,5,5,500:MAKE MESH FROM OBJECT 1,5000:DELETE OBJECT 5000:MAKE OBJECT SPHERE 6000,20,20,20:MAKE MESH FROM OBJECT 2,6000:DELETE OBJECT 6000:ADD LIMB 1,1,1:OFFSET LIMB 1,1,0,0,250:ADD LIMB 2,1,1:OFFSET LIMB 2,1,0,0,250:ADD LIMB 1,2,2:OFFSET LIMB 1,2,0,0,500:COLOR LIMB 1,2,RGB(000,000,255):ADD LIMB 2,2,2:OFFSET LIMB 2,2,0,0,500:COLOR LIMB 2,2,RGB(000,255,000):POSITION CAMERA 0,800,-800:POINT CAMERA 0,0,0:GAME$="Playing"
DO:POSITION OBJECT 4,OBJECT POSITION X(1),OBJECT POSITION Y(1),OBJECT POSITION Z(1):POSITION OBJECT 3,OBJECT POSITION X(2),OBJECT POSITION Y(2),OBJECT POSITION Z(2):CENTER TEXT SCREEN WIDTH()/2,0,"DODGE!":CENTER TEXT (SCREEN WIDTH()/2),15,"Created by RUCCUS of RUCCUS.net":CENTER TEXT (SCREEN WIDTH()/2),SCREEN HEIGHT()-20,"RUN INTO THE RAYS WITHOUT HITTING OTHERS WITH YOUR OWN!":CENTER TEXT OBJECT SCREEN X(1),OBJECT SCREEN Y(1)-30,"PLAYER 1: "+str$(P1_Score#):CENTER TEXT OBJECT SCREEN X(2),OBJECT SCREEN Y(2)-30,"PLAYER 2: "+str$(P2_Score#)
IF GAME$="Playing" AND KEYSTATE(200)=1 THEN MOVE OBJECT 1,.5
IF GAME$="Playing" AND KEYSTATE(208)=1 THEN MOVE OBJECT 1,-.5
IF GAME$="Playing" AND KEYSTATE(203)=1 THEN TURN OBJECT LEFT 1,.2
IF GAME$="Playing" AND KEYSTATE(205)=1 THEN TURN OBJECT RIGHT 1,.2
IF GAME$="Playing" AND KEYSTATE(17)=1 THEN MOVE OBJECT 2,.5
IF GAME$="Playing" AND KEYSTATE(31)=1 THEN MOVE OBJECT 2,-.5
IF GAME$="Playing" AND KEYSTATE(30)=1 THEN TURN OBJECT LEFT 2,.2
IF GAME$="Playing" AND KEYSTATE(32)=1 THEN TURN OBJECT RIGHT 2,.2
IF GAME$="Playing" AND INTERSECT OBJECT(3,LIMB POSITION X(1,2),LIMB POSITION Y(1,2),LIMB POSITION Z(1,2),OBJECT POSITION X(1),OBJECT POSITION Y(1),OBJECT POSITION Z(1))>0 THEN INC P1_Score#,1
IF GAME$="Playing" AND INTERSECT OBJECT(4,LIMB POSITION X(2,2),LIMB POSITION Y(2,2),LIMB POSITION Z(2,2),OBJECT POSITION X(2),OBJECT POSITION Y(2),OBJECT POSITION Z(2))>0 THEN INC P2_Score#,1
IF GAME$="Game Over" THEN CENTER TEXT SCREEN WIDTH()/2+rnd(3),SCREEN HEIGHT()/2+rnd(3),SGAME$:CENTER TEXT SCREEN WIDTH()/2,(SCREEN HEIGHT()/2)+15,"[ Press The Spacekey To Restart - Press Esc to Exit The Game ]"
IF SPACEKEY()=1 THEN GAME$="Playing":P1_Score#=0:P2_Score#=0:POSITION OBJECT 1,150,0,0:POSITION OBJECT 2,-150,0,0:YROTATE OBJECT 1,90:YROTATE OBJECT 2,-90
IF P1_Score#>5000 THEN P1_Score#=5000
IF P1_Score#=5000 THEN GAME$="Game Over":SGAME$="GAME OVER! PLAYER 1 WINS!"
IF P2_Score#>5000 THEN P2_Score#=5000
IF P2_Score#=5000 THEN GAME$="Game Over":SGAME$="GAME OVER! PLAYER 2 WINS!"
SYNC
LOOP

Current Projects: SHADE - Game Maker | Mecho - TGC Puzzle Entry | Halo Physics Engine | COLD - Polygonal Collision Detection