После запуска приложения на экране отображаются строки, расположенные в хаотическом порядке, а также шарики, двигающиеся по принципу броуновского движения. При столкновении шарика с буквой должен изменятся ее цвет. Выбор цвета определяется случайным образом. Программа должна позволять пользователю вводить строки и изменять размер шрифта строки.
вот сам сделал кое что
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
List<shar> balllist = new List<shar>(); // список экземпляров (шаров)
int razmer, kolvo;
Random rand = new Random(DateTime.Now.Millisecond);
public class shar
{
public int X, Y; // Координаты
public int R; // Радиус (половина размера)
public int dX, dY; // Путь за 1 тик таймера
// Заполнение данных о шаре
public shar(int Razm, Random rand)
{
R = Razm; // Размер шара
X = rand.Next(R, 700); // Координаты центра
Y = rand.Next(R, 300);
dX = rand.Next(1, 10); // Путь за один tick таймера (в пикселях)
dY = rand.Next(1, 10);
}
// Рисование
public void drawBall(PaintEventArgs e)
{
Graphics rg = e.Graphics;
Pen pen = new Pen(Color.Red);
// Отрисовка шаров
rg.DrawEllipse(pen, X - (R / 2), Y - (R / 2), R, R);
}
//рассчет траектории
public void beginBall(int width, int height, int razm)
{
if (X <= (razm / 2)) dX = -dX; // Если координата Х <= 10 то меняем направление движения по оси Х на противоположное
if (X >= width - (razm / 2)) dX = -dX;
if (Y <= (razm / 2)) dY = -dY; // Если координата У <= 10 то меняем направление движения по оси У на противоположное
if (Y >= height - (razm / 2)) dY = -dY;
// прибавляем к текущей координате изменение пути
X += dX;
Y += dY;
}
// соударение шаров друг с другом
public void collisionball(shar ball1, int razmer)
{
if ((Math.Pow(X - ball1.X, 2) + Math.Pow(Y - ball1.Y, 2) <= Math.Pow(razmer, 2)))
{
dX = -dX;
// dY = -dY;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
razmer = Convert.ToInt32(textBox2.Text);
kolvo = Convert.ToInt32(textBox1.Text);
balllist.Clear(); // Очищаем список шаров
for (int i = 0; i < kolvo; i++)
{
balllist.Add(new shar(Convert.ToInt32(textBox2.Text), rand)); // Заполнение списка шаров
}
}
private void tick(object sender, EventArgs e)
{
// Метод проверки соударения друг с другом
for (int i = 0; i < balllist.Count; i++)
for (int j = 0; j < balllist.Count; j++)
{
if (i != j)
balllist[i].collisionball(balllist[j], razmer);
}
// Метод проверки соударения со стенками
foreach (shar ball in balllist)
ball.beginBall(pictureBox1.Width, pictureBox1.Height, razmer);
pictureBox1.Invalidate(); // Перерисовка
}
private void paint(object sender, PaintEventArgs e)
{
foreach (shar ball in balllist)
ball.drawBall(e); // Само рисование
}
}
}
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.