找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 11741|回复: 18

【VB】自己动手编程,将像素画导入到Minecraft世界!

[复制链接]
发表于 2016-9-19 04:59:51 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本来想解析Anvil存档格式,然后将方块数据写进去的,但那样不好玩。我这个其实是靠生成控制台命令来将图像数据写进去的。
图像需要先经过处理,从真彩色降级到4位索引色(16色),并使用Minecraft的羊毛的颜色作为颜色表。
这个过程可以应用抖动算法,但我试过了,效果不理想:

矩阵抖动
matrix.png

扩散抖动
floyd.png

无抖动:
nodither.png

原图:
9!.png

仔细对比了三张图后,我选择了不使用抖动算法的图。
然后我直接将图Copy到PictureBox,添加几个控件,决定开始“一次性工程”。
20160919045156.png

首先图像已经是16色了(之前用PS处理了一下),而且是MC羊毛色的调色板,直接用PictureBox的Point方法对指定点取色,然后直接判断颜色号是不是对应颜色就能判断出对应羊毛方块的方块数据。
然后就是要尽可能减少指令的条数,不过这方面我没怎么管,我直接用了最简单的RLE算法对指令进行压缩——其实就是判断在同一行的像素是不是颜色一样的,是的话用fill命令直接填充,不是的话用setblock来设置单独的方块。
因为是一次性工程我没写注释,毕竟也是小工程,一次性的。
20160919045802.png
生成命令后要考虑的下一件事情就是如何把命令输入进游戏控制台,我可不想手打,两千多条命令的话,还是算了吧。。
那就自动发送命令。试过VB6的sendkeys,这东西能发送命令没错,但它不能打开命令窗口,你用sendkeys发送“/”或者“t”给MC窗口,并没有任何效果(一开始我试的时候是直接用sendkeys发送两千条命令给MC窗口,结果突然鼠标动不了了,我这4核8线I7 6700K的CPU,使用率爆满,全部核心都100%使用率……于是我添加了检测Esc键的代码,按下Esc后退出循环)。因此我们需要用别的方法来打开命令窗口,我选的方法是用keybd_event模拟“t”键被按下,然后再模拟“t”键弹起,以此来打开命令窗口。实测有效。然后我再用sendkeys发送命令内容的时候,它好像只能接收后半部分的命令,估计是t键松开后还要再等一段时间才能发送命令。所以为了调整这个等的时间,我调试了很多次,最后发现在调用了API——Sleep(100)后来个DoEvents(),然后再sendkeys就没问题了。用sendkeys的时候,可以顺带把回车加上去,用vbCr做回车就行(不要用vbCrLf,不然调试的时候我不知道为啥手上突然就多了好几组烈焰人刷怪蛋……)。在sendkeys后,还需要再延迟200毫秒,然后再DoEvents(),此时发送命令有了75%的成功率。。最后在循环结尾再来个Sleep(100)就行了。此时它速度已经变得相当慢(和某音乐的节奏同步了哈),但已经能很好地发送命令给MC窗口了。。
pix.png
另外就是发送命令的时机,如果你点下按钮的一瞬间它就开始发送命令的话,所有的字符都会被发到你自己的这个窗口里,用户根本来不及把焦点切换到MC窗口。所以应该设置一个倒计时,在倒计时后启动发送任务。
这个倒计时的动画效果我是用了Timer,它只负责做两件事:更新按钮上的倒计时文本;判断是否已经到时,是的话,关掉Timer自身,然后开始发送命令。这样就可以点了按钮后,再在倒计时的时间内选中MC窗口就行了。

9.png
⑨.png

最后放上源码和存档。
VB6源码: mcfillwool.7z (12.41 KB, 下载次数: 65)
校验信息:
名称: mcfillwool.7z
大小: 12707 字节
SHA256: 141D82FC6EBA07BB8DD9121A413C79C50DE6D8E00A0BED074DAD17185AD330EC

游戏存档请回帖后下载。
游客,如果您要查看本帖隐藏内容请回复


演示视频:http://www.bilibili.com/video/av6338232/

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2017-3-8 18:36:37 | 显示全部楼层
谢谢,我需要多学习!
回复 赞! 靠!

使用道具 举报

发表于 2017-3-11 10:51:47 | 显示全部楼层
学习了!谢谢
回复 赞! 靠!

使用道具 举报

发表于 2017-3-22 20:30:49 | 显示全部楼层
回复

使用道具 举报

发表于 2017-4-17 03:14:49 | 显示全部楼层
MC我的世界
回复 赞! 靠!

使用道具 举报

发表于 2017-7-24 07:01:32 | 显示全部楼层
好东西,顶顶学习一下.
回复 赞! 靠!

使用道具 举报

发表于 2017-7-24 07:01:48 | 显示全部楼层
好东西,顶顶学习一下.
回复 赞! 靠!

使用道具 举报

发表于 2017-7-30 17:53:09 | 显示全部楼层
拿走了。。。
回复

使用道具 举报

发表于 2017-10-8 20:25:48 | 显示全部楼层
好东西,顶顶学习一下.
回复 赞! 靠!

使用道具 举报

发表于 2017-10-11 22:11:40 | 显示全部楼层
【VB】自己动手编程,将像素画导入到Minecraft世界!
回复 赞! 靠!

使用道具 举报

发表于 2017-10-16 12:27:58 | 显示全部楼层

感谢大神,在此学习了。
回复 赞! 靠!

使用道具 举报

发表于 2017-11-27 10:57:36 | 显示全部楼层
666666666666666666
回复 赞! 靠!

使用道具 举报

发表于 2018-1-27 13:07:29 | 显示全部楼层
nice,学习了
回复 赞! 靠!

使用道具 举报

发表于 2018-8-21 17:20:10 | 显示全部楼层
真的厉害啊,我们这些肥宅看呆了
回复 赞! 靠!

使用道具 举报

发表于 2020-4-3 21:23:31 | 显示全部楼层
看看学习下
回复 赞! 靠!

使用道具 举报

发表于 2020-7-8 10:16:16 | 显示全部楼层
本帖最后由 china_shy_wzb 于 2020-7-20 13:55 编辑

学习一下
回复

使用道具 举报

发表于 2022-1-2 13:40:24 | 显示全部楼层
就想问下楼主 你这个图片 脚本运行了多久
回复 赞! 靠!

使用道具 举报

发表于 2023-3-9 05:54:35 | 显示全部楼层
看看学习下
回复 赞! 靠!

使用道具 举报

发表于 2023-3-14 10:00:35 | 显示全部楼层

感谢楼主分享。
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-12 10:09 , Processed in 0.045574 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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