1) Язык программирования не работает.Все скрипты были хорошо протестированны, так что вы можете быть уверены, что 1) не место. И не надо себя винить, что вы не способны, ошибки случаются с даже самыми опытными программистами. Фактически, это весьма нормально, что функция не работает с первого раза. И также весьма нормально, что даже профессиональный программист не найдёт причину просто уставившись на код. Профессионалы делают отладку (debug) кода. Эта отладка не является большой тайной. Обычно это происходит по принципу - исследуя подробно весь код, который вы написали, линию за линией. И таким образом вы сможете проверить наличие ошибок в вашем коде. C-Script имеет встроенный отладчик. Его можно запустить, добавив следующую команду, breakpoint, в начале функции, которую вы желаете проверить:
2) Я не способен для программирования игры.
function count_x
{
breakpoint; // старт для режима отладки
print("Please enter number...");
. . .
Это - следующая команда после контрольной точки. Значёк @# является внутренним представлением введенной строки. Теперь нажмите [Space]. Линия прокручивается вверх, и мы видим:<= print(@2)
И так, мы выполнили одну команду, вызвав функцию print. Следующая отображенная команда - это первая линия недавно вызванной функции print. Str наша строка "please enter number", которая назначается на screen_txt.string. Нажмите снова [Space] для продолжения:0.000 <= print(@2)
<= screen_txt.string = str
Странное число (15135.457) это код результата вашего выражения - это внутренний указатель на назначенную строку. Наверняка она будет другой на вашем PC, но скорей всего не изменится. Далее [Space]:15135.457 <= screen_txt.string = str
<= screen_txt.visible = on
Значение screen_tst.visible ушло вверх. Далее код результата не важен для нас, так как на экране мы видим результат запроса: "please enter number". Функция print последняя команда так как следующая линия, sleep(1), возвращается нас к нашей функции count_x. Нажмите [Space] еще несколько раз, и продвигайтесь через функцию линию за линией, пока не добираетесь к следующему:16.000 <= screen_txt.visible = on
<= sleep(1)
0.000 <= inkey(entry_line)Теперь, там где быстро мигающий курсор, введите "2", и нажмите [Enter]. Далее [Space]:
<= entered_number = str_to_num(entry_line)
Как видим, команда str_to_num преобразовала нашу строку "2" в номер 2, как ожидалось. Для числовых выражений код результата просто показывает число результата. Если мы нажмём [Space] ещё два раза, то можем видеть другой интересный код результата:2.000 <= entered_number = str_to_num(entry_line)
<= str_cpy(entry_line,@4)
Код результата для условий if или while ( if или while не отображаются) 1.000 для истины, и 0.000 для ложи. Поэтому мы можем видеть, что условие while здесь было выполнено, и мы теперь входим в цикл. Таким образом, судя по нашим пошаговым инструкциям, мы видим идиальный результат того, что случается когда человек вводит 2 "x" при запросе:1.000 <= (counter < entered_number)
<= str_cat(entry_line,@6)
Это совсем не то, что мы ожидали! counter увеличивается на 3 в первом цикле, где мы ожидали только 1! В последствии, только один цыкл выполнен, и только один 'x' произведен. И теперь мы можем найти причину: Переменная counter, все еще имеет значение 2 от последнего выполнения функции. Теперь, когда мы нашли ошибку, исправление столь же просто как добавление:3.000 <= counter += 1;
<= }
counter = 0;
в первой линии функции. Повторно выполните программу и посмотрите, решает ли это проблему. Урок "не забывают инициализировать все переменные, используемые в функции!". Это обычная ошибка, но что бы её быстро найти, нужно использовать отладчик.
Используйте отладчик в максимально возможной степени. Это - хороший способ учиться, и смотреть как работают ваши функции и как выполняется ваш код. Профессионалы обычно делают отладку кода, даже если им кажется,что программа работает - это способ, которым они могут обнаружить "скрытые ошибки", которые происходят только при некоторых обстоятельствах. Если вы действительно столкнётесь с серьездной проблемой, которую не сможете решить, то обратитесь к статье "общие проблеммы в сценарии" (и как их решать).Узнав об отладке, теперь вы смело можете назвать себя младшим компьютерным программистом. Для нашего следующего урока, мы собираемся воплощать эти навыки в действие и начинать иметь дело с реальной игрой игры. Мы узнаем, как вы можете использовать сценарии, чтобы определить поведение игрока, актеров, или интерфейса пользователя, мощными и интересными способами.