Game on Basic! + some tests, drawbitmap upd
This commit is contained in:
parent
114eabe5aa
commit
cc8fd24a10
6 changed files with 385 additions and 0 deletions
cars
199
cars/main.bas
Normal file
199
cars/main.bas
Normal file
|
@ -0,0 +1,199 @@
|
|||
FUNCTION CONSTRAINT(NUM AS INTEGER, MIN AS INTEGER, MAX AS INTEGER) AS INTEGER
|
||||
IF (NUM < MIN) THEN
|
||||
CONSTRAINT=MIN
|
||||
ELSEIF (NUM > MAX) THEN
|
||||
CONSTRAINT=MAX
|
||||
ELSE
|
||||
CONSTRAINT=NUM
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION GETROT() AS INTEGER
|
||||
DIM ACCX, ACCY, ACCZ AS INTEGER
|
||||
DIM RESULT AS INTEGER
|
||||
SLEEP 1000
|
||||
REM IF ISACCELEROMETERAVAILABLE() THEN
|
||||
ACCX = GETACCELEROMETERX()
|
||||
ACCY = GETACCELEROMETERY()
|
||||
ACCZ = GETACCELEROMETERZ()
|
||||
IF ACCY < 9 AND ACCY > 1 THEN
|
||||
RESULT = 1
|
||||
ELSEIF ACCX < 10 AND ACCX > 4 THEN
|
||||
RESULT = 2
|
||||
ELSEIF ACCX > (-10) AND ACCX < (-4) THEN
|
||||
RESULT = 3
|
||||
REM ELSE
|
||||
REM RESULT = 2
|
||||
END IF
|
||||
REM ELSE
|
||||
REM RESULT = 2
|
||||
REM END IF
|
||||
REM ALERT STR$(RESULT), STR$(ACCX) + "," + STR$(ACCY) + "," + STR$(ACCZ), "OK","","", TRUE
|
||||
GETROT=RESULT
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION CHECKCOLLISION(CARX AS INTEGER, CARY AS INTEGER, CARSIZE AS INTEGER, OBJX AS INTEGER, OBJY AS INTEGER, OBJSZ AS INTEGER) AS BOOLEAN
|
||||
IF OBJX > (CARX-OBJSZ-1) AND OBJX < (CARX+CARSIZE+1) AND OBJY > (CARY-OBJSZ-1) AND OBJY < (CARY+CARSIZE+5) THEN
|
||||
CHECKCOLLISION=TRUE
|
||||
ELSE
|
||||
CHECKCOLLISION=FALSE
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
SUB MAIN
|
||||
|
||||
DIM ACCX, ACCY, ACCZ AS INTEGER
|
||||
DIM COORD AS INTEGER
|
||||
DIM W, H, X, Y AS INTEGER
|
||||
DIM BORDER AS INTEGER
|
||||
DIM SIZE,SPEED AS INTEGER
|
||||
DIM CNRD,CBORDR AS INTEGER
|
||||
DIM COINSPD, ENMSPD AS INTEGER
|
||||
DIM COINX1,COINY1 AS INTEGER
|
||||
DIM COINX2, COINY2 AS INTEGER
|
||||
DIM ENMX1, ENMY1 AS INTEGER
|
||||
DIM ENMX2, ENMY2 AS INTEGER
|
||||
DIM ENMX3, ENMY3 AS INTEGER
|
||||
DIM ROT AS INTEGER
|
||||
DIM COINS AS INTEGER
|
||||
DIM COINSSTR AS STRING
|
||||
DIM GAMEOVER AS BOOLEAN
|
||||
|
||||
GRAPHICS
|
||||
|
||||
W = SCREENWIDTH()
|
||||
H = SCREENHEIGHT()
|
||||
SIZE = 70
|
||||
X = W/2-SIZE/2
|
||||
Y = H/2-SIZE/2+100
|
||||
BORDER = W-SIZE
|
||||
SPEED=10
|
||||
|
||||
CNRD=20
|
||||
CBORDR=W-(CNRD*2)
|
||||
COINSPD=6
|
||||
ENMSPD=5
|
||||
|
||||
COINX1=CONSTRAINT(RND(20), 0, CBORDR)
|
||||
COINX2=CONSTRAINT(RND(30), 0, CBORDR)
|
||||
|
||||
ENMX1=CONSTRAINT(RND(60), 0, BORDER)
|
||||
ENMX2=CONSTRAINT(RND(900), 0, BORDER)
|
||||
ENMX3=CONSTRAINT(RND(12), 0, BORDER)
|
||||
|
||||
ROT = GETROT()
|
||||
|
||||
IF ISACCELEROMETERAVAILABLE() THEN
|
||||
|
||||
WHILE NOT GAMEOVER
|
||||
|
||||
ACCX = GETACCELEROMETERX()
|
||||
ACCY = GETACCELEROMETERY()
|
||||
ACCZ = GETACCELEROMETERZ()
|
||||
|
||||
COORD = ACCY
|
||||
IF ROT = 1 THEN
|
||||
COORD = -ACCX
|
||||
ELSEIF ROT = 3 THEN
|
||||
COORD = -ACCY
|
||||
ELSE
|
||||
COORD = ACCY
|
||||
END IF
|
||||
|
||||
X=X+(COORD*SPEED)
|
||||
|
||||
X=CONSTRAINT(X,0,BORDER)
|
||||
|
||||
SETCOLOR 70,70,70
|
||||
CLS
|
||||
|
||||
SETCOLOR 255,255,255
|
||||
/*DEBUG*/
|
||||
SETFONT "SANS-SERIF", 12
|
||||
DRAWSTRING STR$(ACCX),5,10
|
||||
DRAWSTRING STR$(ACCY),5,20
|
||||
DRAWSTRING STR$(ACCZ),5,30
|
||||
DRAWSTRING STR$(X),5,40
|
||||
/**/
|
||||
|
||||
FILLRECT X, Y, SIZE, SIZE
|
||||
|
||||
IF CHECKCOLLISION(X,Y,SIZE,COINX1,COINY1,CNRD) THEN
|
||||
COINS=COINS+1
|
||||
END IF
|
||||
|
||||
IF COINY1 > H OR CHECKCOLLISION(X,Y,SIZE,COINX1,COINY1,CNRD) THEN
|
||||
COINX1=CONSTRAINT(RND(70),0,CBORDR)
|
||||
COINY1=0-(CNRD*2)
|
||||
|
||||
END IF
|
||||
|
||||
IF CHECKCOLLISION(X,Y,SIZE,COINX2,COINY2,CNRD) THEN
|
||||
COINS=COINS+1
|
||||
END IF
|
||||
|
||||
IF COINY2 > H OR CHECKCOLLISION(X,Y,SIZE,COINX2,COINY2,CNRD) THEN
|
||||
COINX2=CONSTRAINT(RND(800),0,CBORDR)
|
||||
COINY2=0-(CNRD*2)
|
||||
|
||||
END IF
|
||||
|
||||
SETCOLOR 252,186,3
|
||||
FILLCIRCLE COINX1, COINY1, CNRD
|
||||
FILLCIRCLE COINX2, COINY2, CNRD
|
||||
COINY1 = COINY1 + COINSPD
|
||||
COINY2 = COINY2 + COINSPD
|
||||
|
||||
SETCOLOR 255,255,255
|
||||
SETFONT "SANS-SERIF", 30
|
||||
COINSSTR = "$" + STR$(COINS)
|
||||
DRAWSTRING COINSSTR, W-STRINGWIDTH(COINSSTR)-5, STRINGHEIGHT(COINSSTR)+10
|
||||
|
||||
SETCOLOR 3,200,3
|
||||
FILLRECT ENMX1, ENMY1, SIZE, SIZE
|
||||
FILLRECT ENMX2, ENMY2, SIZE, SIZE
|
||||
FILLRECT ENMX3, ENMY3, SIZE, SIZE
|
||||
|
||||
IF ENMY1 > H THEN
|
||||
ENMX1=CONSTRAINT(RND(60), 0, BORDER)
|
||||
ENMY1=0-SIZE
|
||||
END IF
|
||||
|
||||
IF CHECKCOLLISION(X, Y, SIZE, ENMX1, ENMY1, SIZE) THEN
|
||||
GAMEOVER=TRUE
|
||||
END IF
|
||||
|
||||
IF ENMY2 > H THEN
|
||||
ENMX2=CONSTRAINT(RND(900), 0, BORDER)
|
||||
ENMY2=0-SIZE
|
||||
END IF
|
||||
|
||||
IF CHECKCOLLISION(X, Y, SIZE, ENMX2, ENMY2, SIZE) THEN
|
||||
GAMEOVER=TRUE
|
||||
END IF
|
||||
|
||||
IF ENMY3 > H THEN
|
||||
ENMX3=CONSTRAINT(RND(12), 0, BORDER)
|
||||
ENMY3=0-SIZE
|
||||
END IF
|
||||
|
||||
IF CHECKCOLLISION(X, Y, SIZE, ENMX3, ENMY3, SIZE) THEN
|
||||
GAMEOVER=TRUE
|
||||
END IF
|
||||
|
||||
ENMY1=ENMY1+ENMSPD
|
||||
ENMY2=ENMY2+ENMSPD
|
||||
ENMY3=ENMY3+ENMSPD
|
||||
|
||||
REPAINT
|
||||
SLEEP 30
|
||||
|
||||
END WHILE
|
||||
|
||||
IF GAMEOVER THEN
|
||||
ALERT "GAME OVER", "COINS: " + STR$(COINS), "OK","","", TRUE
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
END SUB
|
Loading…
Add table
Add a link
Reference in a new issue