pascal graph



Автор Пользователь удален задал вопрос в разделе Компьютеры, Связь

[pascal] graph, пишу игру, есть вопросы и получил лучший ответ

Ответ от Gennady[гуру]
Честно говря, ниасилил... Но попытаюсь ответить.
Во-первых, действительно не совсем красиво жать постоянно на Enter, когда есть замечательная функция ReadKey из модуля Crt, которая читает символ из буфера клавиатуры. Пользоваться ей довольно просто.
var Key : Char;
repeat
Key := ReadKey;
if Key = #0 then Key := ReadKey;
....
until Key = #27;
Этот кусок программы будет ждать нажатия клавиши и завершится при нажатии Esc. Проверка Key на #0 и повторное чтение символа сделаны для корректной обработки нажатия функциональных клавиш.
Там, где стоят точки можно поместить код, отвечающий за функционал программы. Т. е. проверяйте какая клавиша нажата и выполняйте те или иные дейцствия. Например, так:
case Key of
'a' : MoveLeft;
'd' : MoveRight;
'w' : MoveUp;
's' : MoveDn;
end;
Не совсем понял, что надо сделать со скоростью? Что там если есть должно уменьшаться, а потом увеличиватся? Словами скажите, чего надо получить?
Зачем стоят подряд две процедуры Circle? Если надо закрашенная окружность, то можно поюзать PieSlice, которая рисует и закрашивает сектор окружности. Просто надо будет поиграться начальным и конечным углами.
Небольшое замечание по стилю. Считается хорошим тоном объявить константы цвета (и не только) и при обращении к SetColor использовать их, а не цифры. Читающий вашу программу не обязан помнить, какому цвету что соответствует.
И вообще, если взлись за игрушку, то не грех было бы немного ознакомиться с железом. В том виде, как я привел пример обращения к ReadKey нужно будет постоянно долбить по кнопкам. Но ведь можно и просто нажать и удерживать их в таком состоянии. В зависимости от времени удержания можно менять скорость перемещения чего-то по экрану. Но... Контроллер клавиатуры при удержании клавиши генерирует повторяющийся код нажатой клавиши. Этого можно избежать, если заменить системный обработчик 9 прерывания своим, который будет просто игнорировать повтор символов, приходящих от клавиатуры. Возможно, потребуется замена обработчика 8 прерывания (таймер). Естественно, все это при работе под ДОС (собственно, коль скоро прога пишется на паскале, то так оно и есть, скорее всего). Под виндой не уверен, что система позволит играться с прерываниями, а проверять не охота.
В общем, поле для деятельности огромное. Дерзайте!
Удачи! 🙂

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: [pascal] graph, пишу игру, есть вопросы
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*