⑴ 《3d游戲編程大師技巧》pdf下載在線閱讀全文,求百度網盤雲資源
《3d游戲編程大師技巧》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/12YS0XR9DRoxOFKi1ZyOr2g
⑵ 學vc++游戲編程需什麼基礎
首先你要會,windows下程序的運行原理,會windows窗口應用程序設計,寫windows窗口應用程序:
a最常用的就是MFC編程
b或用platform sdk (也就是windows api)
MFC是對windows api的類封裝。
然後你就可以寫掃雷,五子棋這樣的程序了。
如果你想寫那種網游里的效果。那就路漫漫了。
找本directX的書看看吧。用opengl也一樣,會了這個,不難會那個。
openGL,還是directX了,兩個函數庫直接控制顯卡,
⑶ 誰有中文ActionScript 3.0游戲編程(第2版)的完整pdf,有的請發下,謝了!
我有這個,等等給你
⑷ VC++游戲編程需要什麼知識
伺服器端需要winsock知識,這本含做橋不錯,我看的
《VC++網路通信程胡埋序開發指南》機械談猛工業出版社
其他不用了,演算法方面可以,面向對象的東西熟就行
客戶端要學direct X ,圖形引擎
⑸ 《游戲編程模式》pdf下載在線閱讀全文,求百度網盤雲資源
《Game Programming Patterns 游戲編程模式》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1iYLp5aL8PsvyOwrUHM37ug
⑹ 《C游戲編程從入門到精通》pdf下載在線閱讀全文,求百度網盤雲資源
《C游戲編程從入門到精通》(浦濱)電子書網盤下載免費在線閱讀
鏈接:
書名:C游戲編程從入門到精通
作者:浦濱
出版社:北希電腦出版社
出版年份:2002-5-1
頁數:408
⑺ 求vc中游戲編程的詳細步驟
#include "CDDraw.h"
typedef struct _DISPLAYMODE {
DDSURFACEDESC2 * pddsdMode;
DWORD dwNumMode;
}DISPLAYMODE;
DISPLAYMODE dmModes;
static HRESULT WINAPI ModeEnumRecord( DDSURFACEDESC2 * pNewMode,
VOID * pRecordInfo );
static BOOL WINAPI DDisplayEnumerate( GUID * pGUID,
LPSTR ,
LPSTR ,
LPVOID , HMONITOR );
/****************************************
* 函數名: CDDraw(...)
* 功能: 構造函數
* 版權所有 mochsh, 2004
*****************************************/
CDDraw::CDDraw()
{
//初始化變數
hWnd = NULL;
bFullScr = TRUE;
ScreenW = 640;
ScreenH = 480;
ScreenC = 16;
lpDD = NULL;
lpDDSPrimary = NULL;
lpDDSBack = NULL;
}
/****************************************
* 函數名: ~CDDraw()
* 功能: 析構函數
* 版權所有 mochsh, 2003
*****************************************/
CDDraw::~CDDraw()
{
if(lpDD!=NULL){
if(lpDDSBack!=NULL){
lpDDSBack->Release();
lpDDSBack = NULL;
}
if(lpDDSPrimary!=NULL){
lpDDSPrimary->Release();
lpDDSPrimary = NULL;
}
lpDD->Release();
lpDD = NULL;
}
}
/**************************************************
* 函數名: InitDDraw(...)
* 功能: 初始化DDraw,並且創建主表面和翻轉緩沖表面
* 版權所有 mochsh, 2003
***************************************************/
BOOL CDDraw::InitDDraw(HWND hWd,
BOOL bFScr,
DWORD ScrW,DWORD ScrH,
DWORD BitCount )
{
//--------------------------按給出的條件初始化變數
hWnd=hWd;
bFullScr=bFScr;
if(bFScr){//全屏模式
if(ScrW <= 640) { ScreenW = 640; ScreenH = 480; }
else if(ScrW <= 800){ ScreenW = 800; ScreenH = 600; }
else if(ScrW > 800) { ScreenW = 1024; ScreenH = 768; }
else {ScreenW=800; ScreenH = 600;}
if(BitCount<=8) ScreenC = 8;
else if(BitCount<=16)ScreenC = 16;
else if(BitCount<=24)ScreenC = 24;
else if(BitCount<=32)ScreenC = 32;
else ScreenC=16;
//檢查模式是否有效
CheckDisplayMode();
}
else{//窗口模式
ScreenW=ScrW;
ScreenH=ScrH;
}
//--------------------------初始化DirectDraw環境
HRESULT ddrval;
//創建DirectDraw對象
ddrval = DirectDrawCreateEx(NULL,(void **) &lpDD,IID_IDirectDraw7,NULL);
if( FAILED(ddrval) ) {
//創建DirectDraw對象出錯時進到這里來
//在這里可以記錄創建DirectDraw對象的出錯信息
return FALSE;
}
//******全屏模式***********//
if( bFullScr ){
//設置協作等級
ddrval = lpDD->SetCooperativeLevel( hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT );
if( FAILED( ddrval )){
//設置協作等級出錯時進到這里來
//在這里可以記錄設置協作等級的出錯信息
return FALSE;
}
//設置顯示模式
ddrval = lpDD->SetDisplayMode( ScreenW,ScreenH,ScreenC,NULL,NULL);
if( FAILED( ddrval ) ){
//設置顯示模式出錯時進到這里來
//在這里可以記錄設置顯示模式的出錯信息
return FALSE;
}
//創建主表面
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd,sizeof(ddsd));
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
DDSCAPS_FLIP |
DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );
if (ddrval!=DD_OK) {
//創建主表面出錯時進到這里來
//在這里可以記錄創建主表面的出錯信息
return FALSE;
}
//創建後台緩沖表面
DDSCAPS2 ddscaps;
ZeroMemory(&ddscaps,sizeof(ddscaps));
ddscaps.dwCaps=DDSCAPS_BACKBUFFER;
ddrval=lpDDSPrimary->GetAttachedSurface(&ddscaps,&lpDDSBack);
if (ddrval!=DD_OK) {
//獲取後台緩沖表面出錯時進到這里來
//在這里可以記錄後台緩沖表面的出錯信息
return FALSE;
}
return TRUE;
}
//******窗口模式***********//
else{
//設置協作等級
ddrval=(HRESULT)lpDD->SetCooperativeLevel( hWnd, DDSCL_NORMAL );
//創建主表面
DDSURFACEDESC2 ddsd;
ZeroMemory( &ddsd, sizeof(ddsd) );
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
//創建主表面,並取得指向主表面的指針lpDDSPrimary
ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );
if( FAILED( ddrval )){
//創建主表面出錯時進到這里來
//在這里可以記錄創建主表面的出錯信息
return FALSE;
}
//使用裁剪器
UseClipper();
//創建後台緩沖表面
//:::::::ddsd前面已經聲明
ZeroMemory(&ddsd,sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT |DDSD_WIDTH;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
ddsd.dwWidth = ScreenW;//寬的解析度
ddsd.dwHeight = ScreenH;//高的解析度
//創建一後台緩沖表面
ddrval = lpDD->CreateSurface( &ddsd, &lpDDSBack, NULL );
if( FAILED( ddrval )){
//創建後台緩沖表面出錯時進到這里來
//在這里可以記錄創建後台緩沖表面的出錯信息
return FALSE;
}
}
return TRUE;
//--------------------------初始化DirectDraw環境完成
}
/**************************************************
* 函數名: Flip(...)
* 功能: 翻轉表面==>顯示
* 版權所有 mochsh, 2003
***************************************************/
void CDDraw::Flip( LPRECT pRectWin )
{
HRESULT ddrval=1;
if( lpDDSPrimary && lpDDSBack )
{
//檢查表面是否丟失
if (lpDDSPrimary->IsLost()==DDERR_SURFACELOST)
lpDDSPrimary->Restore();
if (lpDDSBack->IsLost()==DDERR_SURFACELOST)
lpDDSBack->Restore();
do{
if(bFullScr==1)
ddrval = lpDDSPrimary->Flip( NULL, DDFLIP_WAIT );
else
ddrval = lpDDSPrimary->Blt( pRectWin,lpDDSBack,NULL,DDBLT_WAIT,NULL);
//翻轉表面後的信息檢測
if( ddrval == DD_OK )
break;
else if( ddrval == DDERR_SURFACELOST ){
if( FAILED(lpDDSBack->Restore()) )
break;
if( FAILED(lpDDSPrimary->Restore()) )
break;
}
else if( ddrval != DDERR_WASSTILLDRAWING )
break;
}while( 1 );
}
}
/**********************************************
* 函數名: UseClipper(...)
* 功能: 創建一個裁剪器,並將它附於主表面
* 版權所有 mochsh, 2003
***********************************************/
HRESULT CDDraw::UseClipper( void )
{
HRESULT ddrval;
LPDIRECTDRAWCLIPPER lpClipper = NULL;
//創建一個剪裁器對象
ddrval = lpDD->CreateClipper(0, &lpClipper, NULL);
if ( ddrval != DD_OK){
//調用CreateClipper創建剪裁器對象出錯進到這來
//在這里可以記錄出錯信息
return ddrval;
}
//將裁剪器設置為hWnd指向的窗口的客戶區的范圍
ddrval = lpClipper->SetHWnd(0, hWnd);
if ( ddrval != DD_OK){
//調用SetHWnd設置窗口句柄出錯進到這來
//在這里可以記錄出錯信息
return ddrval;
}
//將裁剪器附於主表面
ddrval = lpDDSPrimary->SetClipper(lpClipper);
if ( ddrval != DD_OK){
//將裁剪器附於主表面出錯進到這來
//在這里可以記錄出錯信息
return ddrval;
}
//主表面已經自動增加了裁剪器的索引值,所以應將它釋放
if( lpClipper != NULL ) {
lpClipper -> Release();
lpClipper = NULL;
}
return DD_OK;
}
/**********************************************
* 函數名: LoadBMPSurface(...)
* 功能: 將BitmapFile指定的點陣圖
* 格式圖像載入剛剛Surf指向的表面
* 版權所有 mochsh, 2003
***********************************************/
BOOL CDDraw::LoadBMPSurface(LPDIRECTDRAWSURFACE7 &lpSurf, //要載入圖像的表面指針
LPCSTR BitmapFile )//源圖像的路徑
{
HDC hdcImage;
HDC hdc;
HBITMAP hbm;
BITMAP bm;
HRESULT ddrval;
if( lpSurf == NULL )
return FALSE;
// 將點陣圖作為文件來讀取
hbm = (HBITMAP)LoadImage(NULL,
BitmapFile,
IMAGE_BITMAP,
0, 0,
LR_LOADFROMFILE |
LR_CREATEDIBSECTION);
if (hbm == NULL){
//載入圖像失敗時進到這里來
//在這里可以記錄載入圖像失敗的信息
return FALSE;
}
//函數功能:創建一個與指定設備兼容的內存設備上下文環境(Device Context)
//創建一個與應用程序的當前顯示器兼容的內存設備上下文環境
hdcImage = CreateCompatibleDC(NULL);
if (!hdcImage){
//創建設備上下文出錯
return FALSE;
}
//選擇點陣圖對象到剛剛創建的內存設備上下文環境(DC)
SelectObject(hdcImage, hbm);
//獲取點陣圖寬與高
GetObject(hbm, sizeof(bm), &bm);
//獲取表面的寬與高
DDSURFACEDESC2 ddsd;
ddsd.dwSize = sizeof(ddsd);
lpSurf->GetSurfaceDesc(&ddsd);
if( BitmapFile!=NULL )
{
if ((ddrval = lpSurf->GetDC(&hdc)) == DD_OK)
{
//將源點陣圖復制到表面,可以進行拉伸或收縮
StretchBlt( hdc,
0, 0, ddsd.dwWidth, ddsd.dwHeight,
hdcImage,
0, 0, bm.bmWidth, bm.bmHeight,
SRCCOPY);
lpSurf->ReleaseDC(hdc);
}
}
DeleteDC(hdcImage);
if( ddrval != DD_OK ) {
//復制矩形塊失敗
return FALSE;
}
return TRUE;
}
return hr;
}
初始化設備,放不下,沒給全。
⑻ 求本VC++游戲編程方面的書
《windows游戲編程大師技巧》 是一本很不錯的書,講了很多游戲設計基礎知識和引擎知識,用的是DIRECTX DRAW,很多游戲程序員都是看這本書入得門,89元
帶光碟,你可以在網上買到。
⑼ 《C游戲編程從入門到精通》pdf下載在線閱讀,求百度網盤雲資源
《C游戲編程從入門到精通》浦濱電子書網盤下載免費在線閱讀
鏈接:
書名:C游戲編程從入門到精通
作者名:浦濱
出版社:北希電腦出版社
出版年份:2002-5-1
頁數:408
內容介紹:
本書以C語言游戲編程入門,以102個實例,近200個函數較為系統地介紹了C基於游戲編程與開發的力法與技巧,內容豐富並相互包容,相互滲透。以實際的基於不同平台的游戲製作為背景,知識闡述與實際案例結合,深入淺出,具體、直觀、全面,可操作性強;是一本難得的集入門、深入到精通C游線編程的綜合書籍。
⑽ 誰有《Visual C#經典游戲編程開發》的電子書啊,傳給我吧,感激不盡!!!
少年c#最多能開發游戲前台,要麼學c++,as3,java後台,objective-c開發游戲