Программирование игр для windows советы профессионала андре ламот скачать

Проблема. Книга Андрэ Ламот Графика и игры Решение и ответ на вопрос 97608
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
//Sunday - Main.cpp
 
#define WIN32_LEAN_AND_MEAN 
#define INITGUID 
 
#include <windows.h>
#include <time.h>
#include <ddraw.h>
 
 
// DEFINES ////////////////////////////////////////////////
 
#define WINDOW_CLASS_NAME "WINCLASS" 
#define WINDOW_TITLE      "Graphics Console"
#define WINDOW_WIDTH      800   
#define WINDOW_HEIGHT     600
 
#define WINDOW_BPP        16    // bitdepth of window (8,16,24,32)
                                // note: if windowed and not
                                // fullscreen then bitdepth must
                                // be same as system bitdepth
                                // also if 8-bit the a pallete
                                // is created and attached
 
#define WINDOWED_APP      0     // 0 not windowed, 1 windowed
 
#define MSG_ERROR 
                MessageBox(NULL, "ERROR", "MSG_ERROR", MB_OK)
 
#define _RGB16BIT565(r, g, b)
        ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))
 
#define _RGB32BIT(a, r, g, b)
                ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))
 
// PROTOTYPES /////////////////////////////////////////////
 
int Game_Init(void *parms=NULL);
int Game_Shutdown(void *parms=NULL);
int Game_Main(void *parms=NULL);
 
// GLOBALS ////////////////////////////////////////////////
 
LPDIRECTDRAW7 lpdd = NULL;
LPDIRECTDRAWSURFACE7 lpddsprimary = NULL;
LPDIRECTDRAWSURFACE7 lpddsback = NULL;
 
DDSURFACEDESC2 ddsd ;
 
 
HWND main_window_handle = NULL; // save the window handle
HINSTANCE main_instance = NULL; // save the instance
char buffer[256];               // used to print text
int window_closed;
 
 
// FUNCTIONS //////////////////////////////////////////////
 
