2013-05-08 54 views
0


我实际上是编写一个pacman(C#控制台)我想知道如何每秒移动我的幽灵,但我也想能够随时移动我的pacman我想要。以不同的方式使用线程的两部分

我想我的鬼保持mooving每秒无论吃豆子做的,我应该能够打动吃豆子当过,我想,和鬼只需要移动每一秒。

我想我必须使用线程系统,所以我想知道,如果你知道我是如何进行,以及如何线程工作,无法找到有关的任何信息:■。

+0

'控制台Pacman':你有没有考虑使用[新华社](HTTP://en.wikipedia .org/wiki/Microsoft_XNA)? – phadaphunk 2013-05-08 17:12:56

+0

我做了^^但我需要使用控制台应用程序为学校 – 2013-05-08 17:14:13

+0

我已编辑您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-05-08 17:15:05

回答

0

你可能会感到困惑,因为Console.ReadKey()阻塞 ...所以你的游戏循环将被卡住等待用户按一个键吗?如果队列中已经有一个,你只需要用ReadKey()来获取按键。这可以用Console.KeyAvailable进行检查,如果钥匙已经在那里,则返回true。这样,如果没有按键被按下,游戏循环就会持续循环......但是你仍然可以捕捉它并用它做一些事情。出来试试这个简单的例子,看看会发生什么:

class Program 
{ 
    static void Main(string[] args) 
    { 
     while (true) 
     { 
      System.Threading.Thread.Sleep(250); 
      Console.Write("."); 
      if (Console.KeyAvailable) 
      { 
       ConsoleKeyInfo key = Console.ReadKey(true); // read key without displaying it 
       Console.WriteLine(""); 
       Console.WriteLine("Key Pressed: " + key.KeyChar.ToString()); 
      } 
     } 
    } 
} 
+0

是的,这是我需要的。谢谢 – 2013-05-08 21:46:39

2

你并不需要使用不同的线程每个鬼。这些都可以使用Game Loop

任何游戏的核心组成部分,在一个线程中完成的,从编程的角度来看,是 游戏循环。游戏循环允许游戏顺利运行 ,无论用户的输入或缺少。

大多数传统的软件程序响应用户输入,做什么都不 没有它。例如,文字处理器将文字格式和 文字作为用户类型。如果用户没有输入任何内容,则 处理器不会执行任何操作。某些功能可能需要很长时间才能完成,但所有功能都是由用户告知程序做某事的 。

游戏,而另一方面,必须继续不管 用户的输入操作。游戏循环允许这样做。一个高度简化的游戏 循环,在伪代码,可能是这个样子:

 while(user doesn't exit) 
    check for user input 
    run AI 
    move enemies 
    resolve collisions 
    draw graphics 
    play sounds 
    end while

游戏循环可以被细化和修改游戏开发 的进展,但大多数游戏都是基于这个基本思路。

按照这个模式,你的游戏会更容易编写。

+0

问题是,如果我决定不捅我的牧马人,鬼将冻结到:s – 2013-05-08 17:18:22

+0

这不是它的工作原理。移动pacman将处于“解决冲突”步骤。如果pacman不移动那个函数就没有任何循环。 – 2013-05-08 18:36:43

相关问题