找回密码
 立即注册

QQ登录

只需一步,快速开始

ilovevista

注册会员

4

主题

10

帖子

152

积分

注册会员

积分
152

活字格认证

ilovevista
注册会员   /  发表于:2012-4-10 08:46  /   查看:5537  /  回复:8
我们写的算法在开始运行时要进行判别,是否为第一次加载这个算法,如果是,要进行一系列初始化操作。
但是这里就有个问题,葡萄城提供的测试伺服程序,跑完第一张地图和第一个建筑列表,可以更换地图、建筑列表继续跑;而我们的算法在跑第一张地图时是正确的,到了第二张地图时,因为已经不是“第一次运行”,所以初始化操作不能正确进行,导致失败。
我的问题是,可否在正式比赛时,不仅提供GC垃圾回收,也提供这样的功能:跑完一张地图后,卸载dll再重新加载,这样就会可以避免我们那个问题了。可否?急~

8 个回复

倒序浏览
Iver
版主   /  发表于:2012-4-10 11:15:00
沙发

回复 1# ilovevista 的帖子

你好,ilovevista:
正式比赛时,每一局比赛都会启用新的进程。
但我不确定你的做法是不是合适,因为每一局比赛都会使用新的算法实例,不管是现在提供的工具,还是正式比赛时使用的程序,所以如果有必要在第一次运行时进行初始化,应该有其它更安全的环境无关的做法。
回复 使用道具 举报
tanhaiqingGPRC
论坛元老   /  发表于:2012-4-10 23:40:00
板凳

回复 2# Iver 的帖子

对,那些静态变量就是不变的,你跑玩一局后,不关掉,再跑一局,先后手不变,前后两局的分数本来是一样的,但却就是不一样了。。。。。。无语。。。。
      对了,如何在快要结束时(而不是结束时,因为结束与否不是我们控制的,是工具控制的)将静态变量恢复到第一次远行前的状态?我用了点方法,当不是很准确。。。我哭。。。。。有什么简单而有效地方法没?
回复 使用道具 举报
Iver
版主   /  发表于:2012-4-11 09:21:00
地板

回复 3# tanhaiqingGPRC 的帖子

你好,tanhaiqingGPRC:
简单有效的方法是不使用静态变量,除非你有足够充分的理由。
或者干脆重新启动工具。
回复 使用道具 举报
liecho
初级会员   /  发表于:2012-4-11 21:14:00
5#

回复 2# Iver 的帖子

你好:
你说的 “每一局比赛都会使用新的算法实例” 是指每次都会重新构造 IPlayer 实例是吗?
回复 使用道具 举报
liecho
初级会员   /  发表于:2012-4-11 21:15:00
6#

回复 4# Iver 的帖子

还有,每一局比赛是换一张地图对吗?楼主说的建筑列表可以继续使用是什么意思?
回复 使用道具 举报
Iver
版主   /  发表于:2012-4-11 22:21:00
7#

回复 6# liecho 的帖子

你好,liecho:
1.是的。
2.是的。他应该是说工具已经加载的建筑列表可以使用。
回复 使用道具 举报
liecho
初级会员   /  发表于:2012-4-12 18:23:00
8#

回复 7# Iver 的帖子

你好,再问一个问题::giggle

对手错误放置的建筑是怎么处理的?还在建在列表里吗?还是删除掉了?对于对手上次错误的放置,我去获取他的操作,得到的是empty吗?
回复 使用道具 举报
Iver
版主   /  发表于:2012-4-13 09:43:00
9#

回复 8# liecho 的帖子

你好,liecho:
错误旋转不会消耗列表中的建筑。
ExecutedOperations集合中包含的是原始操作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部