我应该用哪种方法来表达计算机在编程时的想法?

时间:2010-04-20 07:20:34

标签: c#

我想创建一个简单的游戏,例如人类用户正在与计算机对战的tic tac toe。计算机功能需要几毫秒才能运行,但我想让计算机感知需要5秒才能完成。我应该使用哪种方法?

1)创建两个内存线程。一个用于计算机,一个用于人类用户。当计算机花5秒钟模仿思考时,人类用户线程暂停5秒钟。

2)使用timer或dispatchertimer

禁用输入设备5秒钟

3)你能想到的任何更好的方法......

谢谢!

编辑 - 问题是关于如何以及现在为什么。 5秒就是一个例子。我更喜欢1-2秒,但出于示例目的,我只选择了5.所以请关注什么是最好的方法,而不是5秒。再次感谢。

6 个答案:

答案 0 :(得分:4)

噪音和闪烁的灯光=数字思维。

使用无限循环将CPU调高至100%以产生热量。

开始循环浏览所有文件,以使硬盘驱动器指示灯闪烁并产生旋转噪音。

运行shell命令将目录更改为光驱以使光驱旋转。

设置大写锁定,numlock和滚动锁定开启和关闭,一些键盘有灯光。

检查您的主板是否支持任何额外的闪烁灯。

啊!好点子。许多粉丝都有API访问权限,所以将粉丝打开到100%很酷。恢复正常可能会很危险,因为如果你不小心关掉风扇,可能会造成严重损坏。

答案 1 :(得分:3)

你可以将光标变成沙漏并禁用主窗体(这将阻止用户输入任何东西),启动计时器5秒(我可以将此时间设置为可配置),当计时器启动时启用主窗体并再次将光标恢复正常。像这样:

当用户移动时调用此方法:

private void UserHasMoved()
        {
        Enabled = false;
        timer1.Interval = 5000;
        timer1.Start ();            
        }

然后是计时器的事件:

private void timer1_Tick(object sender, EventArgs e)
        {
        Enabled = true;
        timer1.Stop ();
        }

答案 2 :(得分:2)

对于速度更快的玩家来说这不会让人烦恼吗?可能是转牌的第二个,但你很快就会发现5秒太多。 无论哪种方式,都不要暂停UI线程,因为界面会“冻结”。

答案 3 :(得分:1)

由于人类使用GUI作为其界面,因此您无法暂停其线程。暂停GUI线程会使表单无法重新绘制,从而无法显示计算机的移动。

我只是禁用所有与游戏相关的输入,并显示计算机运行其大脑的动画。

答案 4 :(得分:1)

从您的问题来看,您似乎不希望计算机游戏如此闪电,以至于人类玩家无法看到它。为此,为什么不显示一些显示可能的播放的随机动画,并最终为所选择的动作设置动画。

编辑:我不得不同意禁用输入设备有点苛刻。也许将应用程序切换到用户的任何输入都不会影响电路板的状态,但会影响其他命令,例如保存,重启或退出。

答案 5 :(得分:1)

两个非常重要的可用性原则:

  • 不要阻止UI线程!仅禁用游戏控制,以便玩家在思考过程中无法执行任何步骤。
  • 向用户显示视觉反馈,表明他的想法并且他暂时无法执行该步骤。

当然,要仔细平衡思考的确切时间。把球员的时间视为非常珍贵。