C#

Задание по C#

15. Разработайте программу анимации движения планет в Солнечной системе.
using System;
using System.Drawing;
using System.Windows .Forms;

namespace SolarSystemAnimation
{
public partial class Form1 : Form
{
private readonly Image[] _planets;
private readonly PointF[] _positions;
private readonly float[] _speeds;
private readonly float[] _sizes;
private readonly float[] _distances;

public Form1()
{
InitializeComponent();

// Load the images of the planets
_planets = new Image[]
{
Image.FromFile("mercury.png"),
Image.FromFile("venus.png"),
Image.FromFile("earth.png"),
Image.FromFile("mars.png"),
Image.FromFile("jupiter.png"),
Image.FromFile("saturn.png"),
Image.FromFile("uranus.png"),
Image.FromFile("neptune.png")
};

// Initialize the positions, speeds, sizes, and distances of the planets
_positions = new PointF[]
{
new PointF(200, 200),
new PointF(250, 200),
new PointF(300, 200),
new PointF(350, 200),
new PointF(450, 200),
new PointF(500, 200),
new PointF(550, 200),
new PointF(600, 200)
};
_speeds = new float[] { 0.05f, 0.04f, 0.03f, 0.02f, 0.01f, 0.009f, 0.008f, 0.007f };
_sizes = new float[] { 0.1f, 0.15f, 0.2f, 0.15f, 0.3f, 0.25f, 0.2f, 0.1f };
_distances = new float[] { 0, 0, 0, 0, 0, 0, 0, 0 };
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics ;

for (int i = 0; i < _planets.Length; i++)
{
g.DrawImage(_planets[i], _positions[i].X, _positions[i].Y, _sizes[i] * _planets[i].Width, _sizes[i] * _planets[i].Height);

_distances[i] += _speeds[i];
_positions[i].X = 200 + (float)(_distances[i] * Math.Cos(i));
_positions[i].Y = 200 + (float)(_distances[i] * Math.Sin(i));
}
}

private void timer1_Tick(object sender, EventArgs e)
{
Invalidate();
}
}
}
Александр Виноградов
Александр Виноградов
1 175
Лучший ответ
Сергей Доронин При запуске ошибка

Сергей Доронин я создаля тут наугад если что надписи делал,потом исправлю
Сергей Доронин я папку создал и закинул сюда все,но выдает тоже самое
 using System; 

namespace SolarSystemAnimation
{
class Program
{
static void Main(string[] args)
{
Console.WindowHeight = 30;
Console.WindowWidth = 60;
Console.BufferHeight = 300;
Console.BufferWidth = 600;

int sunX = Console.WindowWidth / 2;
int sunY = Console.WindowHeight / 2;
char sun = 'S';

int planet1X = (int)(sunX + Math.Cos(0) * 10);
int planet1Y = (int)(sunY + Math.Sin(0) * 5);
char planet1 = 'E';

int planet2X = (int)(sunX + Math.Cos(30) * 15);
int planet2Y = (int)(sunY + Math.Sin(30) * 10);
char planet2 = 'O';

int planet3X = (int)(sunX + Math.Cos(60) * 20);
int planet3Y = (int)(sunY + Math.Sin(60) * 15);
char planet3 = 'O';

int planet4X = (int)(sunX + Math.Cos(90) * 25);
int planet4Y = (int)(sunY + Math.Sin(90) * 20);
char planet4 = 'O';

int planet5X = (int)(sunX + Math.Cos(120) * 30);
int planet5Y = (int)(sunY + Math.Sin(120) * 25);
char planet5 = 'O';

double angle1 = 0;
double angle2 = 30;
double angle3 = 60;
double angle4 = 90;
double angle5 = 120;

while (true)
{
Console.Clear();
Console.SetCursorPosition(sunX, sunY);
Console.Write(sun);

Console.SetCursorPosition(planet1X, planet1Y);
Console.Write(planet1);

Console.SetCursorPosition(planet2X, planet2Y);
Console.Write(planet2);

Console.SetCursorPosition(planet3X, planet3Y);
Console.Write(planet3);

Console.SetCursorPosition(planet4X, planet4Y);
Console.Write(planet4);

Console.SetCursorPosition(planet5X, planet5Y);
Console.Write(planet5);

planet1X = (int)(sunX + Math.Cos(angle1) * 10);
planet1Y = (int)(sunY + Math.Sin(angle1) * 5);

planet2X = (int)(sunX + Math.Cos(angle2) * 15);
planet2Y = (int)(sunY + Math.Sin(angle2) * 10);

planet3X = (int)(sunX + Math.Cos(angle3) * 20);
planet3Y = (int)(sunY + Math.Sin(angle3) * 15);

planet4X = (int)(sunX + Math.Cos(angle4) * 25);
planet4Y = (int)(sunY + Math.Sin(angle4) * 20);

planet5X = (int)(sunX + Math.Cos(angle5) * 30);
planet5Y = (int)(sunY + Math.Sin(angle5) * 25);
angle1 += 0.05;
angle2 += 0.04;
angle3 += 0.03;
angle4 += 0.02;
angle5 += 0.01;

System.Threading.Thread.Sleep(100);
}
}
}
}


Сергей Доронин Не работает,там же нужно использовать разные элементы и тд,а тут все просто в коде одном.