Добавлено (02.11.2011, 23:45) --------------------------------------------- Назрел тут волнующий меня вопрос,я в скором времени перехожу к изучению одной интересной книге,в которой излогается разработка игр в стиле RPG,в процессе изучения книги мне прийдётся создать движок,но этот движок всё же пренадлежит автору.Вот тут возникает вопрос: могу ли я на основе этого движка создать свой , повзоимствовав некоторые функции ,добавив новые и разумеется иметь на него полные права не боясь что возникнут какие либо притензии из за взаимствования реализации некоторых возможностей ,и т.д. ?
redinard, ну ты же сам написал/напишешь все с нуля. В основном, часто, если используете чужие исходники, то там в тексте идет очень большой комментарий, в котором описываются все положения и т.д. если такого нет - то я сомневаюсь что к вам могут пристать @noTformaT
redinard, в книгах приводятся примеры для обучения. Этими примерами разрешено пользоваться в дальнейшей практике.
Quote (redinard)
могу ли я на основе этого движка создать свой , повзоимствовав некоторые функции ,добавив новые и разумеется иметь на него полные права не боясь что возникнут какие либо притензии из за взаимствования реализации некоторых возможностей ,и т.д. ?
По идеи - да, воспользоваться можешь, в качестве примера. ______________________________ Я вернулся, и это чудо. ______________________________
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;
Компиляция... 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 ==========
Компиляция... 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 ==========
азы программирования я выучил(я уже второй курс на программиста учусь)
Я посоветовал бы автору для начала получше изучить языки программирования, которыми он пользуется. Создаётся впечатление, что человек совсем не понимает, что делают программы, которые он перепечатал с книги. Да и с форматированием кода проблемы.
в том предложении что ты выделил ясно сказано что я выучил лишь азы,я все полтора года что учусь работал в 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>
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;
//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
Chapter13/13-1TheRandomColorProgram.o(.text+0x1e7):dev-cpp-rus.cpp: undefined reference to `IID_IDirectDraw7' Chapter13/13-1TheRandomColorProgram.o(.text+0x1fb):dev-cpp-rus.cpp: undefined reference to `DirectDrawCreateEx@16' collect2: ld returned 1 exit status
Выполнение заверше
но
Добавлено (08.11.2011, 00:57) --------------------------------------------- и хуже всего то, что пока не пойму в чём ошибка я не могу продвигатся дальше ...
Добавлено (08.11.2011, 17:28) --------------------------------------------- а вот что мне выдал Microsoft Visual C++ 6.0:
Quote
--------------------Configuration: 234 - Win32 Debug-------------------- Compiling... 13-1TheRandomColorProgram.cpp c:\users\николай\desktop\234\13-1therandomcolorprogram.cpp(10) : error C2146: syntax error : missing ';' before identifier 'g_pdd' c:\users\николай\desktop\234\13-1therandomcolorprogram.cpp(10) : error C2501: 'LPDIRECTDRAW7' : missing storage-class or type specifiers c:\users\николай\desktop\234\13-1therandomcolorprogram.cpp(10) : fatal error C1004: unexpected end of file found Error executing cl.exe.
Добавлено (09.11.2011, 01:36) --------------------------------------------- полазив по другим форумам смог уменьшить кол.во ошибок,но что с этой делать не знаю
Quote
------ Построение начато: проект: 3434, Конфигурация: Debug Win32 ------ Компиляция... 13-1TheRandomColorProgram.cpp c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2182: Buffer: недопустимое использование типа "void" 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 - ошибок 1, предупреждений 1 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Среда, 09 Ноября 2011, 01:37
Я же уже выложил код оригенала исходников выше ...
Добавлено (09.11.2011, 19:26) --------------------------------------------- Вот что я смог найти по этому поводу нэте:
Недавно установил Visual Studio 2005. Тут же загрузил скачанный из интернета DX-проект. Попытался скомпилировать. Итог - пять ошибок, и все в winnt.h. Показывает сюда:
typedef union _FILE_SEGMENT_ELEMENT { PVOID64 Buffer; ULONGLONG Alignment; }FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
Пишет: H:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C2182: 'Buffer' : illegal use of type 'void' Снова исправляю:
Max_Gamedev, конечно спасибо за совет,но базовые знания у меня уже есть ... Ты бы лучше что нибудь по сути попроса ответил ... Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Среда, 09 Ноября 2011, 19:46
я эту тему создал не для того чтобы критику выслушивать,а для того чтобы люди помагали мне повышать свои навыки программирования,и находить допушенные мной ошибки ... Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Среда, 09 Ноября 2011, 19:51