Главная страница

Курсовая работа Реализация класса динамически перемещающихся графических объектов средствами языка программирования C#. Реализация класса динамически перемещающихся графических объекто. Реализация класса динамически перемещающихся графических объектов средствами языка программирования C#


Скачать 366.36 Kb.
НазваниеРеализация класса динамически перемещающихся графических объектов средствами языка программирования C#
АнкорКурсовая работа Реализация класса динамически перемещающихся графических объектов средствами языка программирования C
Дата17.11.2021
Размер366.36 Kb.
Формат файлаdocx
Имя файлаРеализация класса динамически перемещающихся графических объекто.docx
ТипКурсовая
#274123
страница3 из 3
1   2   3


Рисунок 7 – Объект круг увеличивается на каждом витке



Рисунок 8 – Объект круг уменьшается на каждом витке




Рисунок 9 – Объект черепаха уменьшается на каждом витке

Если нажать на кнопку “Проверить объект”, то можно узнать состояние объекта (рис. 9).


Рисунок 9 –Информация об объекте

Исключительная ситуация может возникнуть тогда, когда объект не создан и пользователь нажимает на кнопку “Перемещение”(Увеличить или уменьшить), то программа выведет ошибку (рис. 10).



Рисунок 10 – Не выбран объект

ЗАКЛЮЧЕНИЕ

В результате курсовой работы была выполнена поставленная цель – Реализовать анимацию нескольких объектов по выбору пользователя. Реализованы различные анимации для каждого объекта. Программа реализована с помощью языка программирования C#. Выполнен удобный пользовательский интерфейс с помощью Windows Forms. Приобретены навыки создания UML-диаграммы и отчетов. Были получены навыки в тестирование и отладки программного продукта.

Полученные навыки и умения пригодятся в дальнейшем для успешного построения карьеры.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Metanit сайт о программирование [Электронный ресурс] – Режим доступа: https://metanit.com/ - 19.12.2020.

2. CitForum о программирование [Электронный ресурс] – Режим доступа: http://citforum.ru/ - 19.12.2020.

3. Стандарт организации "Оформление выпускных квалификационных и курсовых работ (проектов)" СТО СМК 4.2.3.21-2018. – Благовещенск: АмГУ, 2018. – 75 с.

4. Галаган, Т. А. Методические указания к курсовому проектированию по дисциплине «Объектно–ориентированный анализ, программирование» / Т. А. Галаган. – Благовещенск: Амурский государственный университет, 2020. – 24 с.

ПРИЛОЖЕНИЕ А

UML-диаграмма программы
Рисунок А.1 содержит представление UML-диаграммы программы.



Рисунок А1 – UML-диаграмма программы


ПРИЛОЖЕНИЕ Б

Код программы
Код файла Form1.cs

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 WindowsFormsApp6

{

public partial class Form1 : Form

{
Graphics g;

TurtleFigureMoveUpDown turtle;

CircleMove figure;
public Form1()

{

InitializeComponent();

g = pictureBox1.CreateGraphics();

}

private void button1_Click(object sender, EventArgs e)

{

if (radioButton1.Checked)

{

g.Clear(Color.White);

turtle = new TurtleFigureMoveUpDown(pictureBox1.Width / 2, pictureBox1.Height / 2);

turtle.Create(g, pictureBox1.Width / 2, pictureBox1.Height / 2);

figure = null;

}

else if (radioButton2.Checked)

{

g.Clear(Color.White);

figure = new CircleMove(pictureBox1.Width / 2, pictureBox1.Height / 2);

figure.Create(g, pictureBox1.Width / 2, pictureBox1.Height / 2);

turtle = null;

}

else

{

MessageBox.Show("Выберите объект", "Информация");

}

}
private void button2_Click(object sender, EventArgs e)

{

if (turtle != null)

{

turtle.Move(g);

}

else if (figure != null)

{

figure.Move(g);

}

else

{

MessageBox.Show("Выберите объект", "Информация");

}

}
private void button5_Click(object sender, EventArgs e)

{

if(turtle!=null)

{

turtle.StopMove();

turtle = null;

}

if (figure != null)

{

figure.StopMove();

figure = null;

}

g.Clear(Color.White);

}
private void button4_Click(object sender, EventArgs e)

{

if (turtle == null && figure == null)

{

MessageBox.Show("Объект не создан","Проверка");

}

else

{

MessageBox.Show("Объект создан", "Проверка");

}

}

private void button3_Click(object sender, EventArgs e)

{

if (radioButton1.Checked && turtle != null)

turtle.MoveIncrease(g);

else if (radioButton2.Checked && figure != null)

figure.MoveIncrease(g);

else MessageBox.Show("Объект не создан", "Ошибка");

}
private void button7_Click(object sender, EventArgs e)

{

if (radioButton1.Checked && turtle != null)

turtle.MoveDecrease(g);

else if (radioButton2.Checked && figure != null)

figure.MoveDecrease(g);

else MessageBox.Show("Объект не создан", "Ошибка");

}

private void button6_Click_1(object sender, EventArgs e)

{

if (figure != null)

{

figure.StopMove();

}

else if (turtle != null)

{

turtle.StopMove();

}

}

}

}
Код файла Class1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace WindowsFormsApp6

