Game on Basic! + some tests, drawbitmap upd

This commit is contained in:
Андрей 2021-06-16 09:41:46 +04:00 committed by GitHub
parent 114eabe5aa
commit cc8fd24a10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 385 additions and 0 deletions

107
picture/drawbitmap.bas Normal file
View 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
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB