易码技术论坛

 找回密码
 加入易码
搜索
查看: 231986|回复: 8

在任意矩形快速显图的研究以及应用

[复制链接]
发表于 2007-7-10 13:06:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-7-10 14:19:01 | 显示全部楼层
当然是我自己研究的。你说“改格式,不好看”是什么意思?
发表于 2007-7-14 10:06:41 | 显示全部楼层
我贴出3K的来:
10 OPEN "REC.DAT" FOR RANDOM AS#1 LEN=20
20 POKE 13824,0OKE 13825,22OKE 13826,5OKE 13827,96:POKE 199,13
30 FOR R=1 TO 7:GET #1,R*80:POKE 1025,0
40 POKE 224,192:POKE 225,25:POKE 2246,62:POKE 2247,6:CALL 13824
50 NEXT R
60 IF PEEK(199)=27 THEN END ELSE 30
  
注:REC.DAT是图片数据,稍微改一下可以看B16图
 楼主| 发表于 2007-7-14 16:18:46 | 显示全部楼层
你就是FAYE3000吧
发表于 2007-7-14 20:02:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-7-15 08:56:18 | 显示全部楼层
咋个改呀?
发表于 2007-7-15 08:58:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-7-15 16:17:03 | 显示全部楼层
那你是说可以设置字体哟
版主没法弄吗
 楼主| 发表于 2007-7-10 11:39:19 | 显示全部楼层 |阅读模式
文字在前面也在大侠提到过在任意矩形快速显图的方法,但是都不详细,我开始看的时候云里雾里的,根本不知道在说什么。最近我在whtqasw的暗夜奇袭中看到了这种方法的应用,当时我就想到可不可用这种方法

来做地图呢?于是我就开始了这方面的研究,研究了几天,我终于研究出了点东西。我现在把结果和心得

粘出来。首先声明我的机子是PC1010的,图像的缓存是:6592-8191,是这个地址的都可以试一试。
这种方法要用到随机文件,我就先说它了吧!
每当我们打开随机文件时,文曲星就会开辟一段地址来存放读出来的文件。这个地址是怎么知道呢?大家

自己可以去研究一下,先放一段内容进去,然后用PEEK来找。先说只运行一个随机文件的情况。PC1010的

地址是24576减去随机文件的长度.这个地址到24575存放的是你PUT或GET的一个文件.注意:在你没有PUT或[glow=255,red,2]文字[/glow]

GET的情况下,这段地址都是0,如你已经PUT或GET了,那这段地址就存放你放进去或读出来的那个文件,比如

你GET #1,5,那这段地址就只存放5号文件内的内容,当你再次放或读时又会改变地址内容.
我们同时运行随机和只读,只写都不会影响随机文件的地址,只有同时打运行多个随机文件时,地址就会变,

新的地址为24576减去所有的随机文件长度.而各个文件存放的地址也在讲究.24575为最后的地址,当你运

行一个随机文件时,文曲星就向前开辟打开文件长度个地址来存放,你再运行另一个随机文件时,星星继续

向前开辟来存放.所以先运行的文件地址在后面,而后运行的文件地址倒在了前面.
这个地址还在没有其他方法来找呢?有!我从批量法(地址是PEEK(47302)+PEEK(47303)*256,这个地址加上2

就是控制第一个字符串的长度)受到启发,找到了同样的地址来表达存放随机文件的地址.这个地址是47361

和47362.PEEK(47361)+PEEK(47362)*256的值就是存随机文件的地址了.47310,47311和47370,47371和这个

也有关,但都是差不多的,我没研究了.
再说在任意矩形快速显图.34731这个地址是我先要说的,它可能是截图用的吧,POKE 34731,20和POKE

34731,21就是查找和未找到的画面.要先显图,先要POKE 34731,9,它的作用是让以后的矩形在一定的条件

显图,而不是画矩形.这个条件就是BOX的填充值为1,也就是BOX的第5个数据为1.而矩形又是怎么画图的呢?

实际上在矩形内的图像都是用POKE画出来的.从矩形左上角开始由一个地址出发,一直POKE 到矩形右下角.

矩形左上角POKE的地址我们是可以改变的.用146,147来控制这个地址.比如我们POKE 146,193,POKE

147,25,那这个矩形左上角横起8个点就和屏幕上第一横的第8至第15个点的情况一样了.我们同样可以把地

址POKE到任意地方,当然可以是我们的程序中也可以是随机文件中.所以我们可以在程序中打出一系列代码

代表图形然后用POKE 34731,146,147来显出图像.但我们最好还是用随机文件来存放,然后显出来.但是随

机文件的长度又成了问题.当我们创建一个随机文件时,只要不分配长度,也就是不用FIELD,文件长度我们

还可以定以为255,但一分配长度就不行了,连160都不到.不用急,上面不是说了47361和47362可以控制文件

存放的地址吗?我们先规定文件长度为250,不分配,然后把存放地址POKE 到屏幕,然后用PUT #1,*,这样屏

幕上从6592开始的250个地址就存在了文件中.读的时候同样,只是要用GET了.这个方法可快速存图和快速

读图,但及不上用批量法,但比那种OUTPUT和INPUT要快多了.
再说一下我觉得它的应用吧!现在我们可以快速在任意一个矩形内显图了,那我们就可以把屏幕分成几大块

,再在每一块中画图,那一整个屏幕我们不是也可以快速控制了吗?对,我们就把屏幕分成几大块,每块都画

上图,那屏幕就成了地图.我们先把各种地形的数据保存在随机文件中,用ABCDEFG.......代表各种地形,然

后读出来,读到什么地形就在相应矩形内画出相应图像.要注意的是我们在一个矩形内画了图之后,后一个

矩形如还要显图,那它就接着前一个矩形的最后数据开始POKE,所以每画完一个矩形,我们都要重新POKE

146,147到随机文件存放的地址,还要GET相应的文件号.不过速度还不是很快,屏幕变换过程我们能看处清.

用它来做玛丽我觉得很不错.
大侠们看看我有没有说得不准确的地方,还请多指教了文字
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-26 05:00 , Processed in 0.012093 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表