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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? demo12_8_16b.cpp

?? 一本外國人寫的關于3D游戲編程的書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
                 back_buffer, back_lpitch); // video buffer and memory pitch

   Draw_Pixel16(path[index].x, path[index].y, RGB16Bit(255,255,255), back_buffer, back_lpitch);
   Draw_Pixel16(path[index].x+1, path[index].y, RGB16Bit(255,255,255), back_buffer, back_lpitch);
   Draw_Pixel16(path[index].x, path[index].y+1, RGB16Bit(255,255,255), back_buffer, back_lpitch);
   Draw_Pixel16(path[index].x+1, path[index].y+1, RGB16Bit(255,255,255), back_buffer, back_lpitch);

    } // end for index

// lock back surface
DDraw_Unlock_Back_Surface();

} // end Draw_Waypoints

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

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

int index; // looping variable

// initialize directdraw, very important that in the call
// to setcooperativelevel that the flag DDSCL_MULTITHREADED is used
// which increases the response of directX graphics to
// take the global critical section more frequently
DDraw_Init(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_BPP, WINDOWED_APP);

// load background image
Load_Bitmap_File(&bitmap16bit, "RACETRACK24.BMP");
Create_Bitmap(&background_bmp,0,0,640,480,16);
Load_Image_Bitmap16(&background_bmp, &bitmap16bit,0,0,BITMAP_EXTRACT_MODE_ABS);
Unload_Bitmap_File(&bitmap16bit);

// load the car bitmaps
Load_Bitmap_File(&bitmap16bit, "SIMIMG24.BMP");

// create car bob
Create_BOB(&car,334,64, 16,16, 16, BOB_ATTR_MULTI_FRAME | BOB_ATTR_VISIBLE, DDSCAPS_SYSTEMMEMORY,0,16);

// set floating position and direction to west
car.varsF[0] = car.x;
car.varsF[1] = car.y;
car.curr_frame = 12;

// load the car in 
for (index=0; index < 16; index++)
    Load_Frame_BOB16(&car, &bitmap16bit, index, index, 3, BITMAP_EXTRACT_MODE_CELL);

// unload car
Unload_Bitmap_File(&bitmap16bit);

// initialize directinput
DInput_Init();

// acquire the keyboard only
DInput_Init_Keyboard();

// initilize DirectSound
DSound_Init();

// load background sounds
wind_sound_id = DSound_Load_WAV("WIND.WAV");
car_sound_id = DSound_Load_WAV("CARIDLE.WAV");

// start the sounds
DSound_Play(wind_sound_id, DSBPLAY_LOOPING);
DSound_Play(car_sound_id, DSBPLAY_LOOPING);

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


// return success
return(1);

} // end Game_Init

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

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

// shut everything down

// kill all the bobs
Destroy_BOB(&car);

// shutdown directdraw last
DDraw_Shutdown();

// now directsound
DSound_Stop_All_Sounds();
DSound_Shutdown();

// shut down directinput
DInput_Shutdown();

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

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

