![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
cooler |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не подскажете какую тему выбрать для разработки объектно- ориентированной программы?
Нужно в общем создать какую-нибудь программу с перспективой перенесения её в Delphi. Стандартные темы нам предложили не так уж что бы интересные: шашки, дурак, типа озера с щуками чё то. Может кто подскажет что-нибудь поинтереснее. Нужно в общем, что бы наследование было, описать свойства и т.п Я вообще то футболом увлекаюсь, но сомневаюсь, что здесь можно что- то придумать связанное с этим..... |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
![]() да что угодно! класс человек у него наследники - футболист, судья, болельщик... у каждого - еще наследники: футболист команды <название>, фанат команды <название>... класс поле класс мяч и т.п. какие к этому алгоритмы приделать - надо думать... чтобы не получилось сложнее, чем в FIFA2008 какой-нить ;) а то сорвешь EA все продажи. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
да что угодно! Эт'точно! ![]() Можно замутить такую стратегию!! Например, можно покупать клубы, прибыль пускать на разные цели: в рекламу, в тренировку, в перекупку игроков, тренеров.. При этом игры не нужно визулизировать - просто случайным образом (с весами вложенных денег, набора игроков и т.п.) выдавать результат. Типа если нападение - супер, и защита - супер, а вратаря вообще забыли поставить - игра сливается с крупным счетом.. чтобы не получилось сложнее, чем в FIFA2008 какой-нить ;) а то сорвешь EA все продажи. Да, есть реальная опасность.. Кстати, тогда 50% - Форуму! ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я конечно понимаю насчет продаж, но пока нет свободного времени с EA Sports конкурировать...
Не а реально что-нибудь простенькое для начала? Потом может разовью ![]() Мы типа в Delphi переносить будем. Наверное в графике делать. А че там рисовать? Типа футбольного менеджера что-ли? Может подкинете начинающему программисту пару идей по реализации этой перспективной выдумки? Как и с чего начать? Какие алгоритмы? Сообщение отредактировано: cooler - 10.10.2007 20:36 |
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Я конечно понимаю насчет продаж, но пока нет свободного времени с EA Sports конкурировать... А я уже распланировала, на что свою долю потрачу ![]() По теме. Можно что-то типа менеджера. Самая примитивная схема: Есть массив футболистов (11 шт) - твоя команда. Есть массив "свободных" футболистов (штук 30, например). У каждого есть "коэффициент качества". Можно менять своего на любого из этого массива с определенной доплатой (если твой лучше - доплатят тебе). Когда ты сформируешь свою команду, случайным образом формируется команда - соперник (из свободных 30 выбирается 11). У кого выше средний коэфф качества - тот победил и получил призовые деньги. В таком виде наша иерархия классов упрощается до 2 классов: игрок и команда. Можем добавить судей. Тогда будет куда приделать наследование ))) У судьи есть 2 коэффициента симпатии - для каждой из команд. Более высокий повышает шансы команды... допустим, коэффициент качества будем умножать на этот коэффициент - и сравнивать уже такие модифицированные коэффициенты. Итак, получаем: 1) Класс "человек". Поля: ФИО, дата рождения... еще какая-нибудь ерунда. 2) Наследники класса "человек": -класс "футболист" (+коэффициент качества) -класс "судья" (+2 коэффициента отношения) 3) Класс "футбольная команда": поля "игроки" (массив из 11 футболистов), название, деньги на счету (выигрыши+обмен игроков+что-то изначально дается), статистика побед/поражений.... Ну, это все очень примитивно. Можно футболистов поделить на вратарей, нападающих... кто там еще... (сорри, не сильна в футболе. тебе виднее). Добавить запасных для каждой команды. Дать возможность игрокам получать травмы. Добавить желтые и красные карточки...... ---- Смутное ощущение, что после 13 часов написания своей программки надавала дурацких советов. Завтра перечитаю.... а может, сумеешь извлечь рациональное зерно. Прошу прощения за пропущенные знаки препинания и опечатки. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
cooler |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо большое.
Согласен можно сделать так. Только вот игроков надо бы разбить и коэффициенты у них разные должны быть. Так например вратаря не поставил - коэф. вратаря - 0, следовательно шансов на победу не очень много. Например KG - коэф. вратаря (goalkeeper) KD - защитника (defender) KM - полузащитника (middle player) KF - нападающего (forward) И во время симуляции игры чтобы можно было паузу (например, в перерыве сделать) и игроков некоторых заменить => коэф. поменялись и игра в другом направлении пошла. Только как всё это реализовать на pascal, большой вопрос. Может подскажете как начать, какие процедуры для того, чтобы игроков менять в составе (16= 11+5 запасных), как компьютер будет набирать игроков (ксати, это тоже обЪект?) Или может сделать игроков тоже не в кучу, а на команды разбить и у этих команд покупать/продавать и с ними играть, а не просто любых игроков набирать. В общем вопросов много, опыта мало, надеюсь на вашу помощь. |
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
можно и на команды разбить... я ж сказала, что привела примитивнейший вариант.
Давай разбираться с иерархией классов... пока самый минимум, потом будешь добавлять и усложнять. Человек Методов нет. Поля: ФИО, дата рождения. Судья (наследник Человека) Методов нет. Поля: отношение к команде1, отношение к команде2. Футболист (наследник Человека) Методы: расчет цены исходя из коэффициента. Поля: коэффициент качества, тип (вратарь, защитник...). Команда Методы: рассчет коэффициента качества исходя из коэффициентов игроков. Поля: название, сумма на счету, состав игроков (массивчики на каждый из типов, чтобы не путаться в них... чтобы не получилось 5 вратарей и ни одного нападающего). Игра Методы: определение победителя и счета (придумай алгоритмы.. как угодно можно). Поля: команды, судья. Игровая среда Методы: обмен между командами, начало матча (создается объект класса "игра" и выводится информация о победителе). Поля: массив (или список) команд, массив (список) судей. Ну и к каждому классу конструктор/деструктор. Попробуй реализовать первые классы (Человек, Судья, Футболист). Там проблем возникнуть не должно по идее. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
cooler |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо большое за помощь.
Вот ещё вопрос: будет(есть) ли здесь полиморфизм и агрегирование? Посмотрите пожалуйста на мою диаграмму. Правильно ли я сопоставил типы? Как связать остальные части диаграммы? Я здесь написал age. Пусть будет возраст вместо даты рождения, он пригодится при расчете цены игрока. Программу как начну делать выложу первые классы. ...А ещё наверное данные человека лучше в файл записей записывать?... Сообщение отредактировано: cooler - 13.10.2007 19:18 Прикрепленные файлы ![]() |
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Возраст придется изменять.
По твоей диаграмме, Футболист и Судья связаны наследованием... а на самом деле - они скорее "братья" - наследники Человека. Записывать - ну, если хочешь сохранять игру, тогда в файл. Что такое агрегирование? Я знаю наследование, полиморфизм и инкапсуляцию... А вот насчет полиморфизма - подумай сам. Что это такое - знаешь? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
|
cooler |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Блин, дату на возраст заменил, а тип нет. byte конечно
Полиморфизм знаю, А как будут связаны другие объекты TTeam, TPLay, TPLayzone? Так здесь агрегирование будет между командой и игроком? Команда содержит Игрока т.е., команда НЕ является некоторым видом игрока, а содержит игрока внутри себя. Сообщение отредактировано: cooler - 14.10.2007 14:19 |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата А как будут связаны другие объекты TTeam, TPLay, TPLayzone? Никак не будут... Здесь нет наследования, чтобы они были связаны. Здесь именно агрегирование.Кстати, при первом взгляде на твою диаграмму возникает впечатление, что у тебя TFootballer - наследник TReferee. На самом деле - они "братья", у них всего навсего один предок. |
мисс_граффити |
![]()
Сообщение
#13
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Ух ты )))
Первый раз в жизни, когда отвечаем с volvo одинаково, я написала раньше... Сорри за офф. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
cooler |
![]()
Сообщение
#14
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Полиморфизм -
Возможность определения единого по имени действия (процедуры или функции), применимого одновременно ко всем объектам иерархии наследования. Так здесь у нас что получается нет полиморфизма? У нас же нет одинаковых процедур для Судьи и футболиста например. Здесь тоже нужны Конструкторы/ деструкторы? Объясните пожалуйста зачем, непонятно. |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата Так здесь у нас что получается нет полиморфизма? Где "тут"? Ты что, уже привел все методы, которые будут в классах, образующих дерево наследования? Полиморфизм и заключается в том, что действие определяется над предком, а потомок (если нужно) его переопределяет, причем при вызове ты можешь не знать, какой именно метод (предка или потомка) отработает... На то и полиморфизм...Так что ответом на твой вопрос может быть: "сделаешь - будет, не сделаешь - не будет". Цитата Здесь тоже нужны Конструкторы/ деструкторы? Желательны, особенно если у тебя есть наследование, полиморфизм -> виртуальные методы. Пока не вызван конструктор объекта, ты не имеешь права работать с его виртуальными методами.То же самое касается и деструкторов - чтобы корректно освободить память потребуется виртуальный деструктор... Ты вот это внимательно читал: ООП. Объектно-ориентированное программирование ? |
cooler |
![]()
Сообщение
#16
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Конечно читал, если бы не читал, то не задавал бы вопросов.
Что не понял, то и спрашиваю |
cooler |
![]()
Сообщение
#17
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я просто не понимаю какие-методы брать. Ведь тех методов, которые мы обговорили, которые в диаграмме, их мало и нет одинаковых для разных объектов. Так что я пока не понимаю куда прилепить эти Конструкторы и Деструкторы.
Начинаю делать программу с конструкторами, так нет методов, берусь реализовывать те методы, которые есть так нет ещё основы для их реализации. А уж про графику вообще заикаться рано... С чего начать, за что ухватиться? Вот только описание к начальным обЪектам:
Что делать???? ![]() мисс_граффити писала, чтобы я начал реализовывать первые классы. Так там одна простая процедура расчета цены игрока и больше ничего. |
мисс_граффити |
![]()
Сообщение
#18
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Цитата Sername По-моему, не так пишется. Если ты про фамилию... Цитата нет одинаковых для разных объектов. ну... можешь попробовать придумать общие для футболиста и судьи методы... пожалуй, если будет графика, таким методом может стать перемещение по полю (вынести в человека... а потом заместить) правда, не поняла, зачем это так уж нужно. а ты уже procedure Raschet(price:real);написал? кстати, почему процедура, а не функция?... //сорри за офф. добрый препод по технологии разработки ПО сегодня во всех подробностях рассказывал, как с помощью ООП реализовать метеостанцию. Про делфи речь шла. Узнала, что поля и свойства - по сути, одно и то же. Что функции - методы, а процедуры - нет (видимо, процедуры - это тоже по сути поля... или свойства... не важно). -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
cooler |
![]()
Сообщение
#19
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: ![]() ![]() ![]() |
фамилия - surname;
Я не собираюсь графически визуализировать матч.( во всяком случае пока) Мне хотя бы сделать программу, выводящую результат матча. Так как хотя бы просто сделать, связать с графикой (чтобы игроков можно было менять, матч запускать) С полиморфизмом и виртуальными методами будем тогда потом усложнять, т.к пока вообще по сути ничего нет. Как реализовать игровую среду? Куда и нужно ли сейчас создавать игроков, хотя бы нескольких (всмысле данные) ------------------ Прошу прощения, но мне кажется я сейчас такую ерунду написал.(только что проснулся) |
мисс_граффити |
![]()
Сообщение
#20
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Игроков нужно будет создавать, когда начнешь делать команды
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:25 |