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
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
|
10
geopos/main.bas
Normal file
10
geopos/main.bas
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
SUB MAIN
|
||||||
|
|
||||||
|
IF ISLOCATIONAVAILABLE() THEN
|
||||||
|
PRINT "LAT:" + STR$(GETLATITUDE())
|
||||||
|
PRINT "LON:" + STR$(GETLONGITUDE())
|
||||||
|
ELSE
|
||||||
|
PRINT "GPS IS NOT AVAILABLE!"
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END SUB
|
107
picture/drawbitmap.bas
Normal file
107
picture/drawbitmap.bas
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
FUNCTION FIXBINBYTE(B AS BYTE) AS INTEGER
|
||||||
|
DIM TMP AS INTEGER
|
||||||
|
TMP = INTEGER(B)
|
||||||
|
IF TMP < 0 THEN
|
||||||
|
FIXBINBYTE = TMP+256
|
||||||
|
ELSE
|
||||||
|
FIXBINBYTE = TMP
|
||||||
|
END IF
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
FUNCTION GETBITMAP(FILENAME AS STRING, W AS INTEGER, H AS INTEGER) AS INTEGER(65536,3)
|
||||||
|
|
||||||
|
PRINT "startreadfunc"
|
||||||
|
|
||||||
|
REM 16'384
|
||||||
|
DIM RGB(65536,3) AS INTEGER
|
||||||
|
DIM BMPBYTE AS BYTE
|
||||||
|
DIM ERR AS STRING
|
||||||
|
DIM I, XOFF, YOFF, PIXEL AS INTEGER
|
||||||
|
PIXEL = 1
|
||||||
|
|
||||||
|
PRINT "startread"
|
||||||
|
|
||||||
|
OPEN #1, FILENAME, "r"
|
||||||
|
|
||||||
|
FOR I=0 TO 52
|
||||||
|
GET #1, BMPBYTE
|
||||||
|
END FOR
|
||||||
|
|
||||||
|
TRY
|
||||||
|
FOR YOFF=0 TO H
|
||||||
|
FOR XOFF=0 TO W
|
||||||
|
|
||||||
|
GET #1, BMPBYTE
|
||||||
|
RGB(PIXEL,1) = FIXBINBYTE(BMPBYTE)
|
||||||
|
|
||||||
|
GET #1, BMPBYTE
|
||||||
|
RGB(PIXEL,2) = FIXBINBYTE(BMPBYTE)
|
||||||
|
|
||||||
|
GET #1, BMPBYTE
|
||||||
|
RGB(PIXEL,3) = FIXBINBYTE(BMPBYTE)
|
||||||
|
|
||||||
|
PIXEL = PIXEL+1
|
||||||
|
|
||||||
|
END FOR
|
||||||
|
END FOR
|
||||||
|
CATCH ERR
|
||||||
|
REM PRINT ERR
|
||||||
|
END TRY
|
||||||
|
|
||||||
|
PRINT "ok"
|
||||||
|
|
||||||
|
CLOSE #1
|
||||||
|
|
||||||
|
PRINT "endreadfunc"
|
||||||
|
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
FUNCTION DRAWBMPTP(X AS INTEGER, Y AS INTEGER, W AS INTEGER, H AS INTEGER, IMAGE(65536,3) AS INTEGER, TPR AS INTEGER, TPG AS INTEGER, TPB AS INTEGER) AS INTEGER
|
||||||
|
|
||||||
|
DIM XOFF, YOFF, PIXEL AS INTEGER
|
||||||
|
DIM R,G,B,ALPHA AS INTEGER
|
||||||
|
DIM ERR AS STRING
|
||||||
|
PIXEL = 1
|
||||||
|
ALPHA = 0
|
||||||
|
|
||||||
|
FOR YOFF=0 TO H
|
||||||
|
PRINT STR$(R) + "," + STR$(G) + "," + STR$(B) + "," + STR$(ALPHA)
|
||||||
|
FOR XOFF=0 TO W
|
||||||
|
|
||||||
|
TRY
|
||||||
|
|
||||||
|
R = IMAGE(PIXEL,1)
|
||||||
|
G = IMAGE(PIXEL,2)
|
||||||
|
B = IMAGE(PIXEL,3)
|
||||||
|
|
||||||
|
IF (R = TPR) AND (G = TPG) AND (B = TPB) THEN
|
||||||
|
ALPHA = 100
|
||||||
|
ELSE
|
||||||
|
ALPHA = 0
|
||||||
|
END IF
|
||||||
|
|
||||||
|
SETCOLOR R, G, B, ALPHA
|
||||||
|
PLOT X+XOFF, Y+YOFF
|
||||||
|
|
||||||
|
CATCH ERR
|
||||||
|
REM PRINT "ERR" + STR$(PIXEL)
|
||||||
|
END TRY
|
||||||
|
|
||||||
|
PIXEL = PIXEL + 1
|
||||||
|
|
||||||
|
END FOR
|
||||||
|
REPAINT
|
||||||
|
SLEEP 1000
|
||||||
|
END FOR
|
||||||
|
|
||||||
|
REM REPAINT
|
||||||
|
|
||||||
|
DRAWBMPTP=PIXEL
|
||||||
|
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
FUNCTION DRAWBMP(X AS INTEGER, Y AS INTEGER, W AS INTEGER, H AS INTEGER, IMAGE(65536,3) AS INTEGER) AS INTEGER
|
||||||
|
|
||||||
|
DRAWBMP=DRAWBMPTP(X,Y,W,H,IMAGE,-1,-1,-1)
|
||||||
|
|
||||||
|
END FUNCTION
|
46
picture/example.bas
Normal file
46
picture/example.bas
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#include "drawbitmap.bas"
|
||||||
|
|
||||||
|
DIM PICT(65536,3) AS INTEGER
|
||||||
|
|
||||||
|
SUB WRITEARRAY(INARR(65536,3) AS INTEGER)
|
||||||
|
DIM K, L AS INTEGER
|
||||||
|
FOR K=1 TO 65536
|
||||||
|
FOR L=1 TO 3
|
||||||
|
PICT(K,L) = INARR(K,L)
|
||||||
|
END FOR
|
||||||
|
END FOR
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
FUNCTION GETTIME() AS STRING
|
||||||
|
DIM TM AS DOUBLE
|
||||||
|
TM = NOW()
|
||||||
|
GETTIME = STR$(HOUR(TM)) + ":" + STR$(MINUTE(TM)) + ":" + STR$(SECOND(TM)) + "." + STR$(MILLISECOND(TM))
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
SUB MAIN
|
||||||
|
|
||||||
|
DIM PXDREW AS INTEGER
|
||||||
|
|
||||||
|
GRAPHICS
|
||||||
|
|
||||||
|
PRINT "INIT=" + GETTIME()
|
||||||
|
|
||||||
|
SETCOLOR 255,255,255
|
||||||
|
CLS
|
||||||
|
REPAINT
|
||||||
|
|
||||||
|
PRINT "FILL=" + GETTIME()
|
||||||
|
|
||||||
|
WRITEARRAY(GETBITMAP("test.bmp",256,256))
|
||||||
|
|
||||||
|
PRINT "READ=" + GETTIME()
|
||||||
|
|
||||||
|
PXDREW = DRAWBMPTP(5, 5, 256, 256, PICT, 0,0,0)
|
||||||
|
|
||||||
|
PRINT "DRAW=" + GETTIME()
|
||||||
|
|
||||||
|
PRINT "DEBUG: " + STR$(PXDREW)
|
||||||
|
|
||||||
|
SLEEP 1000
|
||||||
|
|
||||||
|
END SUB
|
BIN
picture/test.bmp
Normal file
BIN
picture/test.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 256 KiB |
23
temp/main.bas
Normal file
23
temp/main.bas
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
SUB MAIN
|
||||||
|
|
||||||
|
DIM STOP AS BOOLEAN
|
||||||
|
DIM A, R AS INTEGER
|
||||||
|
DIM TEMP AS DOUBLE
|
||||||
|
DIM ITEMS(2) AS STRING
|
||||||
|
|
||||||
|
ITEMS(1)="START"
|
||||||
|
ITEMS(2)="EXIT"
|
||||||
|
|
||||||
|
WHILE NOT STOP
|
||||||
|
R = SELECT("SELECT ACTION",ITEMS,FALSE)
|
||||||
|
IF R = 1 THEN
|
||||||
|
PRINT("WAIT...")
|
||||||
|
SLEEP 1000
|
||||||
|
TEMP = ROUND(RND(60)*6,2)
|
||||||
|
A = ALERT(STR$(TEMP),"DONE", "OK","","", TRUE)
|
||||||
|
ELSE
|
||||||
|
STOP = TRUE
|
||||||
|
END IF
|
||||||
|
END WHILE
|
||||||
|
|
||||||
|
END SUB
|
Loading…
Add table
Add a link
Reference in a new issue