找回密码
 点一下
查看: 2651|回复: 7

有什么办法可以知道玩家已经有了一个英雄

[复制链接]
发表于 2008-10-21 15:42:11 | 显示全部楼层 |阅读模式
我昨天写了一个酒馆招英雄的小型系统。
这个系统类似DOT,能玩家自己选,也能通过输入random得到一个随机的英雄。
玩家自己选英雄那是很方便的,几乎不用怎么设置主可以处理,关键是通过random来获得随机英雄出了一点问题。

问题描述:
1.玩家英雄阵亡后,再输入random又能获得一个新的英雄,这个问题让我很头痛;
2.多个玩家可能通random得到两个相同的英雄.

对于问题2,我自己想到了一个解决方案,只是不知道能否行得通.
方案如下:
将所有可选英雄的ID放进一个全局数组变量中,这样就得到一个线性表.
当有玩家选了英雄(包括用random得到的英雄)之后,获取这个英雄的ID,并将这个ID从线性表中删去.
如此以来就能解决第二个问题.

但是第一个问题,我觉得关键性问题是在如何得知英雄是否已有英雄(无论是死是活).我也偿试性的用玩家拥有单位数量来限制这个问题,但是当玩家英雄死后这个问题依旧.我还偿试在玩家选取英雄之后禁用random,通过这种方法问题虽然得到了解决,但是我觉得似乎还欠缺点什么.
如果能够有办法获得玩家是否已经拥有英雄那么我觉得以上两个问题都能得到很好的解决.
请指教一二.
发表于 2008-10-21 16:32:33 | 显示全部楼层
用一个单位数组,来记录玩家的英雄,选完了就赋值,如果值不为空就说明已经有英雄了

英雄的单位类型可以做一个数组,所有可选英雄都丢进去,选择过了的就将对应的值设为0,随机时利用loop,通过随机整数作为下标,判断得到的数组对应项是不是为空,如果为空,那么就继续循环,不为空就说明选择英雄成功了,跳出循环
回复

使用道具 举报

 楼主| 发表于 2008-10-21 16:48:12 | 显示全部楼层
引用第1楼zhuzeitou于2008-10-21 16:32发表的  :
用一个单位数组,来记录玩家的英雄,选完了就赋值,如果值不为空就说明已经有英雄了

英雄的单位类型可以做一个数组,所有可选英雄都丢进去,选择过了的就将对应的值设为0,随机时利用loop,通过随机整数作为下标,判断得到的数组对应项是不是为空,如果为空,那么就继续循环,不为空就说明选择英雄成功了,跳出循环

嗯,前面那个用数组来记录玩家是否获有英雄这个方法很棒,我明白了.

"英雄的单位类型可以做一个数组,所有可选英雄都丢进去,选择过了的就将对应的值设为0,随机时利用loop,通过随机整数作为下标,判断得到的数组对应项是不是为空,如果为空,那么就继续循环,不为空就说明选择英雄成功了,跳出循环"

这里我还是有点不明白:
如果用你这种方法,如果我是通过random得到的英雄,其他的玩家在酒馆里看到的所有英雄当中是否会出现我random后得到的英雄,如果看得到,那么其他无英雄的玩家还是能手动选取我随机得到的英雄.

如果不能看到的话,那么就解决问题了.

另你对我所说的一个用线性表那个方案有何看法,能否产生我上面所说的那种可能性问题?
回复

使用道具 举报

发表于 2008-10-23 10:48:02 | 显示全部楼层
换个思路,当输入random的时候,命令玩家随便在酒馆买一个英雄就行了,这样就不会和买英雄冲突。
回复

使用道具 举报

恶声恶气 该用户已被删除
发表于 2008-10-23 13:31:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-10-24 15:14:44 | 显示全部楼层
LS的居然来这里讨论功夫了,把你们对战的录像发给我看一下,看看问题在哪里。
回复

使用道具 举报

恶声恶气 该用户已被删除
发表于 2008-10-24 18:17:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-10-26 21:30:15 | 显示全部楼层
下次玩的时候去专区下载最新版吧,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 00:39 , Processed in 0.037857 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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