SERGE_BLIZNUK
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору CAHEK_KZ есть куча мелких недостатков (ну типа random(2) вернёт только 0 или 1, а потом проверяете a=1 или a=2 - ошибка в прорисовке меню - там в цикле вместо write(menu[punkt]); надо write(menu[i]); много лишнего кода, злоупотребляешь begin.. end (это не ошибка, но лишние строки кода не всегда нужны но, ГЛАВНОЕ!! я не могу понять, Вы пытаетесь сделать компьютерный аналог программы "Города"?!? Так где основа? Где основной алгоритм?!!! Это же не работает!!! имхо, я вижу решение так: Так, предварительно составляете список городов (пусть, как у Вас это будет файл "goroda.txt"). Лучше - отсортированных по алфавиту (тогда это можно будет использовать в коде, для эффективности... Теперь программа. 1) Читаете ВЕСЬ файл в память (варианта два - либо через указатели - создание динамеческого списка, либо в массив) при этом надо предусмотреть либо двухмерный массив, либо массив из записей... чтобы можно было отмечать те слова, которые уже были в игре. что вроде такого array[1..1000] of CityRecordType где CityRecordType = record Name : string[20]; WasBefore : boolean; end; 2) рисуете меню (если хотите) 3) при выборе пункта "Igra" - задаёте вопрос - кто ходит первый - человек или компьютер (ну, или выбираете это рандомно). Если первый ход человека - вводим слово. Проверяем методом перебора, что введён именно город (а не Абракадабра ) если не нашли в списке городов введённый человеком - ругаемся и либо выход с поражением человека, либо повторный ввод слова... (например, процедура FindCity(...) если первый ход компьютера - берём слово из списка (массива) случайным образом. Слово отметить как уже использованное. 4) Дальше - цикл - каждый ход компьютера он должен взять введённое слово, от него последнюю букву и найти слово в списке на эту букву. Слово отметить как уже использованное. если не смог найти - выход с поражением компьютера Каждый ход человека - ввёденное слово, компьютер: a) проверяет, что оно начинается с буквы, которой закончилось предыдущее слово, b) ищет его в списке слов ( процедура FindCity(...)) для завершение ввода (либо ввод человеком пустой строки, либо - какого-нибудь служебного слова, например "BYE" или "STOP" Пишите программу. Вижу, что Вы хоть знаете, что такое Pascal. И пытаетесь решить задачу! Так держать! Если будут вопросы по алгоритму и/или по реализации тех или иных шагов - спрашивайте, обязательно поможем (не я, так другие завсегдатаи клуба любителей ЯП Паскаль )) p.s. да, чтобы были понятнее мои замечания по поводу Вашей программы, то вот, Подкорректированный Ваш исходник [?] к сожалению, алгоритм самой игры там не переделан... Так что - Вам есть где развернуться |