Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> class monster, с точки зрения ООП 
:(
    Опции темы
ST_Falcon
  Дата 6.7.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



писал броузерную РПГ на PHP.

построене локаций, поиск противника, магазины, случайные события, нпс. все это работает и реализовано на функциях...

а сегодня меня вопрос начал мучить "что из этого можно переделать в ооп". с концепцией ооп знаком, но вот опыта работы маловато smile. поэтому решил сделать монстро как обьект.

и вот заглох...

берем конкретного монстра. у него есть набор характеристик (сила, ловкость, выносливость ...) и набор модификаторов (атака, защита, деньги ...).
характеристики у каждого монстра свои. а наборы модификаторов я делал для груп монстров (например скелеты, оборотни и т.д.).

что дальше с этим класом делать ума не приложу... какие методы? как мне бой делать если будет класс игрока (со своими наборами модификаторов и характеристик)???

если кто нить подобным занимался прошу помочь!!! 
PM MAIL ICQ   Вверх
dereyly
Дата 6.7.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



Мдя игры в браузере будут сейчас как грибы расти
тоже этот вопрос мучит
Ну как я себе представляю -- есть массив монстров, допустим они как то сортируются по локации и если игрок входит в зону которая указана в объекте, то....
Массив монстров это указатели на произвольный  объект класса (монстр игрок), т.е я думаю нужно сделать класс 2х уровней иерархии 
существо
--игрок 
----дварф
--монстр
----лизардмен
 
PM MAIL   Вверх
ST_Falcon
Дата 6.7.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



все монстры в базе. если происходит поиск монстра по параметрам или нападение на героя, то сообтветсвующий монстр вытягивается из базы...

раньше они у меня были просто масивами значений...
делать их как обьекты? не вижу зачем smile 
PM MAIL ICQ   Вверх
dereyly
Дата 6.7.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



Ну вообщем то да, но можно использовать объектн ор БД, поорганезованей будет
Только непонятно в чем твой вопрос тогда состоит?
 
PM MAIL   Вверх
ST_Falcon
Дата 6.7.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



dereyly
Цитата
Ну вообщем то да, но можно использовать объектн ор БД, поорганезованей будет
Только непонятно в чем твой вопрос тогда состоит?

я вот как раз и хочу посмотреть КАК здесь можно использовать ооп... 
PM MAIL ICQ   Вверх
arilou
Дата 6.7.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Если хотите, могу набросать пример на C# (.NET framework). 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
ST_Falcon
Дата 7.7.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



arilou
буду очень балгодарен smile 
PM MAIL ICQ   Вверх
arilou
Дата 7.7.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



ST_Falcon, dereyly, вот такой вот маленький примерчик получился:

Код

using System;
using System.Collections.Generic;
using System.Text;

namespace MonsterClass
{
    /// <summary>
    /// Любое существо в игре - актер
    /// </summary>
    public abstract class Actor
    {
        private int _strength;
        /// <summary>
        /// Сила
        /// </summary>
        public int Strength
        {
            get { return _strength; }
            set { _strength = value; }
        }

        private int _life;
        /// <summary>
        /// Уровень жизни
        /// </summary>
        public int Life
        {
            get 
            { 
                return _life; 
            }
            set 
            { 
                _life = value;

                // если нам доуменьшали жизни до минимума 
                // то умираем
                if (_life <= 0)
                    Die();
            }
        }

        /// <summary>
        /// Ударить противника. Если наша сила больше или равна силе
        /// противника - уменьшаем его жизнь на силу удара, иначе
        /// уменьшаем нашу
        /// </summary>
        /// <param name="strikeTarget">ссылка на противника</param>
        public virtual void Strike(Actor strikeTarget)
        {
            if (Strength >= strikeTarget.Strength)
            {
                strikeTarget.Life -= Strength;
            }
            else
                Life -= strikeTarget.Strength;
        }

        /// <summary>
        /// Каждый актер умирает по-своему
        /// </summary>
        public abstract void Die();

        /// <summary>
        /// Определаем, мертв ли клиент или жив :)
        /// </summary>
        public bool IsDead
        {
            get { return _life <= 0; }
        }
    }

    public class Monster : Actor
    {
        public override void Die()
        {
            Console.WriteLine("Монстр умер");
        }
    }

    public class Player : Actor
    {
        public override void Die()
        {
            Console.WriteLine("Игрок умер");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Monster monster = new Monster();
            monster.Life = 100;
            monster.Strength = 5;

            Player player = new Player();
            player.Life = 100;
            player.Strength = 10;

            // Атакуем монстра, пока он не умрет
            while (!monster.IsDead && !player.IsDead)
            {
                Console.WriteLine("Игрок атакует монстра");
                player.Strike(monster);
                Console.WriteLine(string.Format("Игрок: {0} Монстр: {1}",
                    player.Life, monster.Life));
            }

            Console.ReadLine();
        }
    }
}
 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1119 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.