Игра: c верхней части экрана падают шары. Управляя ловушкой, игрок должен собрать как можно больше шаров за одну минуту. С течением времени плотность падения шаров уменьшиться, а скорость увеличивается. По истечении времени (1 мин.) на экран выводиться колво пойманных шаров.10 лучших храняться в файле и выводятся на экран по запросу пользователя.
вот она сделанная! тока без объектов!!!
помогите переписать! что надо сделать модуль где будут храниться объекты (необходимо наследование)... хелп!!!! и очень хороше бы использовать глючный модуль граф...
игра ниже!
virt
11.06.2005 1:36
пока писал столкнулся с одной проблемой ,если делать метод виртуальным ,то при исполнении прога вылетает с ошибкой NTVDM ,из-за чего и как все-таки реализовать виртуальные методы?
ЗЫ смотрите файл в аттаче.
ЗЫ2 все ясно из-за чего.
volvo
11.06.2005 2:12
Цитата(virt @ 10.06.05 21:36)
если делать метод виртуальным ,то при исполнении прога вылетает с ошибкой NTVDM ,из-за чего и как все-таки реализовать виртуальные методы?
Игра: c верхней части экрана падают шары. Управляя ловушкой, игрок должен собрать как можно больше шаров за одну минуту. С течением времени плотность падения шаров уменьшиться, а скорость увеличивается. По истечении времени (1 мин.) на экран выводиться колво пойманных шаров. 10 лучших храняться в файле и выводятся на экран по запросу пользователя.
Вот она же, только немного с другим оформлением, и с объектами...
punkska
12.09.2005 15:40
Огромное спасибо!!!!! :rose:
Вот посмотрите эту же игру... помогите в ней создать наследование... что-то не как не получаеться=(((
Volvo as guest
12.09.2005 15:58
Дык... А какое же там наследование? В программе 33 строки, зачем тебе здесь наследование понадобилось? По-моему, это будет просто искусственное нагромождение конструкций.
Наследование и ООП вообще, конечно, мощная штука, но пользоваться ей бездумно не стОит... Это же просто "из пушки по воробьям" получается.
punkska
12.09.2005 16:04
я не то отправил!!!
Дож
12.09.2005 21:22
Цитата
помогите в ней создать наследование...
Думаю, что здесь и вправду лишнее нагромождение проги(я про Program.pas), НО если усовершенствовать игру, например, добавить шары разного типа- с бомбой(взрывающие все остальные шары), добавляющие жизнь,с ловушкой(при поимке забираются очки) и т.д., то можно использовать наследование. Т.е. если игрок поймал шар, то вызывается метод PlayerCatch, который реагирует по-разному в зависимости от типа шара. Тогда объект TBall будет иметь виртуальный метод PlayerCatch и все разновидности мяча будут наследниками этого объекта.
punkska
12.09.2005 23:05
Может ловушку попытаться сделать ОбъетоМ ..тока что наследовать ловушке от шарика я хз=) помогите в этом не лёгком вопросе!
Дож
13.09.2005 19:10
Цитата
..тока что наследовать ловушке от шарика
Да, нечего наследовать. Но и шарик и ловушка могут иметь одного общего родителя, например, TGameObj, котрый хранит координату на экране и умеет ею манипулировать, внешний вид(в любом виде- цвет, тип формы, спрайт или даже 3D модель, если хочешь), активность(существует ли в данный момент шар или с ним ничего не нужно делать) и т.д.
volvo
13.09.2005 19:18
punkska, ты мою программу вообще смотрел, или ты думаешь, что я просто так ее делал, чтобы только на форум выложить? :no: Там же наследование один к одному, как Дож говорит ...
Исходники я для чего дал? Для красоты?
punkska
13.09.2005 22:18
модуль objs не могу скомпилировать пишит ошибка 116 must in 8087 mode to compile this.
Procedure TBox.Recalc; Begin Inc(pos_y, Trunc(v_speed * box_mult ) ); (ЧТО-ТО В ЭТОЙ СТРОЧКЕ ПАСКАЛЮ НЕ НРАВИТЬСЯ) out_of_game := out_of_game or (pos_y > GetMaxY) End;
что я не так делаю? как скомпелировать ?
volvo
13.09.2005 22:35
Добавь
{$N+, E+}
самой первой строкой основной программы и перекомпилируй всё (Build All) ...
Ну или menu -> Options -> Compiler -> оба пункта в "Numeric processing" должны быть отмечены...
punkska
13.09.2005 22:56
С П А С И Б О!!! а модуль Litt что это за модуль?
Дож
13.09.2005 23:22
Ассемблерная процедура для установки BGI шрифта.
volvo
13.09.2005 23:35
Дож, давай ты будешь отвечать, ТОЛЬКО когда на 100% уверен в том, что ты отвечаешь правильно !!! Какая
Цитата
Ассемблерная процедура для установки BGI шрифта
? Это простой LITT.CHR, для удобства (чтобы не таскать за собой постоянно лишний CHR-файл) переконвертированный в OBJ-файл и прилинкованный к программе. Точно так же, кстати, как и EGAVGA.BGI переконвертирован в OBJ...
Дож
14.09.2005 21:21
Цитата
Это простой LITT.CHR, для удобства (чтобы не таскать за собой постоянно лишний CHR-файл)
Инересно, а какая разница между тем, что таскть- *.bgi или *.obj?
punkska
16.09.2005 1:02
что то совсем непонятно для чего и что это за файлик.. =(
volvo
16.09.2005 1:24
Цитата(Дож @ 14.09.05 17:21)
Инересно, а какая разница между тем, что таскть- *.bgi или *.obj?
Нет, Дож, ты не понял... Во время компиляции OBJ-файл линкуется к EXE и тебе не надо его таскать за собой, он уже внутри EXE-шника. А попробуй сделать программу, использующую EGAVGA.BGI, откомпилировать ее у себя, а запустить EXE-шник на компе, где файла EGAVGA.BGI нету. Что будет? Можешь не пытаться, я тебе и так скажу:
Цитата
Graph Error (-2): Driver not found
punkska
Цитата
что то совсем непонятно для чего и что это за файлик
Еще раз: LITT.OBJ - это файл LITT.CHR (файл, содержащий мелкий шрифт - smallFont), только переконвертированный в LITT.OBJ вот такой командой:
Цитата
binobj LITT.CHR LITT.OBJ LittFontProc
, и присоединенный к исполнимому файлу, как внешняя процедура:
{$L LITT.OBJ} Procedure LittFontProc; External;
С EGAVGA.OBJ - то же самое: берем EGAVGA.BGI, и ...
Теперь (после компиляции) можно не заботиться о том, чтобы на компьютере, где будет запускаться игра, обязательно присутствовали эти 2 файла, они уже есть внутри EXE... То есть преимущество: ты передаешь получателю 1 файл вместо 3-х, а чем меньше файлов - тем меньше вероятность сбоя программы...
Shura
16.09.2005 2:19
Вот это уже интересно! Думаю это многим будет полезно! Я, например, не знал... Так а можно любой файл прилинковать?
volvo
16.09.2005 2:37
Да... Любой файл данных, где-то были даже примеры прилинковки PCX-файлов, с последующим их отображением из программы...
и что такое cleardevice; я конечно догадываюсб =) но хотелось определение получить!
volvo
17.09.2005 2:41
punkska, ответы внимательнее читаем ;)
Цитата(volvo @ 15.09.05 21:24)
Еще раз: LITT.OBJ - это файл LITT.CHR (файл, содержащий мелкий шрифт - smallFont), только переконвертированный в LITT.OBJ вот такой командой: , и присоединенный к исполнимому файлу, как внешняя процедура:
{$L LITT.OBJ} Procedure LittFontProc; External;
С EGAVGA.OBJ - то же самое ...
Фактически External говорит компилятору, что процедуры с таким именем в PAS файле не будет, а находится эта процедура где-то во внешнем OBJ файле. Кстати, именно поэтому обычно Extern и {$L ...} располагаются рядом (для удобства программиста, чтобы не забыть прилинковать OBJ), хотя могут быть в любом месте программы.
При наличии такого объявления на этапе компиляции Паскаль не будет искать процедуры с именами EGAVGADriverProc и LittFontProc в текущем PAS-файле. Они будут искаться только на этапе линковки (редактирования связей) во всех файлах, описанных в {$L ...}
А насчет ClearDevice и иже с ними - это можно посмотреть в Help-е на Turbo Pascal, т.к. это стандартная процедура модуля Graph (очистка графического экрана) ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.