Язык программирования:
C#
Среда программирования:
Microsoft Visual Studio 2013
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Gavrilenko_Chess { public partial class Form1 : Form { SolidBrush bgcol = new SolidBrush(Color.White);//цвет фона SolidBrush white = new SolidBrush(Color.White); //определяем белый.. SolidBrush black = new SolidBrush(Color.Black);//..и черный цвета для квадратов int cnt; //счетчик int i1 = 0; //переменные для движения квадратов int j4 = 0; int k3 = 0; int l2 = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { timer1.Start(); //при загрузке формы стартует таймер } private void DrawBase1(Graphics gr, Bitmap bmp) //определяем функции для четырех промежуточных состояний шахматной доски DrawBase { gr.FillRectangle(black, 0, 0, 50, 50); gr.FillRectangle(white, 50, 0, 50, 50); gr.FillRectangle(white, 0, 50, 50, 50); gr.FillRectangle(black, 50, 50, 50, 50); } private void DrawBase2(Graphics gr, Bitmap bmp) { gr.FillRectangle(white, 0, 0, 50, 50); gr.FillRectangle(black, 50, 0, 50, 50); gr.FillRectangle(white, 0, 50, 50, 50); gr.FillRectangle(black, 50, 50, 50, 50); } private void DrawBase3(Graphics gr, Bitmap bmp) { gr.FillRectangle(white, 0, 0, 50, 50); gr.FillRectangle(black, 50, 0, 50, 50); gr.FillRectangle(black, 0, 50, 50, 50); gr.FillRectangle(white, 50, 50, 50, 50); } private void DrawBase4(Graphics gr, Bitmap bmp) { gr.FillRectangle(black, 0, 0, 50, 50); gr.FillRectangle(black, 50, 0, 50, 50); gr.FillRectangle(white, 0, 50, 50, 50); gr.FillRectangle(white, 50, 50, 50, 50); } private void MoveChess() //функция для движения квадратов { Bitmap bmpp = new Bitmap(100, 100); //создаем битмап Graphics g = Graphics.FromImage(bmpp); //создаем графику if (cnt < 51) //определяем движение квадратов при разных значениях счетчика анимации (1) { DrawBase1(g, bmpp); g.FillRectangle(white, -50 + i1, 0, 50, 50); g.FillRectangle(black, i1, 0, 50, 50); } if (cnt >= 51 && cnt < 65) //по окончании одного из четырех циклов делаем перерыв и рисуем промежуточную доску (2) { DrawBase2(g, bmpp); } if (cnt >= 65 && cnt < 116) // (1) { DrawBase2(g, bmpp); g.FillRectangle(black, 50 - l2, 50, 50, 50); g.FillRectangle(white, 100 - l2, 50, 50, 50); } if (cnt >= 116 && cnt < 130) // (2) { DrawBase3(g, bmpp); } if (cnt >= 130 && cnt < 181) // (1) { DrawBase3(g, bmpp); g.FillRectangle(black, 0, 50 - k3, 50, 50); g.FillRectangle(white, 0, 100 - k3, 50, 50); } if (cnt >= 181 && cnt < 195) // (2) { DrawBase4(g, bmpp); } if (cnt >= 195 && cnt < 246) // (1) { DrawBase4(g, bmpp); g.FillRectangle(black, 50, 0 + j4, 50, 50); g.FillRectangle(white, 50, -50 + j4, 50, 50); } if (cnt >= 246) // (2) { DrawBase1(g, bmpp); } pictureBox1.BackgroundImage = bmpp; //отображаем битмап на pictureBox } private void timer1_Tick(object sender, EventArgs e) { cnt++; //увеличиваем счетчик if (cnt < 51) //пока счетчик < 51 { i1 += 1; //верхний левый квадрат плывет вправо } if (cnt >= 65 && cnt < 116) { l2 += 1; //нижний правый квадрат плывет влево } if (cnt >= 130 && cnt < 181) { k3 += 1; //нижний левый квадрат плывет вверх } if (cnt >= 195 && cnt < 246) { j4 += 1; //верхний правый квадрат плывет вниз } if (cnt == 260) { cnt = 0; j4 = 0; i1 = 0; l2 = 0; k3 = 0; } //по окончании анимации обнуляем все счетчики MoveChess(); //вызываем функцию движения квадратов } } }
Прикрепленный файл | Размер |
---|---|
Gavrilenko_Chess.rar | 35.04 кб |