Вторник, 27 Октября 2020, 17:16

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » redinard [398]
Результаты поиска
redinardДата: Вторник, 08 Ноября 2011, 00:04 | Сообщение # 361 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
в том предложении что ты выделил ясно сказано что я выучил лишь азы,я все полтора года что учусь работал в BORLAND-е и разрабатывал программы под DOS ООП,разработка програм по WINDOWS и всё прочее у меня лишь со следующего семестра , вот поэтому я и создал эту тему в которой совмещаю приятное с полезным,проделываю шаги к созданию своей первой полноценной игры и совершенствую свои навыки программирования.

Добавлено (04.11.2011, 22:34)
---------------------------------------------
и да кстати ,скомпилировал код в Dev C++ заработало,но в дальнейшем я хочу продолжать разрабатывать в Microsoft Visual Studio 2008,поэтому всё же подскажите в чём загвоздка ?

Добавлено (08.11.2011, 00:04)
---------------------------------------------
очередная проблемма,только в этот раз я не писал код а тупо скомпилировал код с прилогаемого диска
компилировал в Microsoft Visual Studio 2008

Code
//13.1 - The Random Color Program -Dirk Henkemans
#include <windows.h>
#include <cstdlib>
#include <ctime>
#include <ddraw.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam,
          LPARAM lParam);

LPDIRECTDRAW7 g_pdd; //the DirectDraw object
LPDIRECTDRAWSURFACE7 g_pddsprimary; //the primary surface
LPDIRECTDRAWSURFACE7 g_pddsback; //the back buffer
LPDIRECTDRAWSURFACE7 g_pddsone; //a temporary surface
DDSURFACEDESC2 ddsd; //used to store surface descriptions
DDSCAPS2 ddsc; //stores the capabilities of a surface
HRESULT hRet; //used to temporarily store the result of a function

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst,
        LPSTR lpszCmdLine, int nCmdShow)
{
  HWND  hWnd;
  MSG   msg;
  WNDCLASSEX    wc;

  //fill the WNDCLASSEX structure with the appropriate values
  wc.cbSize = sizeof(WNDCLASSEX);
  wc.style = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInst;
  wc.hIcon = LoadIcon(NULL, IDI_EXCLAMATION);
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  wc.lpszMenuName = NULL;
  wc.lpszClassName = "RandomColor";
  wc.hIconSm = LoadIcon(NULL, IDI_EXCLAMATION);

  //register the new class
  RegisterClassEx(&wc);

  //create a window
  hWnd = CreateWindowEx(
   NULL,
   "RandomColor",
   "The Random Color Program",
   WS_VISIBLE,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   NULL,
   NULL,
   hInst,
   NULL
  );

  //event loop - handle all messages
  while(GetMessage(&msg, NULL, 0, 0))
  {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
  }

  //standard return value
  return (msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam,
          LPARAM lParam)
{
   
  //find out which message is being sent
  switch(nMsg)
  {
   case WM_CREATE:
    //create the timer (3 seconds)
    SetTimer(hWnd, 1, 3000, NULL);
    //create the DirectDraw object
    hRet = DirectDrawCreateEx(NULL, (void**)&g_pdd,IID_IDirectDraw7, NULL);
    if(hRet != DD_OK)
     MessageBox(hWnd, "DirectDrawCreateEx Failed", "Error", NULL);
    //Set the Cooperative Level
    hRet = g_pdd->SetCooperativeLevel(hWnd, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE);
    if(hRet != DD_OK)
     MessageBox(hWnd, "SetCooperativeLevel Failed", "Error", NULL);;
    //Set the display mode: 800x600 with 16 bits per pixel
    hRet = g_pdd->SetDisplayMode(800, 600, 16,0,0);
    if(hRet != DD_OK)
     MessageBox(hWnd, "SetDisplayMode Failed", "Error", NULL);;
     
    //prepare primary surface info
    ZeroMemory(&ddsd,sizeof(ddsd));
    ddsd.dwSize = sizeof(ddsd);
    ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    ddsd.dwBackBufferCount = 1;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
   
    //create the surface
    hRet = g_pdd->CreateSurface(&ddsd, &g_pddsprimary, NULL);
    if (hRet != DD_OK)
     MessageBox(hWnd, "CreateSurface Failed", "Error", NULL);
   
    //prepare the back buffer info
    ZeroMemory(&ddsc,sizeof(ddsc));
    ddsc.dwCaps = DDSCAPS_BACKBUFFER;
     
    //get a pointer to the back buffer
    hRet = g_pddsprimary->GetAttachedSurface(&ddsc,&g_pddsback);
    srand(time(0));
    break;
   
   case WM_TIMER: //when the timer goes off (only one)
    DDBLTFX ddbltfx;
    ZeroMemory(&ddbltfx,sizeof(ddbltfx));
    ddbltfx.dwSize = sizeof(ddbltfx);
    ddbltfx.dwFillColor = rand()%16;
    g_pddsback->Blt(NULL,NULL,NULL, DDBLT_COLORFILL, &ddbltfx);
    g_pddsprimary->Flip(NULL,0);
    break;

   case WM_DESTROY:
    //destroy the timer
    KillTimer(hWnd, 1);
    //end the program
    PostQuitMessage(0);
    break;
   
   default:
    //let Windows handle every other message
    return(DefWindowProc(hWnd, nMsg, wParam, lParam));
  }

  return 0;
}

Code
/*==========================================================================
  *
  *  Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved.
  *
  *  File:       ddutil.cpp
  *  Content:    Routines for loading bitmap and palettes from resources
  *
  ***************************************************************************/

#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif    /* __cplusplus */

extern IDirectDrawPalette  *DDLoadPalette(IDirectDraw7 *pdd, LPCSTR szBitmap);
extern IDirectDrawSurface7 *DDLoadBitmap(IDirectDraw7 *pdd, LPCSTR szBitmap, int dx, int dy);
extern HRESULT              DDReLoadBitmap(IDirectDrawSurface7 *pdds, LPCSTR szBitmap);
extern HRESULT              DDCopyBitmap(IDirectDrawSurface7 *pdds, HBITMAP hbm, int x, int y, int dx, int dy);
extern DWORD                DDColorMatch(IDirectDrawSurface7 *pdds, COLORREF rgb);
extern HRESULT              DDSetColorKey(IDirectDrawSurface7 *pdds, COLORREF rgb);

#ifdef __cplusplus
}
#endif    /* __cplusplus */

