问题列表 - 第12255页

如何为游戏创建良好的评估功能?

我有时会编写程序来玩棋盘游戏.基本策略是标准的alpha-beta修剪或类似的搜索,有时通过终结游戏或开放的常用方法来增强.我主要使用国际象棋变体,所以当需要选择我的评估功能时,我会使用基本的国际象棋评估功能.

但是,现在我正在编写一个程序来玩一个全新的棋盘游戏.我如何选择一个好的甚至是体面的评估函数?

主要的挑战是相同的棋子总是在棋盘上,因此通常的材料功能不会根据位置而改变,并且游戏的播放次数不到一千次左右,所以人类不一定玩得太多还没有给出见解.(PS.我考虑过MoGo方法,但随机游戏不太可能终止.)

游戏细节:游戏在10×10的棋盘上进行,每侧固定6个棋盘.这些作品具有一定的运动规则,并以某种方式相互作用,但没有任何一块被捕获.游戏的目标是在棋盘上的某些特殊方块中放置足够的棋子.计算机程序的目标是提供与当前人类玩家竞争或更好的玩家.

artificial-intelligence machine-learning game-theory evaluation-function alpha-beta-pruning

19
推荐指数
2
解决办法
2万
查看次数

堆指针分配之间的差异

我有以下数据结构:

struct Inner
{
    int myValue;
};

struct Outer
{
    Inner* inner;
};
Run Code Online (Sandbox Code Playgroud)

选项1

如果我执行以下操作:

Outer outer;
outer.inner = NULL;

outer.inner = new inner;
inner* pInner = outer.inner;
Run Code Online (Sandbox Code Playgroud)

然后为以下2个值添加监视:

  • outer.inner
  • 平纳

那么它们都是非NULL,并且值相等.

选项2

如果我执行以下操作:

Outer outer;
outer.inner = NULL;

inner* pInner = outer.inner;
if (! pInner)
{
    pInner = new inner;
}
Run Code Online (Sandbox Code Playgroud)

然后pInner指向有效的堆内存,而outer.inner仍为NULL.

问题

  1. 为什么选项不同 - 它们是否应该同时指向选项2中的相同内存?

  2. 假设我使用选项1,然后我从内部读取值.然后我可以互换使用pInner和outer.inner不能吗?为什么分配内存会有所不同?

c++ heap pointers

1
推荐指数
1
解决办法
1168
查看次数

函数式语言中的程序是否更有可能出现堆栈溢出?

我开始学习ocaml,我非常欣赏语言中递归的力量.但是,我担心的一件事是堆栈溢出.

如果ocaml使用堆栈进行函数调用,它最终是否会溢出堆栈?例如,如果我有以下功能:

let rec sum x =
  if x > 1 then f(x - 1) + x
  else x;;
Run Code Online (Sandbox Code Playgroud)

它必须最终导致堆栈溢出.如果我在c ++(使用递归)中做相同的事情,我知道它会溢出.

所以我的问题是,是否有内置的安全措施来防止函数式语言溢出堆栈?如果不是这样,它们是不是没那么有用,因为上面的求和算法,用带有for循环的过程样式编写,可以处理任何数字(不相关的整数溢出)?

stack-overflow functional-programming imperative-programming tail-call-optimization

5
推荐指数
2
解决办法
501
查看次数

SubSonic 2.x批量查询SQLite

我正在编写一个将XML文件导入SQLite数据库的Windows服务.

有3,000条奇怪的记录需要创建,我正在使用SubSonic 2.2进行项目.

而不是循环遍历列表并逐个将它们添加到数据库中,有一种方法可以一次批量查询多个新记录.

我知道3.x中的"BatchQuery"对象会帮助我,但我希望2.x中有一些东西可以执行类似的任务.

先谢谢道格

subsonic transactions batch-file

1
推荐指数
1
解决办法
692
查看次数

十大负面测试清单

我搜索了SO,找到了关于负面测试的小事,这也是开发人员在工作中应该记住的一件非常重要的事情.如何为负面测试开发人员列出前十大测试用例应该记住协同工作?

谢谢!

负面测试的定义:

在软件测试中,一种测试旨在确定系统在定义之外的响应.它旨在确定系统是否因意外输入而崩溃.

testing

7
推荐指数
1
解决办法
9137
查看次数

如何使用C#生成表示一天中开始和结束时间之间15分钟时间间隔的字符串列表?

我正在创建一个表单,用户可以使用预设值指定开始和结束时间.我想在一天内的上午9点到下午5点之间生成一个15分钟间隔的字符串表示列表.

.net c#

3
推荐指数
3
解决办法
2756
查看次数

UIPickerView:最后一个值后跟第一个值

任何人都可以帮助我如何使UIPickerView在最后一行的值之后显示第一行的值,就像UIDatePicker在12之后将跟随1.

谢谢

iphone objective-c uipickerview

1
推荐指数
1
解决办法
3619
查看次数

当我捕获异常时,如何获取前一帧的类型,文件和行号?

这个问题来看,我现在正在进行一级错误处理.也就是说,我调用一个调用另一个更大函数的函数,我希望它在更大的函数中失败,而不是在较小的函数中.具体的例子.代码是:

import sys, os

def workerFunc():
    return 4/0

def runTest():
    try:
        print workerFunc()
    except:
        ty,val,tb = sys.exc_info()
        print "Error: %s,%s,%s" % (
            ty.__name__,
            os.path.split(tb.tb_frame.f_code.co_filename)[1],
            tb.tb_lineno)

runTest()
Run Code Online (Sandbox Code Playgroud)

输出是:

Error: ZeroDivisionError,tmp2.py,8
Run Code Online (Sandbox Code Playgroud)

但第8行是"print workerFunc()" - 我知道该行失败了,但我想要之前的行:

Error: ZeroDivisionError,tmp2.py,4
Run Code Online (Sandbox Code Playgroud)

python error-handling exception-handling exception

7
推荐指数
1
解决办法
475
查看次数

Visual C++版本的GCC函数

是否有以下的Visual C++版本(在GCC中)?

  1. __builtin_return_address
  2. __builtin_frame_address

参考 - http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html

如果没有,有没有办法模仿它们?

谢谢.

c++ gcc g++ visual-c++

2
推荐指数
1
解决办法
1197
查看次数

如何让我的网页加载速度更快?

假设一个空浏览器缓存 - 如何仅通过应用HTML/CSS/JavaScript代码更改来加快网页加载速度?

这意味着,不建议使用CDN等移动服务器.只需更改代码以使其加载速度更快.

html javascript css

5
推荐指数
4
解决办法
2239
查看次数