新手求教,我有一个构思请问该如何去做
我想用VB写一个程序,自动读取固定位置的扑克牌。然后跟已经截好的图作对比得出牌点花色,请问该怎么做。 VB --------------------编程问答-------------------- --------------------编程问答-------------------- http://www.autohotkey.com --------------------编程问答-------------------- 如果你是想做一些游戏的记牌器,我建议你采用读内存的方式.采用图像识别.个人认为有以下难点要处理.
1.不同的人采用不同的分辩率不好处理.
2.如果程序对纸牌的面像进行了处理(比如:更像后放大了图像或缩小了图像就不行了)
而读内存方式比较好.数据一定会在内存里面的,像修改游戏一样,最开始只要多读取几次,找到相要的数据后.后面就按数据的存储位置及格式读取就行了.(除非更新后更改数据结构.但是数据结构不是说改就改的) --------------------编程问答-------------------- 楼上说的不错。 --------------------编程问答-------------------- 顶楼上,说的好 --------------------编程问答-------------------- 3F 的想法是好,但实现的难度不是一般般的。
你如何去找那个内存数据的地址???
我觉得还是只有从屏幕图像入手,容易实现些。
扑克游戏,不管屏幕分辨率如何,它画出来的牌,大小应该是一样的(象素数)。
虽然不同的分辨率下,牌在屏幕上的位置会不一样,但可以进行“边界扫描”:
每张牌都会有“边框线”(颜色基本上是固定的,或有限的几种,并且跟窗口背景色或牌面底色是不同的);
按窗口大小确定大致位置;
按方位(上家、下家、对家)先扫描竖边框位置(对家,水平线扫描)或横边框(上家、下家,垂直线扫描)。
确定牌的横边框和竖边框位置后,它的点数和花色的相对位置是固定的!
有了第一张牌的位置,按牌距,就能确定下一张牌的位置、共有几张牌。
--------------------编程问答-------------------- 的确,这涉及到外挂开发方面的知识,从技术上看,不关心开发工具的情况下,那么操作内存可行的方式,无非就是先用些工具找出相关内存地址,然后用类似的方法模拟寻址过程,但如果前提是用VB来写,那么可行性就不大了。因为有些东西可能还做了特殊处理,不搞注入还没易做图确操作目标内存,从VB的角度看,还不如图像识别来得简单,因为有些技术用VB是很难实现的,必须换工具。
补充:VB , API