( +15.70 15,7 0.00 )

[Guide] Изучаем ComputerCraft (часть 3)

Автор: poccu
[Guide] Изучаем ComputerCraft (часть 3)

Всем привет, с вами покку, и сегодня я решил сделать
уже третюю часть моего туториала по ComputerCraft.
В этом уроке мы научимся вводить текст звездочками
(как пароль на любом сайте, на том же румайне),
а также научимся сравнивать введенные данные с помощью команды if,
и благодаря полученным знания попробуем
сделать простейшую систему авторизации.






И так, приступим. Начнем, пожалуй, с ввода пароля звездочками.
Для этого нам потребуется команда read(), с которой мы познакомились во второй части моего туториала.
Как говорилось в той же второй части,...
Цитата: poccu
Скобочки нужны для того, чтобы присвоить этой функции дополнительные параметры.


Так-вот, дополнительным параметром для read() служат те символы,
которые будут отображаться при вводе текста. Естественно,
эти символы будут записаны в кавычках, так как они будут являться String'ом.

Давайте напишем простейшую программу. Она будет получать пароль от пользователя
в виде звездочек, а после нажатия кнопки Enter она выведет пароль обычными символами.

write ("[Password] ")
pass = read ("*")
print ("Password: ",pass)


Давайте разберем код. Первая строчка у нас выводит на экран надпись "[Password] ",
вторая - записывает введенные данные в переменную pass, при этом весь введенный
текст будет отображаться звездочками. Ну а третья строка выведет нам все, что записано в
переменной pass, но уже без звездочек. Теперь скриншоты работы этой программы:


Ввод данных пользователем.
[Guide] Изучаем ComputerCraft (часть 3)

Вывод данных компьютером.
[Guide] Изучаем ComputerCraft (часть 3)


Отлично! Этот код может нам пригодиться в создании программы, в которой
требуется ввод логина и пароля, чтобы получить доступ к чему-либо. Но
как же компьютеру определить, правильно-ли введены логини пароль?
Для этого существует команда 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.

Вот скриншоты:

[Guide] Изучаем ComputerCraft (часть 3)

[Guide] Изучаем ComputerCraft (часть 3)

А вот и первый баг! Если мы введем два одинаковых числа, то у нас выведется знак "<".
[Guide] Изучаем ComputerCraft (часть 3)
Давайте разберемся в ошибке. Почему это происходит? Все просто.
Команда 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.
[Guide] Изучаем ComputerCraft (часть 3)

Теперь поставим рядом с нашим компьютером Дисковод.
[Guide] Изучаем ComputerCraft (часть 3)

Теперь засунем в наш дисковод саму дискету.
[Guide] Изучаем ComputerCraft (часть 3)

Теперь переходим в компьютер. Обучение по работе с дисководом я буду писать
в следующих частях моего туториала (возможно, что даже в следующей), поэтому просто
напишем в 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).




Вот и все happyf

Кстати: про ShellAPI вы можете почитать на офф. Вики по ComputerCraft.


