Угадай число
1. Постановка задачи. Наверное каждый, кто хочет научиться программировать мечтает написать свою игру. С графикой, с 3d, со звуком и все такое. Сейчас мы с вами напишем игру, без всего этого, но зато с четкой логикой. Что же должна делать эта программа, какова цель игры? Она состоит в том, что компьютер загадывает число от 1 до 100, вы должны его угадать, вводя число в текстовое поле, а компьютер должен говорить, больше это число чем загаданное, или меньше и вести счет попыткам. Если же вы угадаете число, то компьютер должен сказать вам об этом и сказать, за сколько попыток вы выиграли.
2. Этап визуального проектирования.
На форме должны быть такие элементы:
Кнопка(Button)-с Caption'oм - Загадать и Name - Command1
Кнопка(Button)-с Caption'oм - Проверить и Name - Command2
Кнопка(Button)-с Caption'oм - Выход и Name - Command3
Текстовое поле (TextBox) - без текста и Name - Text1
В результате должно получиться вот так:
3. Этап программирования.
Войдите в раздел глобальных объявлений и напишите там:
Option Explicit - объявляем переменные
Dim a as Integer - Объявляем числовую переменную a - эта переменная будет числом которое загадает компьютер.
Dim b as Integer - Объявляем числовую переменную zc - эта переменная будет числом которое введет пользователь.
Dim c as Integer - Объявляем числовую переменную c - это будет число попыток
Теперь войдите в код кнопки Загадать и напишите там:
Randomize Timer - это выражение нужно для того, чтобы включить генератор случайных чисел. Вы можете его не писать, но тогда числа будут не совсем случайными. То есть при каждом запуске программы это будет хоть и случайное, но одно и тоже число.
a = Int(Rnd*100) - Переменная а равна целому числу от 1 до 100 (Int - целое, Rnd*100-от 1 до 100)
MsgBox "Число от 1 до 100 загаданно",vbExclamation,"Готово"-Выдаем сообщение с заголовком -"Готово", текстом -"Число от 1 до 100 загаданно", и значком с восклицательным знаком.
А теперь войдите в код кнопки Проверить и напишите там:
If a=0 then Msgbox "Сначала нужно загадать число",vbCritical,"Ошибка" : Exit Sub - Если загаданное число равно 0, то есть оно не загаданно, то выдаем сообщение об этом и выходим из процедуры ( то есть дальнейший код не выполняется)
If Not IsNumeric (Text1.Text) Then - если параметр Text элемента Text1 не число, то...
Msgbox "Это не число",vbCritical,"Ошибка"-...Выдаем сообщение об этом
Exit Sub - Выходим из процедуры
Else - Иначе, то есть если параметр Text элемента Text1 число, то...
b=Text1.Text - Переменная b равна параметру Text элемента Text1
If b>100 or b<1 then Msgbox "Это не число от 1 до 100" : Exit Sub - если переменная b больше 100 или меньше 1 то выдать сообщение об этом и выйти из процедуры.
If a>b then msgbox "Загаданное число больше" : c=c+1 - если переменная a (загаданное число) больше переменной b (введенное число) то сообщить об этом и к переменной c (число попыток) прибавить 1.
If a<b then msgbox "Загаданное число меньше" : c=c+1 - если переменная a (загаданное число) меньше переменной b (введенное число) то сообщить об этом и к переменной c (число попыток) прибавить 1.
If a=b then Msgbox "Вы угадали число за "+Str(c+1)+ " попыток" ,vbExclamation, "Победа":c=0:a=0 - Если переменная а равна переменной b то сообщить об этом, обнулить число попыток, обнулить загаданное число. С+1 здесь сделано потому, что отсчет числа попыток начинается не с одного, а с нуля)
End if - Закончить условие которое началось в строке "If Not IsNumeric..."
Ну и в код кнопки выход впишите: End
Проверьте программу. Попробуйте выиграть. Если у вас все получилось то поздравляю - вы можете с гордостью говорить друзьям, что написали игру.
В результате у вас должна получится такая программа:
Option Explicit
Dim a As Integer
Dim b As Integer
Dim c As Integer
Private Sub Command1_Click()
Randomize Timer
a = Int(Rnd * 100)
MsgBox "Число от 1 до 100 загаданно", vbExclamation, "Готово"
End Sub
Private Sub Command2_Click()
If a = 0 Then MsgBox "Сначала загадайте число", vbCritical, "Ошибка": Exit Sub
If Not IsNumeric(Text1.Text) Then
MsgBox "Это не число", vbCritical, "Ошибка"
Exit Sub
Else
b = Text1.Text
If b > a Then MsgBox "Загаданное число меньше", vbInformation, "Нет": c = c + 1
If b < a Then MsgBox "Загаданное число больше", vbInformation, "Нет": c = c + 1
If b = a Then MsgBox "Ура. Вы угадали число за " + Str(c+1) + " попыток", vbExclamation, "Победа!": a = 0: c = 0
End If
End Sub
Private Sub Command3_Click()
End
End Sub


