Первая
Вторая
Ну а третью вы читаете прямо сейчас =) И так, приступим. Начнем, пожалуй, с ввода пароля звездочками.
Для этого нам потребуется команда read(), с которой мы познакомились во второй части моего туториала.
Как говорилось в той же второй части,...
Цитата: poccu
Скобочки нужны для того, чтобы присвоить этой функции дополнительные параметры.
Так-вот, дополнительным параметром для read() служат те символы,
которые будут отображаться при вводе текста. Естественно,
эти символы будут записаны в кавычках, так как они будут являться String'ом.
Давайте напишем простейшую программу. Она будет получать пароль от пользователя
в виде звездочек, а после нажатия кнопки Enter она выведет пароль обычными символами.
write ("[Password] ")
pass = read ("*")
print ("Password: ",pass)
Давайте разберем код. Первая строчка у нас выводит на экран надпись "[Password] ",
вторая - записывает введенные данные в переменную pass, при этом весь введенный
текст будет отображаться звездочками. Ну а третья строка выведет нам все, что записано в
переменной pass, но уже без звездочек. Теперь скриншоты работы этой программы:Ввод данных пользователем.
Вывод данных компьютером.
Отлично! Этот код может нам пригодиться в создании программы, в которой
требуется ввод логина и пароля, чтобы получить доступ к чему-либо. Но
как же компьютеру определить, правильно-ли введены логини пароль?
Для этого существует команда if.
if [Выражение, значение которого равно True/False] then [То, что должен выполнить компьютер, если выражение после if равно True] else [То, что должен выполнить компьютер, если выражение после if равно False] end
Если по простому, то если то, что после if верно, тогда выведется то, что после then.
В противном случае будет выведено то, что находится после else.
Совсем забыл сказать то, что else можно не писать,
если нам нужно выполнять команду только тогда,
когда то, что после if равно true, а если оно не равно true,
то просто игнорировать команду.
Закрепим команду if на примере. Нам нужно сравнить два введенных числа.
Вот ее код:a= read()
b= read()
if a>b then print (a,">",b) else print (a,"<",b) end
Как мы видим, сначала программа попросит вас ввести a и b,
а после чего сравнит их через if.
Вот скриншоты:
А вот и первый баг! Если мы введем два одинаковых числа, то у нас выведется знак "<".
Давайте разберемся в ошибке. Почему это происходит? Все просто.
Команда if у нас узнает, больше-ли первое число, чем второе. Если это не так,
то оно выдаст у нас то, что написано после else, а в нашем случае это знак "<".
Для исправления этого бага мы должны написать еще один if, уже после else.
Получится вот так:
a= read()
b= read()
if a>b then print (a,">",b) else
if a=b then print (a,"=",b) else print (a,"<",b)
end
end
Не забываем то, что if нужно закрыть end'ом!Отлично, мы написали эту программу. Теперь я расскажу о том, что такое or и and,
и зачем их использовать в команде if, попутно создавая вместе с вами программу,
в которой нужно ввесли логин и пароль для открытия какой-либо программы.
Для нашей программы мы будем использовать одно из стандартных API - Shell API.
Вы можете спросить:ШО ЗА СХЕЛЛ АПИ А????777
НУ ШО ЭТ????77 Я ТАКОВА Ф ПЕРВАМ КЛАСЕ
ИШЧО НЕПРАХАДИЛ!!!111Я (а точнее википедия) отвечу:
Цитата: Википедия
Интерфейс программирования приложений — набор готовых классов,
процедур, функций, структур и констант, предоставляемых приложением
(библиотекой, сервисом) для использования во внешних программных продуктах.
Используется программистами для написания всевозможных приложений.
Но так-как вы естественно ничего из этого набора непонятных
слов не поняли, я обьясню все это на русском языке.
API это такая штука, которая позволяет программе выполнять задания,
которые написаны не прямо в этой программе, а в другой. Это очень
хорошо для того, чтобы сделать код меньше, ведь проще 10 раз ввести маленькую
строчку из одного слова, чем писать код из 20 строк 10 раз. Стандартные API
загружаются вместе с загрузкой самой операционной системы CraftOS.
Из Shell API нам понадобится возможность запускать приложения.
shell.run("[Путь к файлу, который мы запускаем", [Аргументы (необязательно)])
Для начала выберем приложение, которое будет запускать наша программа,
после ввода пароля. Это будет игра TicTacToe (На русском: Крестики-нолики).
Для загрузки этого приложения будем использовать стандартные "Treasure Disks".
В списке выберем дискету "tictactoe" by TheOriginalBIT.
Теперь поставим рядом с нашим компьютером Дисковод.
Теперь засунем в наш дисковод саму дискету.
Теперь переходим в компьютер. Обучение по работе с дисководом я буду писать
в следующих частях моего туториала (возможно, что даже в следующей), поэтому просто
напишем в CraftOS команду move disk\tictactoe \.Отлично! Дисковод нам больше не понадобится.
Теперь создаем новый файл с любым названием.
Пишем в нем простейший ввод логина и пароля.
write("Login: ")
login = read()
write("Password: ")
pass = read("*")
Также не забывайте иногда тестировать программу,
чтобы если она не работала, было-бы легче найти
причину ошибки, и после этого устранить ее.
Теперь напишем код для того, чтобы узнавать: мы ввели
правильный пароль, или все же нет.
Тут-то нам и понадобится and и or, а так же Shell API.
if login == "poccu" and pass == "1pony1" then shell.run("tictactoe")
else print ("Error! Incorrect login or password!")
end
And означает "и", or - "или".
Т.е. ели логин будет poccu и пароль будет равен 1pony1,
тогда оно запустит программу tictactoe через ShellAPI.
Если он будет неверным, то программа просто выведет ошибку.
Также мы могли спросить, почему мы написали login == "poccu" с двумя знаками
равно, а не с одним. Ответ довольно простой:
Знак = означает присвоить данные переменной (например a = 10).
Знак == используется при сравнении, и означает равенство (например if a==b then print("TRUE") else print ("FALSE") end).Вот и все
Кстати: про ShellAPI вы можете почитать на офф. Вики по ComputerCraft.С вами был покку, всем пока!