![]() |
![]() ![]() |
![]() |
DarkMoonSide |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Меня сегодня убили
![]() Но сегодня дали курсавик. Змейка. Полистала тут форум, одни исходники. Хочется написать самой, ну или кусочки кодов украсть. Объекты еще не проходили, но без них думаю неполучится написать. Если не трудно. Можете помочь сделать игрушку... Объяснить с чего начать, привести парочку примеров ( Я НЕ КОГО НЕ ЗАСТАВЛЯЮ НИЧЕГО ДЕЛАТЬ, ПРОСТО ПРОШУ ПОМОЧЬ, КОМУ НЕ ТЯЖЕЛО) кусочков кодов и для чего они служат, просто совести не хватит взять чужое, и впихнуть, да и сама должна понять, как такое делается... Сообщение отредактировано: DarkMoonSide - 18.02.2009 0:53 |
Lapp |
![]()
Сообщение
#2
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Тебе змейка в какой моде нужна: в тексте или графике? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
DarkMoonSide |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
graph+crt режимы.
Добавлено через 1 мин. Что-то типа (Модуль + основная программа) Прикрепленные файлы ![]() ![]() |
Lapp |
![]()
Сообщение
#4
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Для змейки тебе понадобится FIFO. Реализуй его на обычных массивах, динамическая память не обязательна. Два целочисленных массива - x и y, координаты звена. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
DarkMoonSide |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Цитата Для змейки тебе понадобится FIFO. Реализуй его на обычных массивах, динамическая память не обязательна. Два целочисленных массива - x и y, координаты звена. Что есть фифо?.. Учу паскаль, да и вообще программирование 3 месяца... |
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Что есть фифо?.. Буфер типа "первым вошел - первым вышел (First In - First Out)" Поищи на это слово по Форуму. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Называется Очередь.
-------------------- |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
На самом деле, FIFO не обязательно. Если не жалко памяти и есть возможность хранить состояния всех точек поля (экрана), то может быть даже проще.
Вот простенькая реализация змейки с FIFO, я сейчас набросал с учетом твоих требований (юниты, текст с возможностью подключения графики). Управление на стрелочках, конец игры при ударе в стенку, самопересечения допускаются пока. Поиграйся и попробуй разобраться. А потом можно будет и без фифы сделать - кстати, так даже проще отлавливать самопересечения. Файл FIFO.pas unit FIFO; Файл Board.pas unit Board; Файл Viper.pas uses FIFO,Board,Dos,CRT; -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
DarkMoonSide |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Спасибо, пойду разбираться потихоньку.
Приболела ![]() |
TarasBer |
![]()
Сообщение
#10
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если рисовать змейку в текстовом режиме, то я бы рисовал её из треугольничков (#16, #17, #30, #31), указывающих на следующий сегмент. Конечно, запоминать где голова и хвост - всё равно надо. Зато сразу самопересечения легко обнаруживать. Конечно, при условии, что у нас есть возможность узнать, какой символ изображён на экране по таким-то координатам. Не знаю, какая процедура за это отвечает, в принципе можно обратиться к видеопамяти.
-------------------- |
DarkMoonSide |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Ребят я конечно понимаю, что вы тут все уже профи, я учу паскаль только 3 месяца....
по этому не сильно "матюкайтесь" ![]() плохо знаю структуры и т.п ![]() |
TarasBer |
![]()
Сообщение
#12
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Какое конкретно слово если непонятно - спрашивайте.
-------------------- |
TarasBer |
![]()
Сообщение
#13
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
В общем вот примерная реализация того, что я имел в виду:
В этом коде вы можете не знать слово Textmode - оно принудительно переводит экран в режим 80 на 50 символов, и слово absolute - оно указывает переменной, какой именно адрес ей занимать. Некоторые адреса обладают специальными свойствами, например адрес $0040: $006C содержит системное время (нужно для того, чтобы корректно задавать темп игры), а адрес $B800: $0000 содержит видеопамять, поэтому любое обращение к массиву Screen эквивалентно обращению к видеопамяти. Обратите внимание, что тут приходиться в индексе сначала писать Y, а потом X. -------------------- |
DarkMoonSide |
![]()
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Ага, спасибо.
А можно я немного обнаглею? мне очень понравилась та змейка которую я прикрепляла, где-то в нете нашла. МОжет кто-то туда добавить коментариев? ООоооччень прошу ![]() ![]() |
TarasBer |
![]()
Сообщение
#15
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ага, спасибо. А можно я немного обнаглею? мне очень понравилась та змейка которую я прикрепляла, где-то в нете нашла. МОжет кто-то туда добавить коментариев? ООоооччень прошу ![]() ![]() Я тоже тогда понаглею. Мне кажется, что в том, что вы прикрепили, надо бОльшую часть кода не комментировать, а выкидывать. А то зачем-то объекты приплели в такой элементарной программе, да ещё модули используюся некоторые чуть ли не из Turbo Vision. Хотя я тут ничего не утверждаю, и возможно, мне это только кажется. -------------------- |
DarkMoonSide |
![]()
Сообщение
#16
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Ну тогда можеш коменты к своей програмке написать ?
![]() п.с. в игре нужен щетчик очков, и несколько уровней сложности. п.с. Уровни сложности я так поняла нужно прописывать через /delay? (скорость перемешения змейки) только как ? Сообщение отредактировано: DarkMoonSide - 20.02.2009 20:59 |
TarasBer |
![]()
Сообщение
#17
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Коментарии попробую, но только после оптимизации, а то кейсов у меня в коде многовато.
Лучше скажи, что конкретно непонятно. А вот делэя не надо. Я зря что ли переменную Time ввёл? Вот специально чтобы не было зависимости скорости игры от мощности процессора. Счётчик очков и нарастание сложности в код вполне вставляется, но я этого делать не буду, в конце концов не мне задание дали. -------------------- |
DarkMoonSide |
![]()
Сообщение
#18
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: ![]() ![]() ![]() |
Коментарии попробую, но только после оптимизации, а то кейсов у меня в коде многовато. Лучше скажи, что конкретно непонятно. А вот делэя не надо. Я зря что ли переменную Time ввёл? Вот специально чтобы не было зависимости скорости игры от мощности процессора. Счётчик очков и нарастание сложности в код вполне вставляется, но я этого делать не буду, в конце концов не мне задание дали. ааа...понятно ![]() А подсказачку как сделать сложность?(скорость передвижения змейки) и шетчик очков. Допустим за одну пойманную точку будет +1 очко, только как это значиние выводить на экран? |
TarasBer |
![]()
Сообщение
#19
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Счётчик делается простым выводом на экран процедурой Write, естественно надо указать куда выводить при помощи GotoXY.
Тут правда нюанс - эта надпись будет затираться змейкой. Поэтому её надо ограничить, не позволяя ей заходить на верхние 2 строчки (1я строчка для отображения состояния, 2я строчка - "заборчик" для наглядности), и соответственно в условие проигрыша добавить. Сложность делается, например, так - всё, что связано с движениями змейки, заключается в условный оператор if T mod Level = 0 then begin ... end То есть змейка будет двигаться не каждый такт игры, а только в тот, чей номер делится на Level. Значение 1 - максимальный уровень сложности, чем больше значение, тем медленнее двигается змейка. -------------------- |
Lapp |
![]()
Сообщение
#20
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
TarasBer, на мой взгляд неправильно учить новичка использовать прямое обращение к системной и аппаратной памяти. Это, кроме всего прочего, вызовет удивление преподавателя (это скорее слова к DarkMoonSIde). Очень рекомендую переделать на обращение через DOS и стандартные модули.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 15:31 |