{

interface MoveUpDown

{

void MoveIncrease(Graphics g);

void MoveDecrease(Graphics g);

}

abstract class Figure

{

protected Random r;

protected Timer timer;

protected int CenterX;

protected int CenterY;

protected float time;
public abstract void Create(Graphics g, int sizeX, int sizeY);
public abstract void Move(Graphics g);
public void StopMove()

{

if (timer != null)

timer.Stop();

}

}
class TurtleFigure : Figure

{

protected Pen p = new Pen(Color.Black, 1);

protected int sizePaw = 14; //Размер лапы

protected int sizeEye = 4; //Размер глаза

protected int sizeHeadX = 22; //Размер лапы

protected int sizeHeadY = 20; //Размер глаза
public TurtleFigure(int sizeX, int SizeY)

{

CenterX = sizeX;

CenterY = SizeY;

}
public override void Create(Graphics g, int sizeX, int sizeY)

{

g.FillEllipse(Brushes.Green, sizeX - 11, sizeY - 19, sizeHeadX, sizeHeadY);

g.DrawEllipse(p, sizeX - 11, sizeY - 19, sizeHeadX, sizeHeadY);
g.FillEllipse(Brushes.Black, sizeX - 7, sizeY - 14, sizeEye, sizeEye);

g.FillEllipse(Brushes.Black, sizeX + 3, sizeY - 14, sizeEye, sizeEye);
g.FillEllipse(Brushes.Green, sizeX - 32, sizeY + 4, sizePaw, sizePaw);

g.DrawEllipse(p, sizeX - 32, sizeY + 4, sizePaw, sizePaw);
g.FillEllipse(Brushes.Green, sizeX + 18, sizeY + 4, sizePaw, sizePaw);

g.DrawEllipse(p, sizeX + 18, sizeY + 4, sizePaw, sizePaw);
g.FillEllipse(Brushes.Green, sizeX - 30, sizeY + 44, sizePaw, sizePaw);

g.DrawEllipse(p, sizeX - 30, sizeY + 44, sizePaw, sizePaw);
g.FillEllipse(Brushes.Green, sizeX + 16, sizeY + 44, sizePaw, sizePaw);

g.DrawEllipse(p, sizeX + 16, sizeY + 44, sizePaw, sizePaw);
g.FillEllipse(Brushes.Brown, sizeX - 25, sizeY, 50, 60);

g.DrawEllipse(p, sizeX - 25, sizeY, 50, 60);

}
public override void Move(Graphics g)

{

timer = new Timer();

timer.Interval = 500;

time = 0;

Brush b = Brushes.Brown;

r = new Random();

int k;
timer.Tick += (sender, args) =>

{

int x = (int)(CenterX + 120 * Math.Sin(time));

int y = (int)(CenterY + 120 * Math.Cos(time));

time += 0.5f;
g.Clear(Color.White);
if (time % 7 == 0)

{

time = 0;

x = (int)(CenterX + 120 * Math.Sin(time));

y = (int)(CenterY + 120 * Math.Cos(time));

k = r.Next(0, 3);

switch (k)

{

case 0:

b = Brushes.Brown;

break;
case 1:

b = Brushes.SaddleBrown;

break;
case 2:

b = Brushes.Gray;

break;

}

time += 0.5f;

}
this.Create(g, x, y);

g.FillEllipse(b, x - 25, y, 50, 60);

}; timer.Start();

}

}

class TurtleFigureMoveUpDown : TurtleFigure, MoveUpDown

{

public TurtleFigureMoveUpDown(int sizeX, int SizeY) : base(sizeX, SizeY) { }
int countCircle;

int changeSizeEye;

int changeSizeHeadY;

int changeSizePaw;

int changeSizeHeadX;
public void MoveIncrease(Graphics g)

{

int x;

int y;
changeSizeEye = sizeEye;

changeSizeHeadY = sizeHeadY;

changeSizePaw = sizePaw;

changeSizeHeadX = sizeHeadX;

countCircle = 0;
g.Clear(Color.White);
timer = new Timer();

timer.Interval = 500;

time = 0;
timer.Tick += (sender, args) =>

{

x = (int)(CenterX + 120 * Math.Sin(time));

y = (int)(CenterY + 120 * Math.Cos(time));

time += 0.5f;
g.Clear(Color.White);
if (time % 7 == 0)

{

countCircle++;

if (countCircle == 2)

timer.Stop();
time = 0;

changeSizeEye++;

changeSizeHeadY += 2;

changeSizePaw += 2;

changeSizeHeadX += 2;
x = (int)(CenterX + 120 * Math.Sin(time));

y = (int)(CenterY + 120 * Math.Cos(time));

}
g.FillEllipse(Brushes.Green, x - changeSizeHeadX / 2 + 2, y - changeSizeHeadY + 1, changeSizeHeadX, changeSizeHeadY);

g.DrawEllipse(p, x - changeSizeHeadX / 2 + 2, y - changeSizeHeadY + 1, changeSizeHeadX, changeSizeHeadY);
g.FillEllipse(Brushes.Black, x - changeSizeEye - 2, y - 3 * changeSizeEye, changeSizeEye, changeSizeEye);

g.FillEllipse(Brushes.Black, x + changeSizeEye, y - 3 * changeSizeEye, changeSizeEye, changeSizeEye);
g.FillEllipse(Brushes.Green, x - 2 * changeSizePaw - 3, y + changeSizePaw - 10, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x - 2 * changeSizePaw - 3, y + changeSizePaw - 10, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x + changeSizePaw + 4, y + changeSizePaw - 10, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x + changeSizePaw + 4, y + changeSizePaw - 10, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x - changeSizePaw * 2 - 4, y + changeSizePaw * 2 + 6, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x - changeSizePaw * 2 - 4, y + changeSizePaw * 2 + 6, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x + changeSizePaw + 4, y + changeSizePaw * 2 + 6, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x + changeSizePaw + 4, y + changeSizePaw * 2 + 6, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Brown, x - 25, y, 50, 60);

g.DrawEllipse(p, x - 25, y, 50, 60);
}; timer.Start();
}
public void MoveDecrease(Graphics g)

{

int x;

int y;
changeSizeEye = sizeEye;

changeSizeHeadY = sizeHeadY;

changeSizePaw = sizePaw;

changeSizeHeadX = sizeHeadX;

countCircle = 0;
g.Clear(Color.White);
timer = new Timer();

timer.Interval = 300;

time = 0;
timer.Tick += (sender, args) =>

{

x = (int)(CenterX + 120 * Math.Sin(time));

y = (int)(CenterY + 120 * Math.Cos(time));

time += 0.5f;
g.Clear(Color.White);
if (time % 7 == 0)

{

countCircle++;

if (countCircle == 3)

timer.Stop();

time = 0;

changeSizeHeadY -= 1;

changeSizePaw -= 1;

changeSizeHeadX -= 1;

x = (int)(CenterX + 120 * Math.Sin(time));

y = (int)(CenterY + 120 * Math.Cos(time));

}
g.FillEllipse(Brushes.Green, x - 11, y - 17, changeSizeHeadX, changeSizeHeadY);

g.DrawEllipse(p, x - 11, y - 17, changeSizeHeadX, changeSizeHeadY);
g.FillEllipse(Brushes.Black, x - 7, y - 13, changeSizeEye, changeSizeEye);

g.FillEllipse(Brushes.Black, x + 3, y - 13, changeSizeEye, changeSizeEye);
g.FillEllipse(Brushes.Green, x - 30, y + 4, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x - 30, y + 4, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x + 18, y + 4, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x + 18, y + 4, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x - 30, y + 44, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x - 30, y + 44, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Green, x + 16, y + 44, changeSizePaw, changeSizePaw);

g.DrawEllipse(p, x + 16, y + 44, changeSizePaw, changeSizePaw);
g.FillEllipse(Brushes.Brown, x - 25, y, 50, 60);

g.DrawEllipse(p, x - 25, y, 50, 60);
}; timer.Start();

}

}
////////////////////

///////////Класс черепашка////////////

////////////////////

class CircleFigure : Figure

{

protected int size = 50;

protected Brush brush = Brushes.Violet;

int count;
public CircleFigure(int CenterX, int CenterY)

{

this.CenterX = CenterX;

this.CenterY = CenterY;

}
public override void Create(Graphics g, int sizeX, int sizeY)

{

g.FillEllipse(brush, sizeX - size, sizeY - size, 100, 100);

}
public override void Move(Graphics g)

{

timer = new Timer();

timer.Interval = 300;

time = 0;

count = 0;
timer.Tick += (sender, args) =>

{

g.Clear(Color.White);
if(time%6==0)

{

time = 0;
switch(count)

{

case 0:

brush = Brushes.Violet;

break;
case 1:

brush = Brushes.Red;

break;
case 2:

brush = Brushes.Blue;

break;
case 3:

brush = Brushes.Green;

break;

case 4:

brush = Brushes.Yellow;

break;
case 5:

brush = Brushes.AliceBlue;

break;
default:

brush = Brushes.DarkBlue;

count = 0;

break;

}
count++;

}
int x = (int)(CenterX + 100 * Math.Sin(time));

int y = (int)(CenterY + 100 * Math.Cos(time));
time += 0.5f;

g.FillEllipse(brush, x - size, y - size, 2*size, 2*size);
}; timer.Start();

}

}

class CircleMove: CircleFigure, MoveUpDown

{

public CircleMove(int CenterX, int CenterY) : base(CenterX, CenterY) { }

int sizeChange;

public void MoveIncrease(Graphics g)

{

timer = new Timer();

timer.Interval = 500;

time = 0;

sizeChange = size;

timer.Tick += (sender, args) =>

{

g.Clear(Color.White);

int x = (int)(CenterX + 100 * Math.Sin(time));

int y = (int)(CenterY + 100 * Math.Cos(time));
time ++;
g.FillEllipse(brush, x - sizeChange, y - sizeChange, sizeChange * 2, sizeChange * 2);
if (time % 6 == 0)

{

sizeChange += 5;

time = 0;

}
}; timer.Start();
}

public void MoveDecrease(Graphics g)

{

timer = new Timer();

timer.Interval = 500;

time = 0;

sizeChange = size;
timer.Tick += (sender, args) =>

{

g.Clear(Color.White);

time++;

int x = (int)(CenterX + 100 * Math.Sin(time));

int y = (int)(CenterY + 100 * Math.Cos(time));

g.FillEllipse(brush, x - sizeChange, y - sizeChange, sizeChange * 2, sizeChange * 2);

if (time % 6 == 0)

{

sizeChange -= 5;
if (sizeChange <= 0)

timer.Stop();
time = 0;

}

}; timer.Start();

}

}

}
1   2   3


написать администратору сайта