int Game_Main(void *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

static float speed = 0; // speed of car

static int curr_waypoint = -1,
           test_waypoint;

static int display_debounce = 0; // used to debounce keyboard

int ai_on = 1; // used to enable display ai based on user taking controls

// start the timing clock
Start_Clock();

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

// lock back buffer and copy background into it
DDraw_Lock_Back_Surface();

// draw background
Draw_Bitmap16(&background_bmp, back_buffer, back_lpitch,0);

// unlock back surface
DDraw_Unlock_Back_Surface();

// draw the waypoints
if (vector_display_on==1)
   Draw_Waypoints();

// read keyboard
DInput_Read_Keyboard();

// is user toggling vector display
if (keyboard_state[DIK_D] && !display_debounce)
   {
   display_debounce = 1;
   vector_display_on=-vector_display_on;   
   }  // end if

if (!keyboard_state[DIK_D])
    display_debounce = 0;

// these controls not really needed since AI drives...

// allow player to move
if (keyboard_state[DIK_RIGHT])
   {
   if (++car.curr_frame > 15)
      car.curr_frame = 0;

   // turn off ai this cycle
   ai_on = 0;
   } // end if
else
if (keyboard_state[DIK_LEFT])
   {
   if (--car.curr_frame < 0)
      car.curr_frame = 15;

   // turn off ai this cycle
   ai_on = 0;
   } // end if

if (keyboard_state[DIK_UP])
   {
   if ((speed+=0.1) > 4)
      speed = 4.0;

   // turn off ai this cycle
   ai_on = 0;
   } // end if
else
if (keyboard_state[DIK_DOWN])
   {
   speed-=0.1;

   // turn off ai this cycle
   ai_on = 0;
   } // end if

// ai speed control -- pretty dumb huh :)
// better to tie it to angle that it's turning
if (ai_on)
   if ((speed+=0.05) > 4)
      speed = 4.0;

// apply friction
if ((speed-=0.01) < 0)
      speed = 0;

// make engine sound
DSound_Set_Freq(car_sound_id,11000+speed*2000);

// let ai turn the car

// find nearest waypoint first
test_waypoint = (Find_Nearest_Waypoint(car.varsF[0],car.varsF[1])+1)%NUM_WAYPOINTS;

// test if this is a new waypoint and not the last
if (test_waypoint != curr_waypoint)
   curr_waypoint = test_waypoint;

// compute vector toward waypoint
float wx = (path[curr_waypoint].x - car.varsF[0]);
float wy = (path[curr_waypoint].y - car.varsF[1]);

// normalize wx, wy
float length = Fast_Distance_2D(wx+0.5,wy+0.5);
wx/=length;
wy/=length;

// compute angle in radians
float car_angle = ((-90+car.curr_frame*22.5)*PI)/180;

// compute velocity vector of car (use look up for cos, sin in real life
float xv = cos(car_angle);
float yv = sin(car_angle);

// draw vectors
if (vector_display_on==1)
   {
   DDraw_Lock_Back_Surface();
   Draw_Line16(car.varsF[0],car.varsF[1], path[curr_waypoint].x, path[curr_waypoint].y, 
              250, back_buffer, back_lpitch); 

   Draw_Line16(car.varsF[0],car.varsF[1], car.varsF[0]+16*xv,car.varsF[1]+16*yv,
              246, back_buffer, back_lpitch); 
   DDraw_Unlock_Back_Surface();
   } // end if

// now turn car into waypoint direction, get sign of cross product
// between each vector
float sign_cross = (xv*wy - yv*wx);


if (ai_on)
{
// test the sign to determine which way to turn plus a little slosh
if (sign_cross > 0.3)
   {
   if (++car.curr_frame > 15)
      car.curr_frame = 0;   

   sprintf(buffer,"AI Turning RIGHT", sign_cross);
   Draw_Text_GDI(buffer,320, 460,RGB(255,255,255),lpddsback);

   } // end if
else
if (sign_cross < -0.3)
   {
   if (--car.curr_frame < 0 )
      car.curr_frame = 15;   

   sprintf(buffer,"AI Turning LEFT", sign_cross);
   Draw_Text_GDI(buffer,320, 460,RGB(255,255,255),lpddsback);

   } // end if
else
   {
   sprintf(buffer,"AI Turning 0", sign_cross);
   Draw_Text_GDI(buffer,320, 460,RGB(255,255,255),lpddsback);

   } // end else
} // end if
else
   {
   sprintf(buffer,"AI Disabled by user override", sign_cross);
   Draw_Text_GDI(buffer,320, 460,RGB(255,255,255),lpddsback);
   } // end if


// adjust floating position
car.varsF[0] += (xv*speed);
car.varsF[1] += (yv*speed);

// test for off screen -- user could cause this
if (car.varsF[0] > screen_width)
    car.varsF[0] = 0;
else
if (car.varsF[0] < 0)
    car.varsF[0] = screen_width;

if (car.varsF[1] > screen_height)
    car.varsF[1] = 0;
else
if (car.varsF[1] < 0)
    car.varsF[1] = screen_height;

// position sprite on pixel center
car.x = (0.5+car.varsF[0] - 8);
car.y = (0.5+car.varsF[1] - 8);

// draw the car
Draw_BOB16(&car, lpddsback);

// show nearest waypoint
sprintf(buffer,"Nearest Waypoint %d", Find_Nearest_Waypoint(car.varsF[0],car.varsF[1]));
Draw_Text_GDI(buffer,64, 460,RGB(255,255,255),lpddsback);

sprintf(buffer,"(16-Bit Version) Path following demo. Use arrow keys to override AI, <D> to toggle info, and <ESC> to Exit.");
Draw_Text_GDI(buffer,8, 8,RGB(255,255,255),lpddsback);

// flip the surfaces
DDraw_Flip();

// sync to 30ish fps
Wait_Clock(30);

// check of user is trying to exit
if (KEY_DOWN(VK_ESCAPE) || keyboard_state[DIK_ESCAPE])
    {
    PostMessage(main_window_handle, WM_DESTROY,0,0);

    // stop all sounds
    DSound_Stop_All_Sounds();

    } // end if

// return success
return(1);

} // end Game_Main

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新中文字幕一区二区三区| 91九色02白丝porn| 日韩美女在线视频| 日韩电影免费在线看| 欧美一区二区成人| 久久精品国内一区二区三区| 精品福利二区三区| 高清国产一区二区| 亚洲精品成人在线| 欧美久久免费观看| 黄页视频在线91| 国产精品久久777777| 在线观看一区日韩| 麻豆国产欧美一区二区三区| 久久久电影一区二区三区| 波多野结衣91| 亚洲高清在线精品| 欧美精品一区二区三区蜜桃视频| 国产精品自拍在线| 亚洲女同ⅹxx女同tv| 欧美日韩国产高清一区| 另类小说一区二区三区| 国产精品人妖ts系列视频| 日本久久一区二区三区| 蜜臀a∨国产成人精品| 国产欧美日韩亚州综合| 欧美视频精品在线| 国内一区二区在线| 亚洲黄色性网站| 日韩一区二区三区免费观看| jvid福利写真一区二区三区| 亚洲国产精品自拍| 欧美国产精品v| 欧美人妖巨大在线| 99久久精品免费看| 久久国产三级精品| 樱花影视一区二区| 国产色综合久久| 欧美日韩视频在线第一区| 国产精品99久久久久久有的能看| 亚洲成人av资源| 亚洲欧洲日韩一区二区三区| 日韩欧美亚洲国产另类| 色婷婷综合久久久久中文 | 国产精品网站在线观看| 欧美少妇性性性| 国产**成人网毛片九色| 美腿丝袜在线亚洲一区| 亚洲精品视频在线观看免费| 国产女人18水真多18精品一级做| 在线播放中文字幕一区| 95精品视频在线| 国产成人在线观看| 美女脱光内衣内裤视频久久网站| 亚洲精品久久嫩草网站秘色| 国产欧美日韩视频一区二区| 欧美va亚洲va| 欧美日韩成人一区| 在线精品亚洲一区二区不卡| 99九九99九九九视频精品| 国产福利一区二区三区| 激情av综合网| 狠狠色综合日日| 美女在线一区二区| 日韩专区中文字幕一区二区| 亚洲最大成人综合| 亚洲男同性恋视频| 亚洲男同性恋视频| 亚洲精品ww久久久久久p站| 国产精品久久久久久久久免费丝袜| 欧美大肚乱孕交hd孕妇| 日韩小视频在线观看专区| 欧美疯狂做受xxxx富婆| 在线影视一区二区三区| 在线亚洲免费视频| 色天使久久综合网天天| 色综合久久99| 欧美日韩中文一区| 欧美日韩国产123区| 欧美群妇大交群的观看方式| 欧美肥大bbwbbw高潮| 在线综合亚洲欧美在线视频 | 91麻豆精品91久久久久久清纯| 欧美另类变人与禽xxxxx| 91麻豆文化传媒在线观看| 成人a免费在线看| 91在线观看高清| 91久久精品网| 欧美亚洲动漫精品| 91麻豆精品国产91久久久资源速度| 欧美日韩一区高清| 91精品国产色综合久久不卡蜜臀| 欧美二区三区的天堂| 日韩欧美二区三区| 欧美国产成人在线| 亚洲精选视频免费看| 亚洲午夜视频在线观看| 日日骚欧美日韩| 国产乱子伦一区二区三区国色天香| 国产乱人伦偷精品视频免下载| 成人国产免费视频| 色狠狠一区二区三区香蕉| 欧美嫩在线观看| 久久久亚洲精华液精华液精华液| 国产三区在线成人av| 亚洲精品一卡二卡| 日本成人超碰在线观看| 国产精品一二三在| 欧美在线免费视屏| 日韩精品中文字幕在线不卡尤物| 国产午夜亚洲精品午夜鲁丝片| 一区二区中文视频| 日本不卡一二三区黄网| 成人免费va视频| 欧美裸体bbwbbwbbw| 久久久久久久久久久久久久久99| 欧美国产一区二区在线观看| 亚洲午夜久久久久久久久电影网 | 亚洲另类在线一区| 蜜桃av一区二区三区电影| 成人av网站在线| 欧美一区二区观看视频| 国产精品视频麻豆| 日韩激情视频在线观看| 成人aa视频在线观看| 日韩一区二区三区高清免费看看| 国产女主播在线一区二区| 午夜精品久久久久久久蜜桃app| 国产一区二区三区精品欧美日韩一区二区三区| av在线免费不卡| 欧美精品一区二区三区四区| 亚洲精品国产视频| 国产黑丝在线一区二区三区| 欧美性大战久久久久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲成人综合视频| 本田岬高潮一区二区三区| 欧美一区二区三区电影| 亚洲综合一二区| k8久久久一区二区三区| 久久久不卡网国产精品二区| 日日夜夜精品视频免费| 91国在线观看| 日韩一区欧美一区| 国产精品88888| 精品国偷自产国产一区| 日韩制服丝袜先锋影音| 欧美性色欧美a在线播放| 亚洲视频你懂的| 懂色av一区二区三区免费看| 精品国产凹凸成av人网站| 丝袜脚交一区二区| 欧美吞精做爰啪啪高潮| 亚洲蜜桃精久久久久久久| 成人精品视频网站| 欧美激情中文字幕一区二区| 精彩视频一区二区| 日韩美女一区二区三区四区| 免费三级欧美电影| 在线播放一区二区三区| 亚洲成人av一区二区三区| 欧美视频你懂的| 性感美女久久精品| 欧美日韩欧美一区二区| 亚洲超丰满肉感bbw| 欧美午夜电影在线播放| 伊人婷婷欧美激情| 欧美伊人久久久久久午夜久久久久| 亚洲精品欧美激情| 色悠久久久久综合欧美99| 亚洲精品写真福利| 欧美三级欧美一级| 亚洲成人精品在线观看| 欧美亚洲禁片免费| 视频在线观看一区二区三区| 制服.丝袜.亚洲.中文.综合| 秋霞电影网一区二区| 精品人伦一区二区色婷婷| 狠狠色丁香婷综合久久| 国产亚洲午夜高清国产拍精品| 国产福利不卡视频| 国产精品久久久久久久久免费相片| 99久久精品一区二区| 玉米视频成人免费看| 欧美喷水一区二区| 久久精品国产亚洲高清剧情介绍| 欧美精品一区二区高清在线观看| 国产精品一卡二卡| 亚洲视频一区在线| 在线成人免费观看| 国产一区二区三区最好精华液| 久久九九久久九九| 99精品视频在线播放观看| 亚洲va在线va天堂| 精品国产免费一区二区三区香蕉| 成人中文字幕合集| 亚洲午夜激情网页| 欧美第一区第二区| 91啪九色porn原创视频在线观看| 亚洲国产日韩一级|