找回密码
 加入
搜索
查看: 6065|回复: 11

[效率算法] 公布3个牌类游戏常用的内存表示方式 顺便出个小题

  [复制链接]
发表于 2011-2-4 02:06:42 | 显示全部楼层 |阅读模式
本帖最后由 foboy 于 2011-2-4 02:09 编辑

首先声明:本文每个字都是用键盘敲打出来的。
做了一段时间的棋牌类辅助程序,到目前为止,所有接触过的内存中表示游戏牌面的方式不外乎以下三种:
1. 16进制高位代表花色,低位代表数值。例如:
方框的13张牌在内存中是: 0x01 0X02 0X03 0X04......0X0D
黑桃的13张牌在内存中是: 0X11 0X12 0X13 0X14......0X1D
红桃:0X21 0X22 0X23 0X24....0X2D
梅花:0X31 0X32 0X33 0X34....0X3D
采用这种方式 的游戏内存地址比较容易找,根据每次出牌的差值搜索即可。
2. 与第一种方式相反,低位代表花色,高位代表数值。例如:
方框的13张牌在内存中是: 0x10 0X20 0X30 0X40......0XD0
黑桃的13张牌在内存中是: 0X11 0X21 0X31 0X41......0XD1
红桃:0X12 0X22 0X32 0X42....0XD2
梅花:0X13 0X23 0X33 0X43...0XD3
这种方式是我最近发现的。当时找了很久都找不到。后来没办法,只有试着观察牌面可能出现的内存区域,才找到了。说起来比较幸运。如果运气不好,要想在那么多内存中发现这玩意恐怕几天几夜不吃饭也找不到。
3. 54张牌对应连续的54个数值,采用这种方式的游戏内存也比较容易查找,查找方法和第一种方式的一样。
在这里顺便出个小题,有个叫百家乐的游戏,是比点数大小的。如果牌面大于等于10就算0点,10以内的就是牌上是几就算几点。每个玩家三张牌,比谁的点数大。当三张牌的点数相加大于9时,只取个位数。
例如:你拿的牌是 7 8 9, 我拿的是 2 10 11(J)
你的点数: 7+8+9=24 取个位数是4点
我的点数: 2 +0+0=2 是2点
现在以第一种内存表示方式为例,要计算点数,首先要把每张牌转换成对应的点数。例如:0x31=1点 0x2A=0点 0x36=0点 0x0B=0点
现在考的是这种转换方法。这是个很简单的问题,不过实现起来有很多种方式。大家可以找出最简洁最有效率的那一种。
目前我用的是:(为了不影响大家思路,设置为回复可见)
游客,如果您要查看本帖隐藏内容请回复

高手切莫取笑俺出这么小儿科的问题。估计大家更关心的是关于内存及内存基址的查找,内存操作等问题。等有时间了我会
根据自己的经验写个例子。目前俺也属于菜鸟级别,只初步掌握了内存的查找和操作。OD和call则还出于一窍不通的程度。
发表于 2011-2-4 03:55:06 | 显示全部楼层
先收藏,慢慢看
发表于 2011-2-4 19:15:34 | 显示全部楼层
我的话, 会把10或10以上的, 先赋值为0, 这样再计算吧。呵呵, 不知道你的思路如何
发表于 2011-2-4 19:17:19 | 显示全部楼层
其实牌的数值就那么 几十个, 每个都把值赋掉, 也就开头赋值一下而已吧。不算太麻烦
发表于 2011-2-4 19:49:26 | 显示全部楼层
取末尾4位,并判断是否大于10。

游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2011-2-4 20:47:03 | 显示全部楼层
本帖最后由 foboy 于 2011-2-4 20:48 编辑

回复 5# pusofalse


    看来老兄喜欢位操作。肯定学汇编的
将条件的真假作为乘数俺也喜欢。
发表于 2011-2-21 06:06:55 | 显示全部楼层
嗯,看看隐藏的内容
发表于 2011-2-21 12:42:22 | 显示全部楼层
mod(变量,10)
发表于 2011-2-23 03:08:02 | 显示全部楼层
留名学习~~~~
发表于 2011-2-23 08:57:59 | 显示全部楼层
学习!谢谢分享!!
发表于 2011-2-23 16:18:01 | 显示全部楼层
學習,收藏了!
发表于 2011-2-23 22:53:45 | 显示全部楼层
看盾
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-25 04:46 , Processed in 0.081155 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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