【发布时间】:2017-07-16 08:01:29
【问题描述】:
我对编程很陌生,我对我的代码有点卡住了。 我正在对机器人进行编程,在每次位置切换后,我都想将他的当前位置写入 ToString 方法,以便以后查看。我不确定 ToString 方法是否正确。也许我需要一个列表或数组? 我不是在寻求解决方案,而是在帮助我解决这个问题。 谢谢您的帮助! 请参阅下面的代码:
enum Richting
{
Boven,
Onder,
Links,
Rechts,
}
class Positie
{
public int X { get; set; }
public int Y { get; set; }
public Positie (int x, int y)
{
X = x;
Y = y;
}
}
class Spoor
{
public Robot Robot { get; set; }
public new string ToString()
{
return Robot.Positie.X + "-" + Robot.Positie.Y;
}
public void ToonSpoor()
{
ToString();
}
}
class Robot
{
public Positie Positie { get; set; }
public string Naam { get; set; }
public Robot (string naam, Positie positie1)
{
Naam = naam;
Positie = positie1;
}
public Robot (string naam)
{
Naam = naam;
this.Positie = new Positie(0,0);
}
public Richting Richting;
public virtual void Stap()
{
switch (Richting)
{
case Richting.Boven: Positie.Y++; Spoor.ToString();
break;
case Richting.Onder: Positie.Y--; Spoor.ToString();
break;
case Richting.Links: Positie.X--; Spoor.ToString();
break;
case Richting.Rechts: Positie.X++; Spoor.ToString();
break;
}
}
public virtual void Stap(int aantalStappen)
{
for (int i = 0; i < aantalStappen; i++)
{
switch (Richting)
{
case Richting.Boven:
Positie.Y++;
break;
case Richting.Onder:
Positie.Y--;
break;
case Richting.Links:
Positie.X--;
break;
case Richting.Rechts:
Positie.X++;
break;
}
}
}
public virtual void Draai()
{
switch (Richting)
{
case Richting.Boven: Richting = Richting.Rechts;
break;
case Richting.Onder: Richting = Richting.Links;
break;
case Richting.Links: Richting = Richting.Boven;
break;
case Richting.Rechts: Richting = Richting.Onder;
break;
}
}
public Spoor Spoor { get; set; }
}
class SpecialeRobot : Robot
{
public SpecialeRobot (string naam) : base("")
{
Naam = naam;
this.Positie = new Positie(0, 0);
}
public SpecialeRobot(string naam, Positie positie1) :base("")
{
Naam = naam;
Positie = positie1;
}
public override void Stap()
{
switch (Richting)
{
case Richting.Boven:
Positie.Y = Positie.Y + 2;
break;
case Richting.Onder:
Positie.Y = Positie.Y - 2;
break;
case Richting.Links:
Positie.X = Positie.X - 2;
break;
case Richting.Rechts:
Positie.X = Positie.X + 2;
break;
}
}
public override void Stap(int aantalStappen)
{
for (int i = 0; i < aantalStappen; i++)
{
switch (Richting)
{
case Richting.Boven:
Positie.Y++;
break;
case Richting.Onder:
Positie.Y--;
break;
case Richting.Links:
Positie.X--;
break;
case Richting.Rechts:
Positie.X++;
break;
}
}
}
public override void Draai()
{
switch (Richting)
{
case Richting.Boven:
Richting = Richting.Rechts;
break;
case Richting.Onder:
Richting = Richting.Links;
break;
case Richting.Links:
Richting = Richting.Boven;
break;
case Richting.Rechts:
Richting = Richting.Onder;
break;
}
}
}
class Program
{
static void Main(string[] args)
{
// Aanmaken van een positie-object
Positie positie1 = new Positie(2, 3);
// Aanmaken van een robot
Console.WriteLine("1 ------------------------------------------");
Robot robot1 = new Robot("Bart", positie1);
// ----controles uitvoeren
Console.WriteLine(robot1.Naam == "Bart");
Console.WriteLine(robot1.Positie.X == 2);
Console.WriteLine(robot1.Positie.Y == 3);
Console.WriteLine(robot1.Richting == Richting.Boven);
Console.WriteLine("11 ------------------------------------------");
robot1.Stap();
robot1.Stap();
robot1.Stap();
robot1.Spoor.ToonSpoor(); // 2 - 3 -> 2 - 4 -> 2 - 5
【问题讨论】: