亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? demo9_4_16b.cpp

?? 一本外國人寫的關(guān)于3D游戲編程的書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// test if missile is alive
for (int index=0; index<32; index++)
{
if (missile_state[index]==1)
   {
   // lock secondary buffer
   DDraw_Lock_Back_Surface();

   // draw the missile in green
   Draw_Clip_Line16(missile_x[index], missile_y[index], 
                    missile_x[index], missile_y[index]+6,
                    RGB16Bit(255,255,255),back_buffer, back_lpitch);

   // unlock surface
   DDraw_Unlock_Back_Surface();

   } // end if

} // end for

// return failure
return(0);

} // end Draw_Missile

///////////////////////////////////////////////////////////

// GAME PROGRAMMING CONSOLE FUNCTIONS ////////////////

int Game_Init(void *parms,  int num_parms)
{
// this function is where you do all the initialization 
// for your game

int index;         // looping var
char filename[80]; // used to build up files names

// start up DirectDraw (replace the parms as you desire)
DDraw_Init(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_BPP, WINDOWED_APP);

// joystick creation section ////////////////////////////////

// first create the direct input object
if (DirectInput8Create(main_instance,DIRECTINPUT_VERSION, IID_IDirectInput8, (void **)&lpdi,NULL)!=DI_OK)
   return(0);

// first find the fucking GUID of your particular joystick
lpdi->EnumDevices(DI8DEVCLASS_GAMECTRL, 
                  DI_Enum_Joysticks, 
                  &joystickGUID, 
                  DIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK); 

if (lpdi->CreateDevice(joystickGUID, &lpdijoy, NULL)!=DI_OK)
   return(0);

// set cooperation level
if (lpdijoy->SetCooperativeLevel(main_window_handle, 
	                 DISCL_EXCLUSIVE | DISCL_BACKGROUND)!=DI_OK)
   return(0);

// set data format
if (lpdijoy->SetDataFormat(&c_dfDIJoystick2)!=DI_OK)
   return(0);

// set the range of the joystick
DIPROPRANGE joy_axis_range;

// first x axis
joy_axis_range.lMin = -32;
joy_axis_range.lMax = 32;

joy_axis_range.diph.dwSize       = sizeof(DIPROPRANGE); 
joy_axis_range.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
joy_axis_range.diph.dwObj        = DIJOFS_X;
joy_axis_range.diph.dwHow        = DIPH_BYOFFSET;

lpdijoy->SetProperty(DIPROP_RANGE,&joy_axis_range.diph);

// now y-axis
joy_axis_range.lMin = -32;
joy_axis_range.lMax = 32;

joy_axis_range.diph.dwSize       = sizeof(DIPROPRANGE); 
joy_axis_range.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
joy_axis_range.diph.dwObj        = DIJOFS_Y;
joy_axis_range.diph.dwHow        = DIPH_BYOFFSET;

lpdijoy->SetProperty(DIPROP_RANGE,&joy_axis_range.diph);

// and now the dead band

DIPROPDWORD dead_band; // here's our property word

dead_band.diph.dwSize       = sizeof(dead_band);
dead_band.diph.dwHeaderSize = sizeof(dead_band.diph);
dead_band.diph.dwObj        = DIJOFS_X;
dead_band.diph.dwHow        = DIPH_BYOFFSET;

// 4 will be used on both sides of the range +/-
dead_band.dwData            = 1000;

// finally set the property
lpdijoy->SetProperty(DIPROP_DEADZONE,&dead_band.diph);

dead_band.diph.dwSize       = sizeof(dead_band);
dead_band.diph.dwHeaderSize = sizeof(dead_band.diph);
dead_band.diph.dwObj        = DIJOFS_Y;
dead_band.diph.dwHow        = DIPH_BYOFFSET;

// 4 will be used on both sides of the range +/-
dead_band.dwData            = 1000;

// finally set the property
lpdijoy->SetProperty(DIPROP_DEADZONE,&dead_band.diph);


// acquire the joystick
if (lpdijoy->Acquire()!=DI_OK)
   return(0);


// force feedback setup
DWORD      dwAxes[2] = { DIJOFS_X, DIJOFS_Y };
LONG       lDirection[2] = { 0, 0 };


DIPERIODIC diPeriodic;      // type-specific parameters
DIENVELOPE diEnvelope;      // envelope
DIEFFECT   diEffect;        // general parameters

// setup the periodic structure
diPeriodic.dwMagnitude = DI_FFNOMINALMAX; 
diPeriodic.lOffset = 0; 
diPeriodic.dwPhase = 0; 
diPeriodic.dwPeriod = (DWORD) (0.05 * DI_SECONDS); 

// set the modulation envelope 
diEnvelope.dwSize = sizeof(DIENVELOPE);
diEnvelope.dwAttackLevel = 0; 
diEnvelope.dwAttackTime = (DWORD) (0.01 * DI_SECONDS); 
diEnvelope.dwFadeLevel = 0; 
diEnvelope.dwFadeTime = (DWORD) (3.0 * DI_SECONDS); 
 
// set up the effect structure itself
diEffect.dwSize = sizeof(DIEFFECT); 
diEffect.dwFlags = DIEFF_POLAR | DIEFF_OBJECTOFFSETS; 
diEffect.dwDuration = (DWORD) INFINITE; // (1 * DI_SECONDS);
 
// set up details of effect
diEffect.dwSamplePeriod = 0;               // = default 
diEffect.dwGain = DI_FFNOMINALMAX;         // no scaling
diEffect.dwTriggerButton = DIJOFS_BUTTON0; // connect effect to trigger button
diEffect.dwTriggerRepeatInterval = 0;      
diEffect.cAxes = 2; 
diEffect.rgdwAxes = dwAxes; 
diEffect.rglDirection = &lDirection[0]; 
diEffect.lpEnvelope = &diEnvelope; 
diEffect.cbTypeSpecificParams = sizeof(diPeriodic);
diEffect.lpvTypeSpecificParams = &diPeriodic;  
 
// create the effect and get the interface to it 
lpdijoy->CreateEffect(GUID_Square,  // standard GUID 
                     &diEffect,      // where the data is
                     &lpdieffect,    // where to put interface pointer
                     NULL);          // no aggregation


///////////////////////////////////////////////////////////

// load the background
Load_Bitmap_File(&bitmap16bit, "MUSH_24.BMP");

// load in the four frames of the mushroom
for (index=0; index<4; index++)
    {
    // create mushroom bitmaps
    Create_Bitmap(&mushrooms[index],0,0,32,32,16);
    Load_Image_Bitmap16(&mushrooms[index],&bitmap16bit,index,0,BITMAP_EXTRACT_MODE_CELL);  
    } // end for index

// now create the bug blaster bob
Create_BOB(&blaster,0,0,32,32,3,
           BOB_ATTR_VISIBLE | BOB_ATTR_MULTI_ANIM | BOB_ATTR_ANIM_ONE_SHOT,
           DDSCAPS_SYSTEMMEMORY,0,16);

// load in the four frames of the mushroom
for (index=0; index<3; index++)
     Load_Frame_BOB16(&blaster,&bitmap16bit,index,index,1,BITMAP_EXTRACT_MODE_CELL);  

// unload the bitmap file
Unload_Bitmap_File(&bitmap16bit);

// set the animation sequences for bug blaster
Load_Animation_BOB(&blaster,0,5,blaster_anim);

// set up stating state of bug blaster
Set_Pos_BOB(&blaster,320, 400);
Set_Anim_Speed_BOB(&blaster,3);

// create mushroom playfield bitmap
Create_Bitmap(&playfield,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,16);
playfield.attr |= BITMAP_ATTR_LOADED;

// fill in the background
Load_Bitmap_File(&bitmap16bit, "GRASS_24.BMP");

// load the grass bitmap image
Load_Image_Bitmap16(&playfield,&bitmap16bit,0,0,BITMAP_EXTRACT_MODE_ABS);
Unload_Bitmap_File(&bitmap16bit);

// seed random number generator
srand(Start_Clock());

// create the random mushroom patch
for (index=0; index<50; index++)
    {
    // select a mushroom
    int mush = rand()%4;

    // set mushroom to random position
    mushrooms[mush].x = rand()%(SCREEN_WIDTH-32);
    mushrooms[mush].y = rand()%(SCREEN_HEIGHT-128);

    // now draw the mushroom into playfield
    Draw_Bitmap16(&mushrooms[mush], playfield.buffer, playfield.width*2,1);

    } // end for

// hide the mouse
if (!WINDOWED_APP)
   ShowCursor(FALSE);

// return success
return(1);

} // end Game_Init

///////////////////////////////////////////////////////////

int Game_Shutdown(void *parms,  int num_parms)
{
// this function is where you shutdown your game and
// release all resources that you allocated

// kill the bug blaster
Destroy_BOB(&blaster);

// kill the mushroom maker
for (int index=0; index<4; index++)
    Destroy_Bitmap(&mushrooms[index]);

// kill the playfield bitmap
Destroy_Bitmap(&playfield);

// release joystick
lpdijoy->Unacquire();
lpdijoy->Release();
lpdi->Release();

// shutdonw directdraw
DDraw_Shutdown();

// return success
return(1);
} // end Game_Shutdown

///////////////////////////////////////////////////////////

int Game_Main(void *parms, int num_parms)
{
// this is the workhorse of your game it will be called
// continuously in real-time this is like main() in C
// all the calls for you game go here!

int          index;             // looping var
int          dx,dy;             // general deltas used in collision detection


// check of user is trying to exit
if (KEY_DOWN(VK_ESCAPE) || KEY_DOWN(VK_SPACE))
    PostMessage(main_window_handle, WM_DESTROY,0,0);

// start the timing clock
Start_Clock();

// clear the drawing surface
DDraw_Fill_Surface(lpddsback, 0);

// get joystick data
lpdijoy->Poll(); // this is needed for joysticks only
lpdijoy->GetDeviceState(sizeof(DIJOYSTATE2), (LPVOID)&joy_state);

// lock the back buffer
DDraw_Lock_Back_Surface();

// draw the background reactor image
Draw_Bitmap16(&playfield, back_buffer, back_lpitch, 0);

// unlock the back buffer
DDraw_Unlock_Back_Surface();

// is the player moving?
blaster.x+=joy_state.lX;
blaster.y+=joy_state.lY;

// test bounds
if (blaster.x > SCREEN_WIDTH-32)
    blaster.x = SCREEN_WIDTH-32;
else
if (blaster.x < 0)
    blaster.x = 0;

if (blaster.y > SCREEN_HEIGHT-32)
    blaster.y = SCREEN_HEIGHT-32;
else
if (blaster.y < SCREEN_HEIGHT-128)
    blaster.y = SCREEN_HEIGHT-128;

// is player firing?
if (joy_state.rgbButtons[0])
   Start_Missile();

// move and draw missle
Move_Missile();
Draw_Missile();

// is it time to blink eyes
if ((rand()%100)==50)
   Set_Animation_BOB(&blaster,0);

// draw blaster
Animate_BOB(&blaster);
Draw_BOB16(&blaster,lpddsback);

// draw some text
Draw_Text_GDI("(16-Bit Version) Let's Rock!!!",0,0,RGB(255,255,255),lpddsback);

// display joystick and buttons 0-7
sprintf(buffer,"Joystick Stats: X-Axis=%d, Y-Axis=%d, buttons(%d,%d,%d,%d,%d,%d,%d,%d)",
                                                                      joy_state.lX,joy_state.lY,
                                                                      joy_state.rgbButtons[0],
                                                                      joy_state.rgbButtons[1],
                                                                      joy_state.rgbButtons[2],
                                                                      joy_state.rgbButtons[3],
                                                                      joy_state.rgbButtons[4],
                                                                      joy_state.rgbButtons[5],
                                                                      joy_state.rgbButtons[6],
                                                                      joy_state.rgbButtons[7]);

Draw_Text_GDI(buffer,0,SCREEN_HEIGHT-20,RGB(255,255,50),lpddsback);

// print out name of joystick
sprintf(buffer, "Joystick Name & Vendor: %s",joyname);
Draw_Text_GDI(buffer,0,SCREEN_HEIGHT-40,RGB(255,255,50),lpddsback);


// flip the surfaces
DDraw_Flip();

// sync to 30 fps
Wait_Clock(30);

// return success
return(1);

} // end Game_Main

//////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合久久久久中文一区二区| 日韩欧美视频一区| 91精品国产欧美日韩| 久久久国产午夜精品| 亚洲制服欧美中文字幕中文字幕| 麻豆成人91精品二区三区| 成人免费视频网站在线观看| 555夜色666亚洲国产免| 最新欧美精品一区二区三区| 日韩电影在线一区| 99久久精品免费看国产免费软件| 欧美电视剧免费全集观看| 一区二区三区四区国产精品| 国产成人在线免费观看| 日韩一区二区三区av| 一个色在线综合| av高清久久久| 久久久久久免费毛片精品| 奇米精品一区二区三区在线观看 | 欧美日韩黄色一区二区| 国产精品狼人久久影院观看方式| 免费成人在线观看视频| 欧美精品自拍偷拍动漫精品| 一区二区三区在线观看欧美| av资源网一区| 国产精品美女久久久久久2018 | 国产精品99久久久久久久女警 | 久久99精品国产麻豆不卡| 欧美日韩国产在线观看| 一区二区三区欧美亚洲| 91色在线porny| 日韩毛片精品高清免费| 91丨porny丨在线| 亚洲视频免费观看| 91在线码无精品| 亚洲日本电影在线| 91欧美激情一区二区三区成人| 中文字幕av免费专区久久| 大白屁股一区二区视频| 国产亚洲午夜高清国产拍精品| 国产精品中文字幕一区二区三区| 精品欧美久久久| 国产一区二区三区日韩| 国产亚洲欧美激情| 国产99久久久国产精品免费看| 国产午夜亚洲精品午夜鲁丝片 | 欧美婷婷六月丁香综合色| 亚洲一区二区四区蜜桃| 9191成人精品久久| 美女国产一区二区| 久久夜色精品一区| 国产成人99久久亚洲综合精品| 国产精品久久免费看| 91亚洲精华国产精华精华液| 夜夜嗨av一区二区三区中文字幕| 欧美日韩一区二区在线视频| 日本中文字幕一区| 26uuu欧美| av电影在线观看一区| 一个色综合网站| 欧美成人精品3d动漫h| 高清beeg欧美| 亚洲精品成a人| 日韩一区二区三区在线观看| 成人教育av在线| 亚洲成国产人片在线观看| 日韩精品专区在线| 成人黄色软件下载| 午夜在线成人av| 国产午夜亚洲精品理论片色戒| 色婷婷综合久久久中文一区二区| 日日摸夜夜添夜夜添亚洲女人| 精品国产91洋老外米糕| 99久久精品国产导航| 美女高潮久久久| 亚洲视频电影在线| 精品国内二区三区| 91欧美一区二区| 狠狠色狠狠色综合系列| 一区二区三区四区av| 欧美成人免费网站| 欧美日韩亚洲综合一区| 国产99精品在线观看| 日韩av午夜在线观看| 亚洲美女淫视频| 国产日韩欧美综合一区| 91精品国产欧美日韩| 色诱视频网站一区| 国产精品羞羞答答xxdd| 日韩精品一卡二卡三卡四卡无卡| 日韩一区日韩二区| 精品福利一二区| 91精品国产手机| 色偷偷成人一区二区三区91| 国产91精品一区二区麻豆亚洲| 日韩专区一卡二卡| 一区二区三区欧美日韩| 中文字幕av在线一区二区三区| 欧美大片顶级少妇| 欧美高清视频不卡网| 91成人国产精品| 99精品一区二区三区| 国产激情视频一区二区在线观看| 爽好多水快深点欧美视频| 亚洲一区二区3| 亚洲天堂2014| 亚洲欧洲国产日韩| 欧美激情在线看| 国产女主播一区| 久久综合av免费| 欧美成人女星排行榜| 日韩欧美国产wwwww| 日韩欧美国产一二三区| 欧美一二三区在线观看| 欧美一区二区三区影视| 91精品视频网| 91精品国产一区二区人妖| 欧美一区二区视频在线观看| 777精品伊人久久久久大香线蕉| 精品视频在线免费看| 精品污污网站免费看| 欧美片网站yy| 3d成人动漫网站| 91精品国产高清一区二区三区| 欧美精品乱码久久久久久| 欧美美女一区二区| 欧美日韩国产经典色站一区二区三区| 欧洲视频一区二区| 在线成人午夜影院| 91精品国产欧美一区二区| 日韩女优制服丝袜电影| 久久久久国产精品免费免费搜索| 国产欧美日韩在线| 中文字幕在线不卡国产视频| 自拍偷拍亚洲综合| 亚洲最色的网站| 美女脱光内衣内裤视频久久网站| 欧美aa在线视频| 国产黄人亚洲片| 97精品国产露脸对白| 欧美特级限制片免费在线观看| 欧美一区二区视频网站| 久久久亚洲精品石原莉奈| 中文字幕不卡在线观看| 亚洲电影视频在线| 久久精品99国产精品日本| 国产麻豆欧美日韩一区| 色综合天天综合狠狠| 在线成人免费视频| 国产日韩三级在线| 亚洲在线视频网站| 精品在线一区二区| 一本久久a久久免费精品不卡| 欧美日韩一区二区三区高清| 26uuu欧美| 亚洲成人免费观看| 国产真实乱偷精品视频免| 一本久道中文字幕精品亚洲嫩| 欧美一级黄色片| 亚洲免费av观看| 国产呦萝稀缺另类资源| 色偷偷成人一区二区三区91| 日韩免费在线观看| 亚洲乱码国产乱码精品精小说| 日本美女一区二区三区视频| 成人在线综合网| 欧美一区二区三区在线观看视频| 中文字幕人成不卡一区| 日韩中文字幕不卡| 99精品热视频| 精品国产伦一区二区三区观看方式| 亚洲免费av观看| 国产91精品在线观看| 欧美日韩国产首页| 国产精品免费视频网站| 麻豆精品一二三| 欧美日韩一二三| 亚洲人成人一区二区在线观看| 久久国产精品99久久人人澡| 欧美日韩高清在线播放| 成人免费小视频| 国产麻豆视频精品| 精品国偷自产国产一区| 午夜激情一区二区| 在线亚洲免费视频| 日本一区二区高清| 国产最新精品免费| 欧美一级精品在线| 日韩成人av影视| 欧美日韩美女一区二区| 一区二区三区四区不卡在线 | 国产精品小仙女| 精品乱码亚洲一区二区不卡| 午夜视频在线观看一区二区| 色菇凉天天综合网| 日韩美女视频19| 日本精品裸体写真集在线观看 | 色综合天天在线| 国产精品国产精品国产专区不蜜 | 久久精品国产久精国产爱|