void Plot16(int x, int y, int red, int green, int blue, UINT *buffer, int mempitch)
{
  buffer[x+y*(mempitch >> 1)] = _RGB16BIT565(red, green, blue);
}
void Plot32(int x, int y, int alpha, int red, int green, int blue,UINT *buffer, int mempitch)
{
    buffer[x+y*(mempitch >> 2)] = _RGB32BIT(alpha, red, green, blue);
}
int Game_Init(void *parms)
{
    if(FAILED(DirectDrawCreateEx(NULL, (void**)&lpdd, IID_IDirectDraw7, NULL)))
        return(0);
 
    if(FAILED(lpdd -> SetCooperativeLevel(main_window_handle, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
        return(0);
 
    if(FAILED(lpdd -> SetDisplayMode(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_BPP,0,0)))
        return(0);
    
    ZeroMemory(&ddsd, sizeof(ddsd));
    ddsd.dwSize     = sizeof(ddsd);
    ddsd.dwFlags        = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    ddsd.dwBackBufferCount      = 1;
    ddsd.ddsCaps.dwCaps     = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX |DDSCAPS_FLIP;
 
    if(FAILED(lpdd -> CreateSurface(&ddsd, &lpddsprimary, NULL)))
        return(0);
 
    ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
 
    if(FAILED(lpddsprimary -> GetAttachedSurface(&ddsd.ddsCaps, &lpddsback)))
        return(0);
    
    return(1);
}
int Game_Main(void *parms)
{
    if(window_closed)
        return(0);
 
    if(GetAsyncKeyState(VK_ESCAPE))
  {
        PostMessage(main_window_handle, WM_DESTROY,0,0);
        window_closed = 1;
  } 
    
    
    ZeroMemory(&ddsd, sizeof(ddsd));
    ddsd.dwSize = sizeof(ddsd);
 
    if(FAILED(lpddsprimary -> Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR |  DDLOCK_WAIT, NULL)))
        return(0);
 
    UCHAR *back_buffer = (UCHAR *)ddsd.lpSurface;
 
    if (ddsd.lPitch == WINDOW_WIDTH)
        memset(back_buffer, 0, WINDOW_WIDTH*WINDOW_HEIGHT);
    else
    {
        UCHAR *dest_ptr = back_buffer;
 
        for (int y=0; y<WINDOW_HEIGHT; y++)
        {
            memset(dest_ptr,0,WINDOW_WIDTH);
      dest_ptr+=ddsd.lPitch;
        }
    }
    for(int i=0; i<500; i++)
    {
        int x=rand()%WINDOW_WIDTH;
        int y=rand()%WINDOW_HEIGHT;
 
        back_buffer[x+y*ddsd.lPitch] = _RGB16BIT565(255, 255, 255);
    }
                     
    if(FAILED(lpddsprimary -> Unlock(NULL)))
        return(0);
 
    while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));
 
    Sleep(500);
 
    return(1);
}
int Game_Shutdown(void *parms)
{   
    if(lpddsback)
    {
        lpddsback -> Release();
        lpddsback = NULL;
    }
    if(lpddsprimary)
    {
        lpddsprimary -> Release();
        lpddsprimary = NULL;
    }
    if(lpdd)
    {
        lpdd -> Release();
        lpdd = NULL;
    }
 
    return(1);
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {   
    case WM_CREATE: 
        {
 
            return(0);
        } break;
   
    case WM_PAINT: 
        {
 
            return(0);
        } break;
 
    case WM_DESTROY: 
        { 
            PostQuitMessage(0);
            return(0);
        } break;
 
    default:break;
 
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}
// WINMAIN ////////////////////////////////////////////////
 
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,LPSTR lpcmdline, int nshowcmd)
{
    WNDCLASSEX winclass1;
    HWND hwnd;
    MSG msg;
    srand(1);
 
    ZeroMemory(&winclass1, sizeof(winclass1));
    winclass1.lpszClassName     = WINDOW_CLASS_NAME;
    winclass1.lpfnWndProc       = WindowProc;
    winclass1.cbSize        = sizeof(WNDCLASSEX);
    winclass1.hInstance     = hinstance;
    winclass1.hbrBackground     = (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass1.hCursor       = LoadCursor(NULL, IDC_ARROW);
    winclass1.hIcon     = LoadIcon(NULL, IDI_APPLICATION);
    winclass1.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
    winclass1.style     = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
 
    if(!RegisterClassEx(&winclass1))
        return(MSG_ERROR);
 
    if (!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME,    
WINDOW_TITLE, WS_POPUP | WS_VISIBLE,0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 
NULL, NULL, hinstance, NULL)))
        return(MSG_ERROR);
 
    main_window_handle = hwnd;
    main_instance      = hinstance;
    
    Game_Init();
 
    while(TRUE)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            if (msg.message == WM_QUIT)
                break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        Game_Main();
    }
    Game_Shutdown();
    return(msg.wParam);
}

Обновлено 23.06.2022

Просмотров 2018

Tricks of the Windows Game Programming Gurus Second Edition

Книга предназначена для читателей, интересующихся вопросами разработки игр в операционной системе Windows. В ней освещены разнообразные аспекты программирования игр — от азов программирования до серьезного рассмотрения различных компонентов DirectX, от простейших физических моделей до сложных вопросов искусственного интеллекта. Книга будет полезна как начинающим, так и профессиональным разработчикам игр для Windows, хотя определенные знания в области программирования (в частности, языка программирования C или C++), математики и физики существенно облегчат изучение материала.

Автор: Andre LaMothe

Скачать (PDF)

Видео

Делаю РАБОЧИЕ ИГРЫ в PowerPoint, MS Word (2048)Скачать

Делаю РАБОЧИЕ ИГРЫ в PowerPoint, MS Word (2048)

Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8Скачать

Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8

Как Сделать Игру Без ПрограммированияСкачать

Как Сделать Игру Без Программирования

С чего начать делать игры | Разработка для новичковСкачать

С чего начать делать игры | Разработка для новичков

Делаю игру на ОЧЕНЬ СТАРОМ ноутбукеСкачать

Делаю игру на ОЧЕНЬ СТАРОМ ноутбуке

