我在制作彩盒显示器时遇到了一些问题。
我正在制作一个简单的RPG游戏(原型),玩家可以制作一个角色。角色类附有一个图片框,当他们创建角色时,会为此图片框选择一个图像。
游戏开始后,角色会在某个位置产生。但是,图片框并没有显示出来。在某个位置,角色可以四处移动。在随机数量的步骤之后,开始战斗,并且加载战斗屏幕。尽管图片框没有加载,但角色似乎四处移动,并且战斗确实开始了。
当我离开战斗并返回到表格时,会出现角色的图片框。我在位置表单上有其他图片框,然后加载。
某个位置的构造函数调用了一个名为initialise的方法。以下是此方法的一些相关代码:
public void Initialise()
{
c = StateManager.C;
StepCount = 0;
SetStepsTillCombat();
EntranceLocation = "";
SetStartPosition();
c.Pic.Location = NewLocation ;//c.Pic is the picturebox
this.Controls.Add(c.Pic);
设置开始位置方法旨在确定玩家应该在哪里产生。代码如下:
public void SetStartPosition()
{
switch (EntranceLocation)
{
case "North":
StartLocation.X = this.Width/2;
StartLocation.Y=10;
NewLocation = StartLocation;
break;
case "South":
StartLocation.X = this.Width/2;
StartLocation.Y=this.Height - c.Pic.Height;
NewLocation = StartLocation;
break;
case "West":
StartLocation.X = 10;
StartLocation.Y=this.Height/2;
NewLocation = StartLocation;
break;
case "East":
StartLocation.X = this.Width-c.Pic.Height;
StartLocation.Y=this.Height/2;
NewLocation = StartLocation;
break;
case "":
StartLocation.X = this.Width / 2;
StartLocation.Y = this.Height / 2;
NewLocation = StartLocation;
break;
}
}
我无法记住为什么我甚至使用startlocation,而不是直接设置newlocation,有一个原因,然后我删除了该功能。无论如何,根据玩家进入该位置的位置,他们的生成点会有所不同,或者如果玩家在开始游戏时进入第一个位置,他们就会从一个设定点开始。在分配播放器图片框的位置之前,我先调用此方法。
首次进入某个位置时,没有图片。当我离开战斗时,我有以下代码:
public void EndClick(object sender, EventArgs e)
{
this.Hide();
c.NumberOfBattles++;
returnLocation.Spawn(c.Location);//Coordinates for where to spawn the player
returnLocation.SetStepsTillCombat();
returnLocation.StepCount = 0;
returnLocation.Show();//Load the location I entered combat from
}
spawn方法如下:
public void Spawn(Point p)
{
c.Location = p;
c.Pic.Location = c.Location;
this.Controls.Add(c.Pic);
}
执行此操作时,c.Pic会显示。
我无法看到我在这里做错了什么,任何输入都会受到赞赏。我想我已经包含了所有相关的代码。
编辑:
我找到了一个解决方法,每次移动角色时,我都会调用spawn方法,尽管这似乎是一种效率低下的方法。