Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Разработка программы
Программа имеет имя Kursova. Разработка программы начинается с описания используемых входных данных, в частности, задается размер игрового поля 4х4, который хранится в именованных константах nw и nh. Затем задается графическая поверхность формы с помощью метода System. Drawing. Graphics, описываем картинку, используя метод Bitmap. Далее задаем переменные, в которых будет храниться высота и ширина клетки и переменные, в которых будут храниться координаты пустой клетки. Игровое поле хранит номера фрагментов картинки. Признак отображения номера фишки сначала задается как false. Далее в программе описываются методы. С помощью метода Form1 () загружаем картинку из файла типа bmp. Определяем высоту и ширину клетки (фишки):
cw = (int) (pics. Width / nw); ch = (int) (pics. Height / nh);
Устанавливаем размер клиентской (внутренней) области формы: this. ClientSize = new System. Drawing. Size (cw * nw + 1, ch * nh + 1 + menuStrip1. Height); и определяем ее как рабочую графическую поверхность g = this. CreateGraphics (); Метод private void newGame () начинает новую игру, располагает фишки в правильном порядке, последнюю фишку делаем пустой. Метод private void mixer () перемещает фишки. В переменной d храним положение (относительно пустой) перемещаемой клетки: 0 - слева; 1 - справа; 2 - сверху; 3 - снизу. Функция Random () генерирует случайные числа от 1 до 15, в соответствии с которыми располагаются фрагменты картинки на игровом поле. В цикле for (int i = 0; i < nw * nh * 10; i++), где nw * nh * 10 - кол-во перестановок происходит анализ перемещения фрагментов картинки и определяется фишка, которую нужно переместить в пустую клетку, запоминаем координаты пустой фишки. Метод private void drawField () обрисовывает поле. С помощью вложенного цикла выводим фишку с картинкой, где (((field [i,j] - 1)% nw) * cw, (int) ((field [i,j] - 1) / nw) * ch) - координаты левого верхнего угла области файла-источника картинки, затем выводим пустую фишку, рисуем границы и определяем номер перемещаемой фишки. Метод private Boolean finish () проверяет, расположены ли фишки в правильном порядке. фишки расположены правильно, если числа в них образуют матрицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Метод private void move (int cx, int cy) перемещает фишку, на которой сделан щелчок, в соседнюю пустую клетку: (cx, cy) - клетка, в которой сделан щелчок, (ex, ey) - пустая клетка. Сначала проверим, возможен ли обмен и, если возможен, то перемещаем фишку из (x, y) в (ex, ey). Затем отрисовываем поле. После окончания игры программа предлагает сыграть еще раз: No - завершить работу программы, Yes - новая игра. С помощью функции MessageBox. Show выводится сообщение "Поздравляю! Вы справились с поставленной задачей!. Еще раз?", "Собери картинку". Функция MessageBoxButtons. YesNo позволят ответить Да или Нет. С помощью private void Form1_MouseClick (object sender, MouseEventArgs e) обрабатывается щелчок кнопкой мыши на игровом поле, то есть преобразуются координаты мыши в координаты клетки. Метод private void новаяИграToolStripMenuItem1_Click (object sender, EventArgs e) начинает новую игру. Листинг программы приведен в приложении 1.
|