с юникодом всё понятно,меня остальные ошибки интересуют
Quote
------ Построение начато: проект: 3434, Конфигурация: Debug Win32 ------
Компиляция...
13-1TheRandomColorProgram.cpp
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "PVOID64"
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Buffer"
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(37) : error C2440: =: невозможно преобразовать 'const char [12]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(57) : error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'const char [12]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(83) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [26]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(87) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [27]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(91) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [22]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(103) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [21]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\3434\3434\13-1therandomcolorprogram.cpp(111) : warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
Журнал построения был сохранен в "file://c:\Users\Николай\Desktop\3434\3434\Debug\BuildLog.htm"
3434 - ошибок 11, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Я белый и пушистый но имею когти и зубы

Сообщение отредактировал redinard - Пятница, 04 Ноября 2011, 22:25
redinardДата: Понедельник, 07 Ноября 2011, 23:50 | Сообщение # 362 | Тема: Посоветуйте учебник
постоянный участник
Сейчас нет на сайте
Дирк Хенкеманс, Марк Ли - Программирование на C++ , мне лично эта книга больше всех понравилась.

Я белый и пушистый но имею когти и зубы
redinardДата: Пятница, 04 Ноября 2011, 22:55 | Сообщение # 363 | Тема: нужны Бета-тест игры
постоянный участник
Сейчас нет на сайте
Я тоже поучаствую !

