我实际上是编写一个pacman(C#控制台)我想知道如何每秒移动我的幽灵,但我也想能够随时移动我的pacman我想要。以不同的方式使用线程的两部分
我想我的鬼保持mooving每秒无论吃豆子做的,我应该能够打动吃豆子当过,我想,和鬼只需要移动每一秒。
我想我必须使用线程系统,所以我想知道,如果你知道我是如何进行,以及如何线程工作,无法找到有关的任何信息:■。
我实际上是编写一个pacman(C#控制台)我想知道如何每秒移动我的幽灵,但我也想能够随时移动我的pacman我想要。以不同的方式使用线程的两部分
我想我的鬼保持mooving每秒无论吃豆子做的,我应该能够打动吃豆子当过,我想,和鬼只需要移动每一秒。
我想我必须使用线程系统,所以我想知道,如果你知道我是如何进行,以及如何线程工作,无法找到有关的任何信息:■。
你可能会感到困惑,因为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());
}
}
}
}
是的,这是我需要的。谢谢 – 2013-05-08 21:46:39
你并不需要使用不同的线程每个鬼。这些都可以使用Game Loop
任何游戏的核心组成部分,在一个线程中完成的,从编程的角度来看,是 游戏循环。游戏循环允许游戏顺利运行 ,无论用户的输入或缺少。
大多数传统的软件程序响应用户输入,做什么都不 没有它。例如,文字处理器将文字格式和 文字作为用户类型。如果用户没有输入任何内容,则 处理器不会执行任何操作。某些功能可能需要很长时间才能完成,但所有功能都是由用户告知程序做某事的 。
游戏,而另一方面,必须继续不管 用户的输入操作。游戏循环允许这样做。一个高度简化的游戏 循环,在伪代码,可能是这个样子:
while(user doesn't exit) check for user input run AI move enemies resolve collisions draw graphics play sounds end while游戏循环可以被细化和修改游戏开发 的进展,但大多数游戏都是基于这个基本思路。
按照这个模式,你的游戏会更容易编写。
问题是,如果我决定不捅我的牧马人,鬼将冻结到:s – 2013-05-08 17:18:22
这不是它的工作原理。移动pacman将处于“解决冲突”步骤。如果pacman不移动那个函数就没有任何循环。 – 2013-05-08 18:36:43
'控制台Pacman':你有没有考虑使用[新华社](HTTP://en.wikipedia .org/wiki/Microsoft_XNA)? – phadaphunk 2013-05-08 17:12:56
我做了^^但我需要使用控制台应用程序为学校 – 2013-05-08 17:14:13
我已编辑您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-05-08 17:15:05