Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Вопрос №3: Функции ввода и вывода

Читайте также:
  1. I. Перепишите следующие предложения и переведите их на русский язык, обращая внимание на функции инфинитива.
  2. I. Понятие об эмоциях, их структура и функции. Механизмы психологической защиты
  3. III. Исследование функции почек по регуляции кислотно-основного состояния
  4. III. Функции Бюро контрольных работ
  5. III. Функции действующих лиц
  6. III. Функции Родительского комитета
  7. III. Цели, задачи и функции торговых предприятий

Функция 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| Вывод данных

mybiblioteka.su - 2015-2024 год. (0.023 сек.)