С вами был покку, всем пока!
  1. ТруЪ Олдфаги-с

    6 июня 2014 21:18

    +3

    Цитата: poccu2
    Жду оценок poker-face2

    P. S: Если вы заметили ошибки в тексте, то напишите об этом в комментариях.


    Я старался, почти 2 часа потратил redface
  2. Просто хорошие люди

    6 июня 2014 21:18

    +3

    Пятёрка без вопросов! neveralone
  3. ТруЪ Олдфаги-с

    6 июня 2014 21:22

    0

    Almighty,
    Спасибо =)
  4. Просто хорошие люди

    6 июня 2014 21:24

    +2

    poccu,
    5 мем не глядя rainbow-face
  5. Посетители

    6 июня 2014 21:25

    +2

    5 мем NewspaperGuy единственное что - иногда очень мелкий шрифт. а так surprised-omg респект тебе за старания NewspaperGuy
  6. Просто хорошие люди

    6 июня 2014 21:27

    0

    TheSander,
    Bagrovich,
    Большое спасибо!
  7. ТруЪ Олдфаги-с

    6 июня 2014 21:28

    0

    Прошло 10 минут, а уже +3.30 megayeah
  8. ТруЪ Олдфаги-с

    6 июня 2014 21:37

    +1

    Цитата: poccu
    Знак == используется при сравнении, и означает равенство (например if a==b then print("TRUE") else print ("FALSE") end).

    В Java точно такая же хрень.
    Мне это не очень нравится, путаюсь. Хотя кого я обманываю, когда я последний раз запускал Eclipse?
    5 мем.
  9. ТруЪ Олдфаги-с

    6 июня 2014 21:41

    0

    Цитата: Ivan1765
    Мне это не очень нравится, путаюсь.

    Тоже путаюсь иногда axez



    Я рак, чуть не испортил новость OhGod
  10. Просто хорошие люди

    6 июня 2014 21:43

    +1

    Я думал ты Поссу. 5 мем.
  11. ТруЪ Олдфаги-с

    6 июня 2014 21:45

    0

    Цитата: Olmaznii
    Я думал ты Поссу

    Неа, покку. Спасибо!



    Кстати, не забываем кликать по ссылкам sincere-troll
    Я хочу на Ватч Догс накопить.
  12. Просто хорошие люди

    6 июня 2014 22:06

    0

    Цитата: Адф.лу
    $0.00135


    Не скоро я на Ватч Догс накоплю :(
  13. Посетители

    6 июня 2014 22:14

    +5

    Цитата: poccu2
    Цитата: Адф.лу
    $0.00135

    Не скоро я на Ватч Догс накоплю :(


    Cкачай с торрента yes
    Вот ссыль: Watch Dogs от R. G. Механики
    Сам гамал, понравилось. Все отлично работает)

    Да, и за новость получай пятку)
  14. Посетители

    6 июня 2014 22:18

    +1

    Ну как за первые два гайда про сс 5 мем =)
  15. Просто хорошие люди

    6 июня 2014 22:34

    0

    Cobaka,
    13 гб 0_0
    Ну ладно, поставлю скачивать.

    Спасибо и за игру, и за пятерку!


    roma3110,
    Спасибо и тебе =)
  16. ТруЪ Олдфаги-с

    7 июня 2014 07:53

    0

    Следующая миссия - накопить на PlayStation 4.
  17. Посетители

    7 июня 2014 09:04

    +1

    Пятёрка! :3
  18. Посетители

    7 июня 2014 09:12

    +1

    5 мем однозначно NewspaperGuy
  19. Просто хорошие люди

    7 июня 2014 09:36

    +1

    Bagrovich,
    Ээээ... Ты уже до этого мне пятерку поставил herp-derp

    maks29092001™,
    А у тебя группа "Новички" herp-derp
  20. Олдфаги

    7 июня 2014 10:03

    +2

    Пятюня.
  21. Просто хорошие люди

    7 июня 2014 10:30

    +1

    Отличный туториал! Все понятно и ясно) 5 мем
  22. ТруЪ Олдфаги-с

    7 июня 2014 11:01

    +3

    Цитата: poccu
    накопить на PlayStation 4.


    Скачай с торрента batrollface

    5 мем.
  23. ТруЪ Олдфаги-с

    7 июня 2014 11:09

    +1

    Цитата: Injustice
    Скачай с торрента

    Ссылку дай sincere-troll
    Я на ru-tracker'е не нашел challenge-failed


    SkyPlay,
    Free,
    Injustice,
    Спасибо!
  24. XXXL ПХЛ

    7 июня 2014 12:03

    +3

    И снова 5 мем! default3
  25. Посетители

    7 июня 2014 13:17

    +1

    5 мем, полезная статья :3
  26. ТруЪ Олдфаги-с

    7 июня 2014 13:24

    +1

    Maksimym200,
    TheMagicFox,
    Спасибо =)
  27. Посетители

    7 июня 2014 16:44

    0

    5 мем и кстати можешь добавить в следующем гайде то как работать с безпроводным модемом
  28. ТруЪ Олдфаги-с

    7 июня 2014 19:24

    0

    SuperM,
    Спасибо.

    XDEN,
    Скорее-всего не в следующем, но все же гайд сделаю если не поленюсь. А так спасибо!
  29. ТруЪ Олдфаги-с

    7 июня 2014 20:55

    0

    Цитата: Адф.лу
    $0.00450

    Спасибо всем, кто кликает по ссылкам :3
    До PlayStation 4 осталось совсем немного =)
  30. Олдфаги

    7 июня 2014 21:50

    +1

    poccu,
    Как ты кстати с адф.лу деньги зарабатываешь? А хотя пофиг. 5 мем!
  31. ТруЪ Олдфаги-с

    8 июня 2014 00:38

    0

    CheessteR,
    Ээээ... Зарегистрировался poker-face2

    Спасибо за пятый мем =)



    ДА!!!! Я ЗАРАБОТАЛ ПОЛОВИНУ ЦЕНТА НА АДФ.ЛУ!!!!!
  32. Главные редакторы

    8 июня 2014 00:48

    -1

    Полезный гайд. Читаю с удовольствием. Жду следующую часть.
  33. Олдфаги

    8 июня 2014 06:56

    +3

    SuperM,
    А я 1.34$ , и что? poker-face2
  34. ТруЪ Олдфаги-с

    8 июня 2014 10:07

    0

    SuperM,
    ЭТО ВОЗМОЖНО?????777

    Poko_Pelo,
    А СТОЛЬКО ЗАРАБОТАТЬ НА АДФ.ЛУ ТОЧНО НЕ ВОЗМОЖНО!!!!11

    dedepete,
    Спасибо =)
  35. Просто хорошие люди

    9 июня 2014 16:22

    +1

    Poccu, что бы я без тебя делал? Конечно 5 мем.
  36. Просто хорошие люди

    10 июня 2014 17:22

    0

    cymrak12,
    Ну спасибо axez
  37. ТруЪ Олдфаги-с

    11 июня 2014 18:05

    +1

    Я ЗАРАБОТАЛ ОДИН ЦЕНТ НА АДФ.ЛУ!!!11 В ЧЕСТЬ ЭТОГО Я НЕ ПОЛЕНЮСЬ, И ВЫПУЩУ СЕГОДНЯ ИЛИ ЗАВТРА ГАЙД!!!111
  38. Олдфаги

    4 июля 2014 10:10

    0

    Отличная новость, Оценка: 5 default3
  39. Просто хорошие люди

    6 июля 2014 23:16

    0

    Неплохо оформлено. 5-ый мем.
  40. Посетители

    25 августа 2014 23:15

    0

    Когда ввожу
    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
    и пытаюсь запустить программу, мне пишет:
    bios:366: [string "pro"] :4: 'then' expected
    Что это?
    1. Посетители

      15 мая 2018 14:43

      +1

      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
      попробуй так 2 равно
Для написания комментария зарегистрируйся на сайте, это займет всего пару минут, голосуй за новости, зарабатывай репутацию.

Последние сообщения с форума

Название темы
Статистика
Последнее сообщение

Просмотров: 145258

Ответов: 693

Просмотров: 1123

Ответов: 14

Просмотров: 6333

Ответов: 157

Просмотров: 112

Ответов: 0