- •Методические рекомендации по изучению дисциплины «визуальное программирование»
- •Лабораторная работа №2 тема: реализация задач обработки строковых данных.
- •Лабораторная работа №3 тема: программная реализация задач с использованием типа даты и времени
- •Лабораторная работа №4 тема: программирование задач с использованием массива записи
- •Лабораторная работа № 5 тема: организация стека. Рекурсивные алгоритмы
- •Перебор возможных решений
- •Лабораторная работа № 6 тема: составление алгоритмов решения задач с использованием файлов последовательного доступа
- •Лабораторная работа № 7 тема: программирование задач с использованием компонентов treeview, listview
- •Лабораторная работа № 8 тема: использование компонента flexgreed для решения задач
- •Лабораторная работа №9 тема: решение задач с использованием графических построений
- •Лабораторная работа № 10 тема: разработка простейших игровых приложений
- •Методические указания по срсп
Лабораторная работа № 10 тема: разработка простейших игровых приложений
Цель работы: Изучение функций для графических построений
План работы: Разработать алгоритм, используя алгоритмы цикла и ветвления
Теоретический материал:
ПРОЕКТ «ПАЗЛЫ»
Предварительная подготовка к работе: в любом графическом редакторе разбить произвольный рисунок на 4 части и сохранить в разных файлах (Ris1.bmp, Ris2.bmp, Ris3.bmp, Ris4.bmp). Например, в Paint можно использовать команду ПРАВКА – Копировать в файл. Не изменяйте пропорций рисунков. Создайте ещё один рисунок Ris5.bmp – квадрат с однотонной заливкой (будем использовать его в качестве фона, когда необходимо скрыть предыдущие рисунки).
Задание. Разработать проект «Пазлы». Исходный рисунок разбит на 4 части. Необходимо сложить его на пустом поле, разбитом на 4 части. Исходный вид формы показан на рисунке <Рисунок2>.
Интерфейс проекта. На форме разместить следующие элементы управления:
метка Label1 (Собери картинку по образцу!);
4 командные кнопки: Command1 (Выход), Command12 (Проверка), Command3 (Сброс), Command4 (Справка);
поле Image1 – поместить исходный рисунок для образца;
поля Image2 и Image3 - создать как массивы из 4-х элементов каждый (с индексами 0, 1, 2, 3), установить у каждого свойство Strech = True. В поле Image2 необходимо будет собрать рисунок. Первоначально там загружен пустой фон, поэтому в свойстве Picture полей Image2 нужно указать путь к фоновому рисунку Ris5.bmp. В свойстве Picture полей Image3 указать путь к рисункам (Ris1.bmp, Ris2.bmp, Ris3.bmp, Ris4.bmp). Файлы с рисунками скопируйте предварительно в папку с вашим проектом, тогда не нужно будет указывать полный путь к файлам, достаточно указать имя файла;
метка Label2 – для вывода справки (установите свойство Visible= True, чтобы при запуске проекта метка была невидима);
таймер Timer1 – первоначально таймер выключен. Он будет включаться по кнопке «Справка» и через заданный интервал времени скрывать текст, который выведен в метке Label2 (установите свойства таймера Interval = 8000, Enabled = False).
Программный код.
Dim Mx, My As Single, Path As String, k, i, j, t As Integer, A(0 To 3) As Integer
‘Массив А - для хранения номеров перемещённых картинок;
‘Mx, My – координаты объекта при перемещении; Path – путь к файлу с рисунком;
‘k - количество верных ответов; t - номер рисунка, который нужно вернуть на место
Private Sub Form_Load() ‘загрузка формы
For i = 0 To 3
A(i) = -1 ‘заполнение массива -1 – признак того, что соответствующие поля Image2 пустые
Next
End Sub
Private Sub Command1_Click() ‘Выход
End
End Sub
Private Sub Command2_Click() 'Проверка
k = 0 ‘количество верных ответов
For i = 0 To 3
If Image2(i).Index = A(i) Then k = k + 1 'индекс в массиве рисунков должен совпадать с номером рисунка
Next
If k = 4 Then
Label1.Caption = "Игра завершена!!! Верных ответов - " & Str(k)
Else
Label1.Caption = "Попробуй еще раз!!! Верных ответов - " & Str(k)
End If
End Sub
Private Sub Command3_Click() 'Сброс
Label2.Visible = False
For i = 0 To 3
Image3(i).Visible = True ‘восстанавливаем все рисунки
Image2(i).Picture = LoadPicture("Ris5.bmp") ‘загружаем пустой фон
A(i) = -1 ‘в массив заносим -1 - признак пустого поля
Next
Label1.Caption = "Собери картинку"
End Sub
Private Sub Command4_Click() 'Справка
Label2.Visible = True ‘метка становится видимой и появляется текст справки
Label2.Caption = "Перемещайте картинки при нажатой левой кнопке мыши в нужные клетки. При двойном щелчке по картинке она вернётся на прежнее место!"
Timer1.Enabled = True ‘включаем таймер
End Sub
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) 'Поправка
SourceMove (X - Mx), (Y - My)
End Sub
Private Sub Image2_DblClick(Index As Integer) 'Возвратить картинку на место по двойному щелчку по рисунку
Image2(Index).Picture = LoadPicture("Ris5.bmp") ‘загружаем пустой фон
t = A(Index) ‘запоминаем номер рисунка, который нужно вернуть на место
Image3(t).Visible = True ‘делаем рисунок с номером t видимым
End Sub
Private Sub Image2_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single) 'завершение перетаскивания
Source.Visible = False
Image2(Index).Picture = LoadPicture(Path)
j = Index: A(j) = Val(Mid$(Path, 4, 1)) - 1 'запомнить номер перемещённого рисунка в массиве А
End Sub
Private Sub Image3_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Call Image3(Index).Drag(vbBeginDrag) 'начало перетаскивания рисунка
Mx = X
My = Y
End If
i = Index ‘запоминаем индекс поля в Image3, из которого перемещаем рисунок
If i = 0 Then Path = "Ris1.bmp" 'путь к рисунку
If i = 1 Then Path = "Ris2.bmp"
If i = 2 Then Path = "Ris3.bmp"
If i = 3 Then Path = "Ris4.bmp"
End Sub
Private Sub Timer1_Timer() 'Таймер
Label2.Visible = False ‘скрыть текст справки
End Sub
Задания:
Добавьте в проект 2 новые формы. На первой (заставка) разместите переключатели (Option) для выбора уровня сложности игры. При выборе 1-го уровня загружается соответствующая форма (рисунок разбит на 4 части).
Реализуйте 2-й уровень сложности игры на третьей форме. Исходный рисунок разбит на 9 частей.
ПРОЕКТ «РАСПОЛОЖИТЬ ОБЪЕКТЫ В ХРОНОЛОГИЧЕСКОМ ПОРЯДКЕ».
В данной задаче мы работаем с массивами меток. Перемещаемыми объектами здесь являются метки с надписями. При первоначальной загрузке должны быть доступны только кнопки «Пуск» и «Выход». После нажатия на «Пуск» становятся доступны все кнопки. По кнопке «Проверка» выводится количество правильных ответов. Кнопки должны быть снабжены всплывающими подсказками. Исходный вид формы приведён на рисунке.
Рассмотренные в данных работах методы обработки событий мыши при перемещении объектов мы используем в дальнейшем при создании тестовых и игровых программ («Пятнашки», «Морской бой», «Электронные кроссворды», «Переводчик», «Интеллектуальный марафон», «Эрудит», «Тесты на внимание», «Информатика в играх и задачах» и других). Несомненно, что выполнение таких заданий способствует не только развитию творческих и умственных способностей учащихся, но и повышает интерес к самому процессу программирования. В процессе работы над проектами возникает множество предложений по усовершенствованию программы и вопросов, для решения которых имеющихся знаний уже недостаточно. Таким образом, поддерживается непрерывная связь теории с практикой, постоянно вводятся новые элементы познания.
