
- •Навчальної практики
- •Задача 2
- •Перевизначення методу Len() з урахуванням способу завдання вектора,
- •Код програми
- •Задача 7
- •Код програми
- •Результат роботи програми:
- •Задача 8
- •Код програми
- •Результат роботи програми:
- •Задача 10
- •Код програми
- •Результат роботи програми:
- •Задача 14
- •Код програми
- •Результат роботи програми:
- •Задача 15
- •Код програми
- •Результат роботи програми:
- •Задача 17
- •Код програми
- •Результат роботи програми:
Результат роботи програми:
Рис. 10. Cтворюється новий об'єкт «квадрат» з центром у середині вікна
Рис. 11. Натискання кнопки дозволяє обрати наступний квадрат. Він стає червоним, а попередній, відповідно, синім.
Задача 14
Мовою C# розробити діалогову програму з графічним інтерфейсом:
Створити базовий клас «коло», що рухається по вікну форми.
Створити діалогову форму, на якій зображено тільки:
декілька кіл, що рухаються,
регулятор R1 для завдання швидкості чергового кола,
кнопка K1, кожне натискання якої створює в центрі форми чергове коло розміром 30 пікселів і заданою швидкістю руху. Напрямок руху першого кола - вертикально вгору, кожного наступного - на 10° праворуч. При досягненні краю форми коло зникає.
Перевірити роботу складеної програми.
Код програми
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace Num_6
{
public partial class Form1 : Form
{
private readonly Graphics _graphics;
private const int CenterX = 175;
private const int CenterY = 175;
private const int D = 30;
private static int _currentAngle = 260;
private readonly List<Circle> _circles = new List<Circle>();
public Form1()
{
InitializeComponent();
FormBorderStyle = FormBorderStyle.FixedSingle;
_graphics = CreateGraphics();
_graphics.Clear(Color.White);
}
private void AddSquare()
{
var c = new Circle(R1.Value);
_circles.Add(c);
Draw(c);
}
private void Draw(Circle c)
{
var circle = new Rectangle(c.PositionX, c.PositionY, D, D);
_graphics.DrawEllipse(Pens.Black, circle);
}
private void MoveCircle(int index)
{
var c = _circles.ElementAt(index);
if (c.PositionX == 0 || c.PositionX == 380 - D || c.PositionY == 0 || c.PositionY == 370 - D)
{
_circles.Remove(c);
return;
}
var rads = _circles.ElementAt(index).Angle*Math.PI/180;
var posX = c.PositionX + (int)(Math.Cos(rads) * c.Speed);
var posY = c.PositionY + (int)(Math.Sin(rads) * c.Speed);
c.PositionX = posX > 380 - D ? 380 - D : posX < 0 ? 0 : posX;
c.PositionY = posY > 370 - D ? 370 - D : posY < 0 ? 0 : posY;
_circles.RemoveAt(index);
_circles.Add(c);
}
private void K1_Click(object sender, EventArgs e)
{
AddSquare();
}
private void timer1_Tick(object sender, EventArgs e)
{
for (var i = 0; i < _circles.Count; i++)
{
MoveCircle(i);
}
_graphics.Clear(Color.White);
foreach (var c in _circles)
{
Draw(c);
}
}
public class Circle
{
public Circle(double s)
{
Speed = s;
PositionX = CenterX;
PositionY = CenterY;
_currentAngle += 10;
Angle = _currentAngle;
}
public double Speed { get; set; }
public int PositionX { get; set; }
public int PositionY { get; set; }
public int Angle { get; set; }
public bool IsSelected { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}