Я белый и пушистый но имею когти и зубы
redinardДата: Пятница, 04 Ноября 2011, 18:49 | Сообщение # 364 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
пасибо,разобрался но тут новые грабли :
Quote
Компиляция...
boll.cpp
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "PVOID64"
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Buffer"
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
Журнал построения был сохранен в "file://c:\Users\Николай\Desktop\мячь\мячь\Debug\BuildLog.htm"
мячь - ошибок 5, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Я белый и пушистый но имею когти и зубы
redinardДата: Пятница, 04 Ноября 2011, 17:51 | Сообщение # 365 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
покажи пожалуйста на примере моего кода , чтобы я убедился правильно ли я понял ...

Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 03 Ноября 2011, 22:44 | Сообщение # 366 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
ошибка в коде,не могу понять чего от меня хочет компилятор(точнее понимаю но не знаю как это исправить ):
Code
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM WParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPreints,
        LPSTR lpszCmdLine, int nCmdShow)
{
  HWND hWnd;
  MSG msg;
  WNDCLASSEX wc;
wc.cbSize=sizeof(WNDCLASSEX);
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInst;
wc.hIcon=LoadIcon(NULL,IDI_EXCLAMATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName="BouncingBall";
wc.hIconSm=LoadIcon(NULL,IDI_EXCLAMATION);

RegisterClassEx(&wc);

hWnd=CreateWindowEx(
        NULL,
        "BouncingBall",
        "Рекошитирующий Мяч",
        WS_OVERLAPPEDWINDOW|WS_VISIBLE,
        CW_USEDEFAULT,
                       CW_USEDEFAULT,
                       CW_USEDEFAULT,
                       CW_USEDEFAULT,
        NULL,
        NULL,
        hInst,
        NULL
    );

while(GetMessage(&msg,NULL,0,0))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
return(msg.wParam);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,
        LPARAM lParam)
{

static int dX=5,dY=5;
static int x=0,y=0,oldX=0,oldY=0;
HDC hDC;
HBRUSH brush;
switch(nMsg)
{
case WM_CREATE:
  SetTimer(hWnd,1,20,NULL);
  break;
case WM_TIMER:
  hDC=GetDC(hWnd);
  brush=(HBRUSH)SelectObject(hDC,GetStockObject(WHITE_BRUSH));

RECT temp;
temp.left=oldX;
temp.top=oldY;
temp.right=oldX+30;
temp.bottom=oldY+30;

FillRect(hDC,&temp,brush);
brush=(HBRUSH)SelectObject(hDC,GetStockObject(GRAY_BRUSH));
Ellipse(hDC,x,y,30+x,30+y);
oldX=x;
oldY=y;
x+=dX;
y+=dY;

RECT rect;
GetClientRect(hWnd,&rect);
if(x+30>rect.right||x<0)
{
  dX=-dX;
}
if(y+30>rect.bottom||y<0)
{
  dY=-dY;
}
SelectObject(hDC,brush);
ReleaseDC(hWnd,hDC);
break;
case WM_DESTROY:
      KillTimer(hWnd,1);
   PostQuitMessage(0);
   break;
default:
  return(DefWindowProc(hWnd,nMsg,wParam,lParam));
}
return 0;
}


Quote
Компиляция...
boll.cpp
c:\users\николай\desktop\рекошитирующий мяч\рекошитирующий мяч\boll.cpp(20) : error C2440: =: невозможно преобразовать 'const char [13]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\users\николай\desktop\рекошитирующий мяч\рекошитирующий мяч\boll.cpp(38) : error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'const char [13]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Журнал построения был сохранен в "file://c:\Users\Николай\Desktop\рекошитирующий мяч\рекошитирующий мяч\Debug\BuildLog.htm"
рекошитирующий мяч - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 03 Ноября 2011, 00:35 | Сообщение # 367 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
ну знаешь,чтобы удалить коментарий даже не надо особых знаний в прграммировании )

Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 02 Ноября 2011, 23:45 | Сообщение # 368 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Спасибо !

Добавлено (02.11.2011, 23:45)
---------------------------------------------
Назрел тут волнующий меня вопрос,я в скором времени перехожу к изучению одной интересной книге,в которой излогается разработка игр в стиле RPG,в процессе изучения книги мне прийдётся создать движок,но этот движок всё же пренадлежит автору.Вот тут возникает вопрос: могу ли я на основе этого движка создать свой , повзоимствовав некоторые функции ,добавив новые и разумеется иметь на него полные права не боясь что возникнут какие либо притензии из за взаимствования реализации некоторых возможностей ,и т.д. ?


Я белый и пушистый но имею когти и зубы
redinardДата: Воскресенье, 30 Октября 2011, 13:44 | Сообщение # 369 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
ОК попробую ... )