Игра Gems Of War — PvP и новая неделя [Stream 7/2023]Скачать

Игра Gems Of War - PvP и новая неделя [Stream   7/2023]

КАК СДЕЛАТЬ ИГРУ НА C# + WinForms ЗА 30 МИНУТ? 👾 #1Скачать

КАК СДЕЛАТЬ ИГРУ НА C# + WinForms ЗА 30 МИНУТ? 👾 #1

ДУМ И ЗЕЛЬДА В ТАБЛИЦАХ! Игры в Microsoft ExcelСкачать

ДУМ И ЗЕЛЬДА В ТАБЛИЦАХ! Игры в Microsoft Excel

Программирование на Java: создание игры Змейка. Часть 1.Скачать

Программирование на Java: создание игры Змейка. Часть 1.

Игры, которые обучат вас программированиюСкачать

Игры, которые обучат вас программированию

5 популярных игр и их языки программированияСкачать

5 популярных игр и их языки программирования

Я пытался изучить программирование с нуля за 7 дней и вот что получилось в итогеСкачать

Я пытался изучить программирование с нуля за 7 дней и вот что получилось в итоге

Windows 18! Microsoft, что ты сделала??!!Скачать

Windows 18! Microsoft, что ты сделала??!!

Игры для программистов, о которых вы наверняка не слышали. GeekBrainsСкачать

Игры для программистов, о которых вы наверняка не слышали. GeekBrains

Как сделать Flappy Bird на С++Скачать

Как сделать Flappy Bird на С++

ТОП 5 ИГР, которые учат программированию | ИГРЫ ДЛЯ ПРОГРАММИСТОВСкачать

ТОП 5 ИГР, которые учат программированию | ИГРЫ ДЛЯ ПРОГРАММИСТОВ

Как научиться программировать с нуля играя в игры. Java, JavaScript, C++, C#, Python, PHP, RubyСкачать

Как научиться программировать с нуля играя в игры. Java, JavaScript, C++, C#, Python, PHP, Ruby

Разработка игры на Python | Pygame. Урок #1Скачать

Разработка игры на Python | Pygame. Урок #1

Учим Unity за 1 час! #От ПрофессионалаСкачать

Учим Unity за 1 час! #От Профессионала

#1

OFFLINE
 

Отправлено 25 Ноябрь 2007 — 09:15

Изображение

Название: Игры для Windows — секреты профессионала — программирование (Программирование трехмерных игр для Windows)
Автор: Андре Ламот
Издательство:
Год издания:
Страниц: 1424
Формат: PDF
Размер трансфера: 84 Мб
Атрибуты:
Имя файла: Андре Ламот Игры для Windows — секреты профессионала — программирование.pdf

Коротко о:
Данная книга представляет собой продолжение книги Андре Ламота «Программирование игр для Windows. Советы профессионала» и посвящена созданию трехмерных игр. В книге освещены различные аспекты разработки трехмерных игр, однако основное внимание уделяется вопросам программирования трехмерных игр — в частности, вопросам представления трехмерных объектов, их визуализации с учетом свойств материала объектов, освещения, перспективы, а также таким специфическим вопросам трехмерной визуализации, как создание различных визуальных спецэффектов и т.п. В книге также рассматриваются многие сопутствующие вопросы — создание и применение звуковых эффектов и музыкального сопровождения, использование различных форматов файлов и соответствующего инструментария.

Книга написана выдающимся специалистом в области программирования игр с многолетним стажем, и полезна как начинающим, так и профессиональным разработчикам игр для Windows. Однако следует учесть, что она рассчитана в первую очередь на опытного специалиста, владеющего языком программирования C или C++, а также имеющего определенную математическую подготовку

Ссылка для загрузки:
Андре Ламот Игры для Windows — секреты профессионала — программирование.pdf 84 Mb

  • Наверх

Понравилась статья? Поделить с друзьями:
  • Программа чтобы убрать пароль при входе в windows 7
  • Программирование драйверов для windows солдатов pdf
  • Программа чтобы разделить жесткий диск для windows 10
  • Программирование для windows с использованием mfc
  • Программа чтобы разбить жесткий диск на windows 10