Эй, я работал над проектом, в котором мое приложение должно рассчитывать данные с начальной скоростью, углом и высотой движения, и теперь моя единственная проблема - путь, который делает снаряд. У меня была идея создать двумерный массив строк, чтобы имитировать его, но сама идея или мои вычисления неверны. Для массива я округляю данные двойного типа и затем приводю их к целым числам.
public Canvas(int height, int width)
{
this.height = height;
this.width = width;
board = new string[height+1, width+1]; //indexing needs more space
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
board[i, 0] = "|";
board[height - 1, j] = "-";
}
}
board[height - 1, 0] = "O";
board[(int)Math.Round(Program.p.Y0), 0] = "+";
for (int j = 1; j < width; j++)
{
board[Program.p.OtherPosition(j), j] = "+";
}
}
Вот конструктор моего класса Canvas, который заполняет мою строку [,]. Program.p - это сам снаряд, имеющий такие атрибуты, как y0 , который является начальной высотой. OtherPosition принимает j для вычисления, где метод должен поместить символ *, где позиция x = j . Например:
public int OtherPosition(int position)
{
y = y0 + v0y * (position / (2 * v0x)) - (g / 2) * Math.Pow(position / (v0x * 2), 2);
return (int)(Math.Round(Program.p.Ymax, 1) * 2)+1- 2 * ((int)Math.Round(y));
}
Генерация холста выглядит следующим образом:
static void GenerateCanvas(Projectile p)
{
int height = (int)(Math.Round(p.Ymax,5)*2);
int width = (int)(Math.Round(p.Xmax,5)*2);
board = new Canvas(height, width);
}
Множитель * 2 предназначен для увеличения размера всей самой биарды. Может ли кто-нибудь помочь мне сгладить путь? Иногда есть * символы друг под другом, что я понятия не имею, как. Или как еще это сделать?