Четверг, 25 Апреля 2024, 05:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Программирование » C/C++ » Необходима помощь в освоении азов создания игр
Необходима помощь в освоении азов создания игр
redinardДата: Вторник, 25 Октября 2011, 18:07 | Сообщение # 21
постоянный участник
Сейчас нет на сайте
ивеняюсь,это я когда на сайт выкладывал ошибку допустил,компилятор мне следуюющее выдаёт
Quote
[Linker error] undefined reference to `menuNamespace::menu(std::string*, int)'


Я белый и пушистый но имею когти и зубы
0x90Дата: Вторник, 25 Октября 2011, 18:11 | Сообщение # 22
участник
Сейчас нет на сайте
Добавьте к проекту свой файл MenuUtility.сpp
redinardДата: Вторник, 25 Октября 2011, 18:18 | Сообщение # 23
постоянный участник
Сейчас нет на сайте
спасибо,это я упустил ,но проблемма ещё не решина ,ещё осталось:
Quote
pirateTown.o: No such file or directory.


Я белый и пушистый но имею когти и зубы
0x90Дата: Вторник, 25 Октября 2011, 18:23 | Сообщение # 24
участник
Сейчас нет на сайте
Напиши точные названия всех *.h и *.cpp файлов, которые ты используешь в проекте.
redinardДата: Вторник, 25 Октября 2011, 18:31 | Сообщение # 25
постоянный участник
Сейчас нет на сайте
MenuUtility.cpp
MenuUtility.h
pirateTown.cpp
pirateTown.h

Добавлено (25.10.2011, 18:31)
---------------------------------------------
есть ещё несколько побочных файлов которые создаёт Dev C++
.exe файл в принципе создаётся но игра вылитает через некоторое время


Я белый и пушистый но имею когти и зубы
0x90Дата: Вторник, 25 Октября 2011, 18:32 | Сообщение # 26
участник
Сейчас нет на сайте
Quote
pirateTown.cpp

Town или Tawn? В любом случае делаю предположения, что этот файл был недавно переименован, а линкер ищет объектные файлы со старым названием. Тебе нужно сделать rebuild.


Сообщение отредактировал 0x90 - Вторник, 25 Октября 2011, 18:34
redinardДата: Вторник, 25 Октября 2011, 18:42 | Сообщение # 27
постоянный участник
Сейчас нет на сайте
попробовал,до одного места ...

Я белый и пушистый но имею когти и зубы
0x90Дата: Вторник, 25 Октября 2011, 19:43 | Сообщение # 28
участник
Сейчас нет на сайте
В любом случае код рабочий, ты что-то с IDE накосячил. Собирай VC
redinardДата: Вторник, 25 Октября 2011, 22:11 | Сообщение # 29
постоянный участник
Сейчас нет на сайте
А для такого кода какая из версий Microsoft Visual C++ подойдёт (ну конечно кроме Microsoft Visual C++ 6.0-она то я и так знаю что подходит) ?

Я белый и пушистый но имею когти и зубы
0x90Дата: Вторник, 25 Октября 2011, 23:38 | Сообщение # 30
участник
Сейчас нет на сайте
Любая
redinardДата: Среда, 26 Октября 2011, 20:02 | Сообщение # 31
постоянный участник
Сейчас нет на сайте
я что то такое слышал что новые версии требуют другую интерпритацию кода ...

Добавлено (26.10.2011, 02:42)
---------------------------------------------
очередной код с ошибкой :

Code
//Dragon.cpp
#include <string>
#include <ctime>
#include <cstdlib>
#define MAX(a,b) a>b? a:b
using namespace std;
class Dragon
{
       private:
               int speed;
               string name;
               int hitPoints;
               int armour;
               int treasure;
               int clawDamage;
               int size;
       protected:
                 Dragon(int theSize);
                 int getArmour(){return armour;}
                 int& getHitPoints(){return hitPoints;}
                 int getClawDamage(){return clawDamage;}
                 int getSize(){return size;}
                 virtual int attack(int targetArmour,int specialDamage);
       public:
              virtual int attack(int targetArmour)=0;
              virtual void defend(int damage)=0;
              int getTreasure(){return treasure;}
              virtual string getName(){return name;}
              int getSpeed(){return speed;}
              bool isAlive(){return hitPoints>0;}
       };
Dragon::Dragon(int theSize):
                    size(theSize)
{
      if(size<1||size>4)
      size=3;
      clawDamage=2*size;
      speed=3*size;
      hitPoints=4*size;
      armour=size;
      treasure=1000*size;
      srand(time(0));
}
int Dragon::attack(int targetArmour,int specialDamage)
{
     int useSpecial=rand()%2;//0 или 1
     int damage;
     if (useSpecial)
       damage = specialDamage;
     else damage = getClawDamage();
     return MAX(damage - targetArmour,0);
}
     

Code
//RedDragon.cpp
class RedDragon:public Dragon
{
       private:
               int fireDamage;
       public:
              RedDragon(int theSize);
              int attack(int targetArmour);
              void defend(int damage);
              string getName(){return "Красный дракон";}
};
RedDragon::RedDragon(int theSize):
                          Dragon(theSize)
{
    fireDemage=4*getSize();
}
int RedDragon::attack(int targetArmour)
{
     return Dragon::attack(targetArmour,fireDamage);
}
void RedDragon::defend(int damage)
{
      getHitPoints()-=(damage-getArmour())/3;
}

Code
//BlackDragon
class BlackDragon:public Dragon
{
       private:
               int fireDamage;
       public:
              BlackDragon(int theSize);
              int attack(int targetArmour);
              void defend(int damage);
              string getName(){return "Чёрный дракон";}
};
BlackDragon::BlackDragon(int theSize):
                          Dragon(theSize)
{
    poisonDemage=getSize();
}
int RedDragon::attack(int targetArmour)
{
     return Dragon::attack(targetArmour,poisonDamage);
}
void BlackDragon::defend(int damage)
{
      getHitPoints()-=damage-getArmour();
}

Code
//BlueDragon
class BlueDragon:public Dragon
{
       private:
               int iceDamage;
       public:
              RedDragon(int theSize);
              int attack(int targetArmour);
              void defend(int damage);
              string getName(){return "Синий дракон";}
};
BlueDragon::BlueDragon(int theSize):
                          Dragon(theSize)
{
    fireDemage=3*getSize();
}
int BlueDragon::attack(int targetArmour)
{
     return Dragon::attack(targetArmour,iceDamage);
}
void BlueDragon::defend(int damage)
{
      getHitPoints()-=(damage-getArmour())/2;
}

Code
//DragonLord.cpp
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "Dragon.cpp"
#include "RedDragon.cpp"
#include "BlueDragon.cpp"
#include "BlackDragon.cpp"

using namespace std;
int menuChoise();
int main(void)
{
     srand(time(0));
     Dragon*dragons[3];
     int hp=15;
     int armour=2;
     int tempArmour;
     int tempAttack;
     dragons[0]=new RedDragon(rand()%4+1);
     dragons[1]=new BlackDragon(rand()%4+1);
     dragons[2]=new BlueDragon(rand()%4+1);
     Dragons*d=dragons[rand()%3];
     cout<<"Добро пожаловать благородный рыцарью\n"
         <<"Ты должен спасти принцессу."
         <<"Её похитил "
         <<d->getName()<<".\n"
         <<"Ты должен победить дракона.\n";
     cout<<"воя сила: "<<hp<<endl;
     while (d->isAlive()&& hp>0)
     {
          int choise=menuChoise();
          int (choise==3)goto RUN;
          else if (choise==1)
          {
               tempAttack=rand()%16+5;
               tempArmour=armour;
          }
          else
          {
             tempAttack=rand()%11;
             tempArmour=armour+4;
          }
          hp-=d->attack(armour);
          d->defend(rand()%16-5);
          cout<<"\nТы наносишь мощьный удар и ущерб"
              <<tempAttack<<" damage.\n";
          cout<<"Твоя сила: "<<hp;
}
if(d->isAlive())
     cout<<"\nТы побеждён"
         <<"могущественным драконом.\n";
else
     cout<<"\n\nТы победил дракона !"
         <<"Поздравляем\n"
         <<"принцесса спасена.\n";
return 0;
}
int menuChoise()
{
     int choise;
     do{
         cout<<endl
             <<"[1]Атаковать\n"
             <<"[2]Оборонятся\n"
             <<"[3]Бежать\n";
         cin>>choise;
}while(choise<1 && choise>3);
return choise;
}
          

Добавлено (26.10.2011, 02:50)
---------------------------------------------
конкретнее меня волнуе вот эта строка:

Quote
class RedDragon:public Dragon

Добавлено (26.10.2011, 20:02)
---------------------------------------------
Скачал исходники к этой книге,исходник этой программы откомпилировал в Microsoft Visual C++ 6.0 и в Dev C++ ,и оба компилятора мне выдают ошибки,причём разные ...


Я белый и пушистый но имею когти и зубы
ElsДата: Четверг, 27 Октября 2011, 10:22 | Сообщение # 32
почетный гость
Сейчас нет на сайте
Ну то дай нам знать какие ошибки выдеет VS и DEV C++ , и могбы взять по новее VS хотябы версию 8.0 , или ты просто взял потому что авторы этой книги работают именно в ней?
AGDevДата: Четверг, 27 Октября 2011, 10:56 | Сообщение # 33
был не раз
Сейчас нет на сайте
Quote

//DragonLord.cpp

int choise=menuChoise();
int (choise==3)goto RUN; ///должно быть if (choise==3) goto RUN;
else if (choise==1)
{
tempAttack=rand()%16+5;
tempArmour=armour;
}
else
{
tempAttack=rand()%11;
tempArmour=armour+4;
}
redinardДата: Четверг, 27 Октября 2011, 16:55 | Сообщение # 34
постоянный участник
Сейчас нет на сайте
Quote (Els)
Ну то дай нам знать какие ошибки выдеет VS и DEV C++ , и могбы взять по новее VS хотябы версию 8.0 , или ты просто взял потому что авторы этой книги работают именно в ней?

В действительности авторы предлогают компилировать в Code Warior,но в содержании книги автор признаётся что работает в Microsoft Visual C++ 6.0,я конечно могу взять более новую версию,но мне надо уверенность что новые версии без проблемм поддержат старый код,потому что я слышал что в новых версиях идёт новый стандарт кода,к примеру я в универе весь первый курс компилировал код в BORLAND-е,и даже в библиотеках Microsoft Visual C++ 6.0 уже нет таких полезных вещей как clrscr(); и т.п.
Так что остаются вопросы:
Можно ли переходить на более новые версии не боясь что прийдёрся по новому интерпритировать код ?
Не создадут ли они проблеммы при работе с DirectX SDK ?
И в чём же ощутимое превосходство более новых версий ?


Я белый и пушистый но имею когти и зубы
ElsДата: Четверг, 27 Октября 2011, 17:41 | Сообщение # 35
почетный гость
Сейчас нет на сайте
Quote (redinard)
Не создадут ли они проблеммы при работе с DirectX SDK ?

C DX проблем не будет
Quote (redinard)
И в чём же ощутимое превосходство более новых версий ?

Более новее версии дают новые возможности (думаю это понятно) , добавляются новые библиотеки и некоторые исключаются
redinardДата: Четверг, 27 Октября 2011, 18:00 | Сообщение # 36
постоянный участник
Сейчас нет на сайте
Quote (redinard)
Можно ли переходить на более новые версии не боясь что прийдёрся по новому интерпритировать код ?

а как насчёт этого вопроса ?


Я белый и пушистый но имею когти и зубы
05142Дата: Четверг, 27 Октября 2011, 18:31 | Сообщение # 37
постоянный участник
Сейчас нет на сайте
redinard, должно работать.

mecinvader
ElsДата: Пятница, 28 Октября 2011, 00:04 | Сообщение # 38
почетный гость
Сейчас нет на сайте
Quote (redinard)
Можно ли переходить на более новые версии не боясь что прийдёрся по новому интерпритировать код ?

Можеш быть уверенным , все будет работать
redinardДата: Воскресенье, 30 Октября 2011, 13:44 | Сообщение # 39
постоянный участник
Сейчас нет на сайте
ОК попробую ... )

Добавлено (30.10.2011, 12:44)
---------------------------------------------
Установил Microsoft Visual Studio 2008,и уже на простейшем коде который ранее работал появились ошибки ...

Code
#include <iostream>
#include <conio.h>

int main(void)
{
cout<<"Добро пожаловать.Три испытания чести."
      "\nзлой маг похител девицу,и"
   "её судьба в твоих руках"
   "\nон предлогает пройти тебе 3 испытания"
   "чести в его роковом лабиринте";
   bool goldTaken,diamondsTaken,killedByDragon;
cout<<"\n\nТы входишь в первую комнату."
      "\nЗдесь столько золота что ты едва веришь своим глазам"
   "\nВозмёшь ли ты золото(1-да,0-нет)?";
cin>>goldTaken;
if(goldTaken)
cout<<"\nЗолото остаётся тебе,но"
      "ты провалил первое испытание"
   "\nИгра окончена.\n\n";
else
{
cout<<"\n\nПоздравляем ты прошол первое испытание чести !"
      "\nТы переходишь во вторую комнату."
   "она полна брилиантов"
   "\nВозмёшь ли ты брилианты"
   "(1-да,0-нет)?";
    
cin>>diamondsTaken;
if(diamondsTaken)  
cout<<"Брилианты достаются тебе,"
       "но ты провалил второе испытание"
    "\nЕвоя жадность очивидна."
    "\nИгра окончена.\n\n";
else
{
cout<<"Поздравляем ,ты"
       "прошол первые два испытания чести"
    "\n\nТы входишь в третью комнату."
    "\nНа несчаствонго крестянина напал дракон !"
    "\nДвигатся дальше не обращая на них внимания "
    "(1-да,0-нет)?";
     
cin>>killedByDragon;
if(killedByDragon)
cout<<"\nТы пиытаешся проскользнуть мимо"
       "и дракон тебя замечает"
    "\nОдним огненым дуновением "
    "он превращает тебя в пепел. Ты мёртв"
    "\nИгра окончена\n\n";
     
else
cout<<"Поздравляем ты прошол все 3 испытания!\n\n"
       "Конец.\n\n";
}
}
getch();
return 0;
}

Quote
1>------ Построение начато: проект: 13, Конфигурация: Debug Win32 ------
1>Компиляция...
1>656.cpp
1>c:\users\redinard\desktop\13\13\656.cpp(6) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(12) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(15) : error C2065: cin: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(15) : warning C4804: >>: небезопасное использование типа 'bool' в операции
1>c:\users\redinard\desktop\13\13\656.cpp(17) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(22) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(28) : error C2065: cin: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(28) : warning C4804: >>: небезопасное использование типа 'bool' в операции
1>c:\users\redinard\desktop\13\13\656.cpp(30) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(36) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(43) : error C2065: cin: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(43) : warning C4804: >>: небезопасное использование типа 'bool' в операции
1>c:\users\redinard\desktop\13\13\656.cpp(45) : error C2065: cout: необъявленный идентификатор
1>c:\users\redinard\desktop\13\13\656.cpp(52) : error C2065: cout: необъявленный идентификатор
1>Журнал построения был сохранен в "file://c:\Users\RedinarD\Desktop\13\13\Debug\BuildLog.htm"
1>13 - ошибок 11, предупреждений 3
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Я белый и пушистый но имею когти и зубы
BOOMДата: Понедельник, 31 Октября 2011, 08:06 | Сообщение # 40
I am the creator of ADE
Сейчас нет на сайте
std::cout;
либо в начале вноси
using namespace std;

Так как компилятор не находит cout и cin, которые находятся в именном пространстве std.


______________________________
Я вернулся, и это чудо.
______________________________
Форум игроделов » Программирование » C/C++ » Необходима помощь в освоении азов создания игр
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг