我尝试编写自己的Console Snake游戏,问题是这个.. 我把我的整个游戏放在主线程中,然后我创建了addVlakno(新线程)来计算秒数,所以它可以每秒从Main中创建的hra实例调用一个方法,所以它会清除控制台并做一些方法来移动
class Program
{
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(Run);
addVlakno.Start();
...
}
public static void Run()
{
Thread.Sleep(1000);
hra.method(); // The problem is here*
}
}
*我知道我必须在这里有一个现有的Hra实例,但我需要使用在Main中创建的实例,这是可能的吗?一些代表,或一些指针或其他方式?因为创建的hra具有游戏的所有值,所以我需要使用它们。
我试图将Hra hra = new Hra();
放在Main之前,但在这种情况下,即使在主要内容中我也无法使用它。
答案 0 :(得分:2)
您目前无法访问hra
,因为静态方法只能访问其他静态变量和方法。您可以在hra
之外将static
声明为Main
:
static Hra hra = new Hra();
static void Main(string[] args)
{
...
}
这样您就可以访问hra
中的Run
。
答案 1 :(得分:1)
您可以按如下方式传递参数:
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(()=>Run(hra));
addVlakno.Start();
}
public static void Run(Hra hra)
{
Thread.Sleep(1000);
hra.method(); // No problem here*
}