diff --git a/cars/main.bas b/cars/main.bas new file mode 100644 index 0000000..cd01b47 --- /dev/null +++ b/cars/main.bas @@ -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 diff --git a/geopos/main.bas b/geopos/main.bas new file mode 100644 index 0000000..e204795 --- /dev/null +++ b/geopos/main.bas @@ -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 diff --git a/picture/drawbitmap.bas b/picture/drawbitmap.bas new file mode 100644 index 0000000..ba0f46d --- /dev/null +++ b/picture/drawbitmap.bas @@ -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 diff --git a/picture/example.bas b/picture/example.bas new file mode 100644 index 0000000..14f04da --- /dev/null +++ b/picture/example.bas @@ -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 diff --git a/picture/test.bmp b/picture/test.bmp new file mode 100644 index 0000000..4041811 Binary files /dev/null and b/picture/test.bmp differ diff --git a/temp/main.bas b/temp/main.bas new file mode 100644 index 0000000..9b2daab --- /dev/null +++ b/temp/main.bas @@ -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