主题:关于SCREEN 12下的 GET的内容(没完成)
飞鸟提过,所以嘿嘿,闲着没事,粗浅研究一下.
get (x1,y1)-(x2,y2),cube
cube需要是一个定义好的数值型数组
(我不记得字节的什么样的概念了,应该是8位二进制位吧?在这里就这样认为先吧)
1字节=8位二进制
开头两个字节(16位)储存列数 (x2-x1+1)
随后两个字节(16位)储存行数 (y2-y1+1)
什么是先行后列先列后行的不说了,我都搞不清楚,太容易混淆了.
应该说是先行后列吧,
按横向的像素先保存,然后一横一横的顺序储存到数组去
像这样的顺序:
-----→
-----→
-----→
-----→
每8个像素存一个字(两个字节)<32位>
超出8个像素另起一个字,不足8个像素按一个字储存
32位储存8个像素,即一个像素分得4位,32位分成四组,每组8位
00000000 00000100 00000100 00000100 共32位四组二进制数
上面的这个数表示了8个像素,0代表的是空的,没有显示对象
其中第二三四组的第6位都是1,
表示的是第6个像素的颜色是0111
意思也就是把第6个像素的颜色值,分放到这个字的四个组的第6位位置上去了
唉,其实搞了半天,我还是没搞清楚,我把源程序发上来,做的是64位二进制,
你自己慢慢研究吧,我困了.
DECLARE FUNCTION at2$ (c&)
DIM CUBE&(3000)
SCREEN 12
'LINE (1, 1)-(1, 19), 3
LINE (1, 1)-(1, 19), 4
'LINE (5, 1)-(5, 19), 17
'LINE (8, 1)-(5, 19), 5
'LINE (9, 1)-(9, 19), 1
k$ = INPUT$(1)
GET (1, 1)-(9, 19), CUBE&
SCREEN 0
FOR i = 0 TO 38
IF i MOD 2 = 1 THEN PRINT
PRINT at2$(CUBE&(i));
NEXT
FUNCTION at2$ (c&)
a1$ = "1"
a0$ = "0"
IF c& < 0 THEN SWAP a1$, a0$
FOR i = 1 TO 32
IF c& MOD 2 THEN j$ = a1$ + j$ ELSE j$ = a0$ + j$
c& = c& \ 2
NEXT
at2$ = j$
END FUNCTION
get (x1,y1)-(x2,y2),cube
cube需要是一个定义好的数值型数组
(我不记得字节的什么样的概念了,应该是8位二进制位吧?在这里就这样认为先吧)
1字节=8位二进制
开头两个字节(16位)储存列数 (x2-x1+1)
随后两个字节(16位)储存行数 (y2-y1+1)
什么是先行后列先列后行的不说了,我都搞不清楚,太容易混淆了.
应该说是先行后列吧,
按横向的像素先保存,然后一横一横的顺序储存到数组去
像这样的顺序:
-----→
-----→
-----→
-----→
每8个像素存一个字(两个字节)<32位>
超出8个像素另起一个字,不足8个像素按一个字储存
32位储存8个像素,即一个像素分得4位,32位分成四组,每组8位
00000000 00000100 00000100 00000100 共32位四组二进制数
上面的这个数表示了8个像素,0代表的是空的,没有显示对象
其中第二三四组的第6位都是1,
表示的是第6个像素的颜色是0111
意思也就是把第6个像素的颜色值,分放到这个字的四个组的第6位位置上去了
唉,其实搞了半天,我还是没搞清楚,我把源程序发上来,做的是64位二进制,
你自己慢慢研究吧,我困了.
DECLARE FUNCTION at2$ (c&)
DIM CUBE&(3000)
SCREEN 12
'LINE (1, 1)-(1, 19), 3
LINE (1, 1)-(1, 19), 4
'LINE (5, 1)-(5, 19), 17
'LINE (8, 1)-(5, 19), 5
'LINE (9, 1)-(9, 19), 1
k$ = INPUT$(1)
GET (1, 1)-(9, 19), CUBE&
SCREEN 0
FOR i = 0 TO 38
IF i MOD 2 = 1 THEN PRINT
PRINT at2$(CUBE&(i));
NEXT
FUNCTION at2$ (c&)
a1$ = "1"
a0$ = "0"
IF c& < 0 THEN SWAP a1$, a0$
FOR i = 1 TO 32
IF c& MOD 2 THEN j$ = a1$ + j$ ELSE j$ = a0$ + j$
c& = c& \ 2
NEXT
at2$ = j$
END FUNCTION