0 / 0 / 1
Регистрация: 12.01.2017
Сообщений: 104
|
||||||
1 | ||||||
Глобальные переменные и процедуры14.01.2017, 10:45. Показов 2660. Ответов 2
Метки нет (Все метки)
Итак, я решил, что начать изучение этого языка лучше начать с написания чего-то интересного и простого. Крестики-нолики показались мне идеальным выбором. А теперь к проблеме: (коротко: я делаю в процедуре так: глобалка winl:=true, а winl посылает меня и не становится true в глобальном смысле)
Суть кода примерно такая: (ход мой, ход компа)*4+мой ход+проверка ничьей. При этом в каждой процедуре хода есть процедура проверки победы. Если размотать этот клубок до конца и выйти к моей проблеме, то получится следующие: есть глобальная переменная winl, при победе (не важно чьей) я присваиваю ей значение истины. Но, судя по всему, это не работает. Ей не присваивается нужное значение. Ничья, возникающая при значении "победа=ложь" после последнего хода работает, а присваивание истины при победе - нет. Выяснил я это, решив сделав игру бесконечной - чтобы после победы/поражения/ничьей она начиналась сначала. Я убрал из побед halt и добавил в процедуры ходов первой строчкой строку if winl=true then exit; Как итог - программа просто упрямо выполнялась до конца, не обращая ни малейшего внимания на ту строку. Вывод один - присваивание не работает. Хотелось бы спросить, что здесь не так и почему оно не работает? Заранее спасибо Под спойлером сама программа. Кликните здесь для просмотра всего текста
0
|
14.01.2017, 10:45 | |
Ответы с готовыми решениями:
2
Куда помещать свои переменные, процедуры и функции? Глобальные переменные глобальные переменные Глобальные переменные |
3 / 2 / 1
Регистрация: 19.07.2019
Сообщений: 1
|
||||||||||||||||
19.07.2019, 20:53 | 2 | |||||||||||||||
Сообщение было отмечено Kujivunia как решение
Решение
ваш код, начинающийся со строки 88:
в начале программы (
вы объявляете переменную winl. В наведенных мной процедурах вы используете переменную winl как аргумент, то есть во время выполнения процедуры существует ДВЕ переменные с именем winl, при этом переменная, которая объявлена в заголовке процедуры имеет больший приоритет, чем глобальная, то есть если в процедуре вы присваиваете переменной winl значение true, оно присваивается ЛОКАЛЬНОЙ переменной winl (которая, кстати, удаляется при завершении процедуры). Тут надо бы менять название переменной в заголовке процедур, но конкретно в вашем случае, процедуре ВООБЩЕ не нужны какие-либо входные данные. То есть, код, начинающийся на строке 88 должен выглядеть как-то так:
надеюсь, понятно объяснил)
2
|
5087 / 2658 / 2350
Регистрация: 10.12.2014
Сообщений: 10,054
|
||||||||||||||||||||||||||
21.07.2019, 14:36 | 3 | |||||||||||||||||||||||||
Во-первых, ваше форматирование… Совершенно не понятно где какие операторные скобки! А форматирование текста программы именно и приводит к лёгкости чтения кода.
Во-вторых, Kujivunia, очень странный код после такого вопроса: Как считать файл с текстом в одну переменную типа string максимально быстро? Добавлено через 9 минут Вы объявляете массив [0..2, 0..2], но зачем-то используете какие-то „костыли“, чтобы обратиться к конкретной ячейке этого массива.К примеру, для заполнения массива в процедуре recording_empty_in_memory можно было же просто:
draw :
Процедура read_user_key : зачем делать двойные проверки на <>X и <>O , когда достаточно одной =~ :
case здесь лишнее:
AI — просто верх совершенства! Ни какой логики! Тупой рандом…С проверкой на выигрыш сильно… Масштабировать до 4-х в ряд вы не собираетесь, поэтому можно проще:
1
|
21.07.2019, 14:36 | |
21.07.2019, 14:36 | |
Помогаю со студенческими работами здесь
3
Модули и глобальные переменные Локальные и глобальные переменные. Локальные и глобальные переменные Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему? Задать переменные для процедуры val Какие в коде имеются глобальные переменные, процедуры и функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи | |||||
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями
Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
|
Какой язык программирования лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
|
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
|
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
|
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
|
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
|
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
|
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций
История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
|
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
|
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы
В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
|