Читайте также:
|
|
Функция InputBox (Окно Ввода). Функция InputBox позволяет вводить данные с помощью диалоговой панели ввода. В качестве аргументов этой функции выступают три строки, значением функции является также строка. Синтаксис функции следующий:
InputBox (приглашение$, заголовок$,[По умолчанию$])
В процессе выполнения этой функции появляется диалоговая панель с текстовым полем. В строке заголовка панели будет печататься значение второго аргумента (Заголовок$), на самой панели печатается значение аргумента Приглашение$, в текстовом поле печатается значение аргумента ПоУмолчанию$ (если это значение отсутствует, содержимое текстового окна также отсутствует). Введенная пользователем в текстовом поле строка становится значением функции.
Функция MsgВох (Панель Сообщений). Функция MsgВох позволяет выводить сообщения не на форме, а на специальной панели сообщений. Кроме того, функция MsgВох возвращает определенное значение, которое может быть присвоено какой-либо переменной. Синтаксис функции следующий:
MsgВох(сообщение$[, ЧисКод1+ЧисКод2],[заголовок$])++++++++++++
Строка Сообщение$ выводится на панель сообщений, аргумент ЧисКод1+ЧисКод2 определяет внешний вид панели, а строка Заголовок$ печатается в строке заголовка панели. Последние два аргумента не являются обязательными.
Внешний вид панели сообщений можно менять, используя различные значения ЧисКод1 и ЧисКод2. Значение ЧисКод1 определяет вид пиктограммы, которая помещается на панель сообщений, а значение ЧисКод2 определяет набор кнопок, размещаемых на панели (табл. 1).
Таблица 4.4. Значения ЧисКод1 и ЧисКод2, определяющие вид панели сообщений
С помощью одного числа, являющегося суммой чисел ЧисКод1 и ЧисКод2, можно одновременно установить определенную пиктограмму и определенную комбинацию кнопок, размещенных на панели сообщений. Например, число 36 можно рассматривать как сумму чисел 32 (код пиктограммы «Вопрос») и 4 (код комбинации кнопок Да, Нет). В этом случае функция MsgBox выводит панель сообщений с текстом, пиктограммой, содержащей знак вопроса, и кнопками Да, Нет. Нажатие на кнопку приводит к вычислению значения функции, которое зависит от нажатой кнопки (табл. 4.5).
Таблица 4.5. Значения функции MsgBox
Ввод и вывод данных в процессе выполнения проекта может производиться различными способами. Функция InputBox (Окно Ввода) позволяет вводить данные с помощью диалоговой панели ввода, а функция MsgBox (панель сообщений), наоборот, позволяет выводить сообщения на специальной панели. Для ввода и вывода данных могут использоваться также TextBox (текстовые поля), а для печати данных оператор Print.
TextBox. Данный элемент позволяет пользователю отредактировать помещенный в него текст или ввести новый. В этом текстовом поле может находиться несколько строк или даже страниц текста.
Свойства элемента управления TextBox.
Содержимое данного элемента управления хранится в свойстве Text.Чтобы ограничить количество символов, которые может ввести пользователь с клавиатуры, установите значение свойства MaxLenght. Иногда требуется ввести или отобразить на экране большой блок текста. Для этой цели в элементе управления предусмотрены два специальных свойства: MultiLine и ScrollBar. Свойство MultiLine определяет способ отображения текста в текстовом поле. От его значения зависит, будет ли текст находиться в одной строке или он будет перенесен по словам на несколько строк. Если значение свойства MultiLine равно True, текст будет автоматически переноситься по словам на несколько строк. Чтобы перейти на новую строку при вводе текста, пользователь должен нажать клавишу <Enter>.
свойство ScrollBar определяет, будут ли в текстовом поле отображаться полосы прокрутки, и если да, то каков их тип. Оно может принимать одно из четырех значений: 0-None,1-Horizontal,2-Vertical и 3-Both. Полосы прокрутки используются в случае, если размер текстового поля не позволяет отобразить весь находящийся в свойстве Text текст. Значение свойства ScrollBar учитывается только в том случае, если свойство MultiLine равно True.
Проект «Игра Баше». Разработаем проект, который позволит реализовывать игру Баше, в которой ввод и вывод данных осуществляется различными способами. Суть игры состоит в следующем: имеется N предметов, а два игрока по очереди берут 1, 2 или 3 предмета, причем проигрывает тот игрок, который забирает последний предмет.
В начале игры и после каждого хода существуют четыре варианта количества предметов, которое можно выразить с помощью следующих формул:
N = 4-K; N=4-K+1; N = 4 • К + 2; N = 4-K+3, где К =0,1, 2,...
Выигрышная стратегия состоит в том, чтобы после своего хода осталось 1, 5, 9, 13 и так далее предметов, то есть, в общем случае, должно оставаться 4 • К+1 предмет, где К = О, 1, 2,... Таким образом, в каждом из вышеприведенных случаев необходимо взять на своем ходе определенное количество предметов:
• при N = 4-К — взять 3 предмета;
• при N = 4-К + 1 не существует 100% выигрышной стратегии, поэтому можно брать произвольное количество предметов, оставляя возможность осуществить выигрышную стратегию другому игроку;
• при N = 4-К + 2 — взять 1 предмет;
• при N = 4 • К + 3 — взять 2 предмета.
Создадим проект, реализующий игру Баше, в котором одним игроком является компьютер, а другим — пользователь. Первоначальное случайное целочисленное количество предметов (например, в интервале от 10 до 20) получим с помощью оператора Randomize, функции генератора случайных чисел Rnd и функции выделения целой части числа Int. Присвоим полученное значение переменной bytN. Выводить информацию
0 количестве предметов будем с помощью оператора Print.
Проект «Игра Баше»
1) Поместить на форму кнопку и начать создание событийной
процедуры cmd1_Click ().
Private Sub cmd1_Click()
Randomize
bytN = Int(10 + 10 * Rnd)
Print "Первоначальное количество предметов";
bytN
End Sub
Для информации пользователя о количестве предметов и получении его согласия на начало игры воспользуемся функцией вывода MsgBox.
2) Ввести в код событийной процедуры строки:
bytB = MsgBox("Количество предметов" + Str(bytN) + "." + "Начать игру?", 36, "Игра Баше")
If bytB = 7 Then End
3) Запустить проект щелчком по кнопке Начать игру.
На форме и на панели Игра Баше будет напечатано первоначальное количество предметов. Щелчок по кнопке Да позволит начать игру.
Процесс поочередного взятия предметов компьютером и пользователем должен продолжаться, пока не останется хотя бы один предмет. Удобнее всего использовать для этого цикл с предусловием:
Do While bytN > 1 - Loop.
Для подсчета сделанных ходов целесообразно использовать специальную переменную bytl:
bytl = bytl + 1
Пусть первый ход делает пользователь и вводит количество взятых предметов с использованием функции ввода InputBox, которое запоминается в строковой переменной strX:
strX = InputBox("Какое количество предметов Вы забираете?", "Ваш ход!")
Для определения количества оставшихся после хода пользователя предметов необходимо перевести строковую переменную в числовую форму с помощью функции Val и вычесть ее из переменной bytN (первоначального количества предметов):
bytN = bytN - Val(strX)
4) Ввести в программный код строки:
Do While bytN > 1 bytl = bytl + 1 strX — InputBox ("Какое количество предметов Вы забираете?", "Ваш ход!")
bytN = bytN - Val(strX) Loop
При выборе выигрышной стратегии компьютер при ответном ходе должен учитывать оставшееся количество предметов. Проще всего это реализовать с использованием управляющей инструкции выбора. Инструкция начинается с ключевых слов Select Case, после которых записывается переменная. После ключевых слов Case Is заданная переменная сравнивается с определенными значениями (записываются условия, при выполнении одного из которых начинает выполняться серия команд). Заканчивается инструкция ключевыми словами End Select.
В каждой ветви инструкции выбора необходимо задать уменьшение количества предметов на определенную величину, а также печать оставшегося количества на форме с помощью оператора Print.
5) Для перебора возможных значений количества предметов инструкцию Select Case необходимо поместить внутрь цикла со счетчиком по переменной bytK, который, в свою очередь, поместить внутрь цикла с постусловием:
For bytK = 0 То 6
Select Case bytN
Case Is = 4 * bytK
bytN = bytN - 3
Print "После"; bytl; "хода осталось предметов"
bytN
Case Is = 4 * bytK + 1
bytN = bytN - Int(l + 2 * Rnd)
Print "После"; bytl; "хода осталось предметов";
bytN
Case Is = 4 * bytK + 2
bytN = bytN - I
Print "После"; bytl; "хода осталось предметов";
bytN
Case Is = 4 * bytK + 3
bytN = bytN - 2
Print "После"; byt1; "хода осталось предметов";
bytN
End Select
Next bytK
С помощью операторов условного перехода необходимо отслеживать ход, после которого остается 1 предмет. При выполнении этого условия с помощью панели сообщений в операторной (бесскобочной) форме можно предусмотреть вывод результатов игры, а с помощью оператора End — окончание игры.
6) До цикла со счетчиком ввести строку:
If bytN = 1 Then MsgBox "После Вашего
хода остался 1 предмет. Компьютер проиграл!",,"Игра Баше": End
После цикла со счетчиком ввести строку:
If bytN = 1 Then MsgBox "После хода компьютера остался 1 предмет. Вы проиграли!",, "Игра
Баше": End
Таким образом, программный код будет выглядеть следующим образом.
Private Sub cmd1_Click()
Randomize
bytN = Int(10 + 10 * Rnd)
Print "Первоначальное количество предметов"; bytN
bytB = MsgBox("Количество предметов" + Str(bytN) + "." + " Начать игру?", 36, "Игра Баше")
If bytB = 7 Then End
Do While bytN > 1
bytI = bytI + 1
strX = InputBox("Какое количество предметов вы забираете?", "Ваш ход!")
bytN = bytN - Val(strX)
If bytN = 1 Then MsgBox "После вашего хода остался один предмет.Компьютер проиграл!",, "Игра Баше": End
For bytK = 0 To 6
Select Case bytN
Case Is = 4 * bytK
bytN = bytN - 3
Print "После"; bytI; "хода осталось предметов"; bytN
Case Is = 4 * bytK + 1
bytN = bytN - Int(1 + 2 * Rnd)
Print "После"; bytI; "хода осталось предметов"; bytN
Case Is = 4 * bytK + 2
bytN = bytN - 1
Print "После"; bytI; "хода осталось предметов"; bytN
Case Is = 4 * bytK + 3
bytN = bytN - 2
Print "После"; bytI; "хода осталось предметов"; bytN
End Select
Next bytK
If bytN = 1 Then MsgBox "После хода компьютера остался один предмет.Вы проиграли!",, "Игра Баше": End
Loop
End Sub
7) Щелкнуть по кнопке Начать игру. Последовательно с помощью панелей ввода ввести значения количеств забираемых предметов на каждом ходе. Остающееся количество предметов после каждого хода будет печататься на форме. Результат игры будет выведен с помощью панели сообщений
Дата добавления: 2015-07-25; просмотров: 255 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Часть 5 | | | Вывод данных |