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
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 |
Loading…
Add table
Add a link
Reference in a new issue