Добавлено (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 ==========


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

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


Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 27 Октября 2011, 16:55 | Сообщение # 371 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Quote (Els)
Ну то дай нам знать какие ошибки выдеет VS и DEV C++ , и могбы взять по новее VS хотябы версию 8.0 , или ты просто взял потому что авторы этой книги работают именно в ней?

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


Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 26 Октября 2011, 20:02 | Сообщение # 372 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
я что то такое слышал что новые версии требуют другую интерпритацию кода ...

Добавлено (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++ ,и оба компилятора мне выдают ошибки,причём разные ...


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 22:11 | Сообщение # 373 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
А для такого кода какая из версий Microsoft Visual C++ подойдёт (ну конечно кроме Microsoft Visual C++ 6.0-она то я и так знаю что подходит) ?

Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 18:42 | Сообщение # 374 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
попробовал,до одного места ...

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

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


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 18:18 | Сообщение # 376 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
спасибо,это я упустил ,но проблемма ещё не решина ,ещё осталось:
Quote
pirateTown.o: No such file or directory.


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 18:07 | Сообщение # 377 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
ивеняюсь,это я когда на сайт выкладывал ошибку допустил,компилятор мне следуюющее выдаёт
Quote
[Linker error] undefined reference to `menuNamespace::menu(std::string*, int)'


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 17:56 | Сообщение # 378 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Логично что там ошибка,я бы просто так код бы не выкладывал,а эти кракозябли это русский текст,я не виноват что сайт его не понимает(хотя в одном из выложеных мной кодов он понял),но они то собственно и не мишают ...

Добавлено (25.10.2011, 17:56)
---------------------------------------------
а конкретнее компилятор ругается на :

Quote
using menuNamespace::menu;


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 25 Октября 2011, 17:43 | Сообщение # 379 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
"программирование на С++" марк ли,дирк хенкеманс

Добавлено (25.10.2011, 13:22)
---------------------------------------------
Я кстати разобрался в Dev C++?а
Quote
setlocale( LC_ALL, "rus" );
для MVC++ 6 не катит,компилируется,но при запуске выдаёт ошибку...

Добавлено (25.10.2011, 17:43)
---------------------------------------------
вот ещё один код на ваше обозрение
Code

// pirateTawn.cpp
#include <iostream>
#include <string>
#include "MenuUtility.h"
#include "pirateTown.h"
using namespace std;

using menuNamespace::menu;

namespace wharf
{
     void menu()
{
        string options[]=
        {"ïðûãíóòü â âîäó",
        "âçÿòü ãðåáíóþ øëþïêó è óïëûòü â çâêàò.",
        "âçîéòè íà áîðò êðîâàâîãî âåòðà.",
        "îòïðàâèòñÿ â ãîðîä"};
        int userResponse=::menu(options,4);
          
        switch(userResponse)
        {
          case 1:
               cout<<"Òû ïðûãàåøü â âîäó."
                   <<"Âíåçàïíî òû ñëûøèøü"
                   <<"ñìåõ,è òóò æå\n"
                   <<"îñîçíà¸øü ÷òî çàáûë"
                   <<"ñíÿòü îäåæäó."
                   <<"Òû âûëàçèåøü èç âîäû"
                   <<"ïðîìîêøèé íàñêâîçü\n";
                   menu();
                   break;
          case 2:
               cout<<"Òû õâàòàåøü íå áîëüøóþ êðàñíóþ ëîäêó "
                   <<"è óïëûâàåøü â çàêàò"
                   <<"Àõ,ñëàâà."<<endl;
                   break;
          case 3:
               cout<<"Òû âîçâðàùàåøñÿ íà áîðò êðîâàâîãî âåòðâ"
                   <<"è æä¸øü êîãäà âåðíóòñÿ òâîè äðóçüÿ,"
                   <<"âäîâîëü íàâåñåëèâøèñü. \n";
                   break;
          case 4:
               street::menu();
               break;
}
}
}
//îáðàáîòêà ñîáûòèé â òàâåðíå
namespace tavern
{
   void menu(void)
   {
      string options[]=
      {"Çôêàçàòü âûïèâêó"
      "Íà÷àòü øóìíóþ äðàêó"
      "Âûòè íà óëèöó."};
      int userResponse=::menu(options,3);
        
      switch(userResponse)
      {
       case 1:
              cout<<"Òû çàêàçàë êîêòåéëü"
                  <<"\"ËÅÍÒßÉ\"\n";
                  menu();
                  break;
       case 2:
            cout<<"Òû íà÷àë øóìíóþ äðàêó\n";
            menu();
            break;
       case 3:
            street::menu();
            break;
       }
}
}
//îáðàáîòêà ñîáûòèé ïðîèñõîäÿøèõ íà óëèöå
namespace street
{
    void menu(void)
    {
        string options[]=
        {"Äâèíóòñÿ ê ïðè÷àëó",
        "Âîéòè â òàâåðíó",
        "Âîéòèâ îðóæåéíûé ìàãàçèí",
        "Íà÷àòü äðàêó."};
        int userResponse=::menu(options,4);
        switch(userResponse)
        {
          case 1:
               wharf::menu();
               break;
          case 2:
               tavern::menu();
               break;
          case 3:
                weaponShop::menu();
                break;
          case 4:
               cout<<"Òû íà÷àë îòëè÷íóþ äðàêó íà óëèöå\n";
               street::menu();
               break;
        }
}
}
//ïîêóïêà îðóæèÿ
namespace weaponShop
{
            void menu(void)
            {
                 string options[]=
                 {"Êóïèòü êèíæàë èíõðóñòèðîâàííûé äðàãîöåííûìè êàìíÿìè çà 300",
                 "Êóïèòü êðåìíåâûé ìóøêåò çà 300 ",
                 "Êóïèòü ñòàíäàðòíóþ áîåâóþ ñàáëþ çà 100 ",
                 "Óéòèèç ìàãàçèíà."};
                 int userResponse=::menu(options,4);
                 switch(userResponse)
                 {
                   case 1:
                        cout<<"Òû êóïèë êèíæàë"
                            <<"è ñïðÿòàë åãî â êàðìàí\n"   
                            <<"óïëàòèâ êîñòëÿâîìó ìóæ÷èíå "   
                            <<"çà ïðèëàâêîì\n";
                        menu();
                        break;
                   case 2:
                        cout<<"Çàïëàòèâ çàìóøêåò,"
                            <<"òû ñðàçó îöåíèë åãî."   
                            <<"Îí ïðåâîñõîäíî äåéñòâóåò !!!\n";
                        menu();
                        break;
                   case 3:
                        cout<<"Âçìàõíóâ ñàáëåé ïàðó ðàç òû ïîíèìàåøü\n"
                            <<"÷òî îíà íå ñòîèò"
                            <<"ïîòðà÷åííîãî çîëîòà\n";
                        menu();
                        break;
                   case 4:
                        street::menu();
                        break;
                   }
}
}
// íà÷àëî èãðû
int main(void)
{
      cout<<"Òâîé êîðàáûëü êðîâàâûé âåòåð âîøîë â äîêè"
          <<"Òû ñîøîë ñ\n"
          <<"êîðîáëÿ è ñòîèøü íà ïðè÷àëåþ\n\n";
      wharf::menu();
      return 0;
}              


Code

// pirateTawn.h
#include <iostream>
#include <string>
#include "MenuUtility.h"
using namespace std;
//îáÿâëåíèÿ ôóíêöèé
namespace street
{
            void menu(void);
}
namespace weaponShop
{
            void menu(void);
}
namespace wharf
{
          void menu(void);
}
namespace tavern
{
            void menu(void);
}        

Code

// MenuUtility.h
#include <iostream>
#include <string>
using namespace std;
namespace menuNamespace
{
            int menu(string* strArray,int size);
}


Я белый и пушистый но имею когти и зубы

Сообщение отредактировал redinard - Вторник, 25 Октября 2011, 18:06
redinardДата: Вторник, 25 Октября 2011, 13:06 | Сообщение # 380 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Сейчас откомпилировал в MVC ,всё работает,вот только он не понимает русский язык ((

Я белый и пушистый но имею когти и зубы
Форум игроделов » Записи участника » redinard [398]
Поиск:

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