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

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

?? outpost.cpp

?? 一本外國人寫的關(guān)于3D游戲編程的書的源碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// OUTPOST.CPP - OutPost Game Demo

// INCLUDES ///////////////////////////////////////////////

#define INITGUID

#define WIN32_LEAN_AND_MEAN  

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <iostream.h> // include important C/C++ stuff
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h> 
#include <math.h>
#include <io.h>
#include <fcntl.h>

#include <ddraw.h>  // directX includes
#include <dsound.h>
#include <dmksctrl.h>
#include <dmusici.h>
#include <dmusicc.h>
#include <dmusicf.h>
#include <dinput.h>
#include "T3DLIB1.h" // game library includes
#include "T3DLIB2.h"
#include "T3DLIB3.h"


//#include "mono.h"

// DEFINES ////////////////////////////////////////////////

// mathematical defines
CONST float FRICTION = 0.1;

// defines for windows 
#define WINDOW_CLASS_NAME "WINCLASS"  // class name

#define WINDOW_WIDTH    640            // size of window viewport
#define WINDOW_HEIGHT   480

// size of universe
#define UNIVERSE_MIN_X   (-8000)
#define UNIVERSE_MAX_X   (8000)
#define UNIVERSE_MIN_Y   (-8000)
#define UNIVERSE_MAX_Y   (8000)

// weapons defines
#define MAX_PLASMA         32   // max number of plasma pulses
#define PLASMA_SPEED       16   // pixels/sec of plasma pulse
#define PLASMA_SPEED_SLOW  12   // slow version for gunships

#define PLASMA_STATE_OFF   0   // this plasma is dead or off
#define PLASMA_STATE_ON    1   // this one is alive and in flight
#define PLASMA_RANGE_1     30  // type 1 plasma disruptor

#define PLASMA_ANIM_PLAYER     0  // a plasma torpedeo from player
#define PLASMA_ANIM_ENEMY      1  // a plasma torpedeo from any enemy

// asteroid field defines
#define MAX_ROCKS             300
#define ROCK_STATE_OFF        0   // this rock is dead or off
#define ROCK_STATE_ON         1   // this one is alive and in flight

#define ROCK_LARGE            0   // sizes of rock
#define ROCK_MEDIUM           1
#define ROCK_SMALL            2

// explosion defines 
#define MAX_BURSTS            8
#define BURST_STATE_OFF       0   // this burst is dead or off
#define BURST_STATE_ON        1   // this one is alive

// defines for player states
#define PLAYER_STATE_DEAD           0
#define PLAYER_STATE_DYING          1
#define PLAYER_STATE_INVINCIBLE     2
#define PLAYER_STATE_ALIVE          3
#define PLAYER_REGEN_COUNT          100 // click before regenerating

#define WRAITH_INDEX_DIR            3 // index of direction var

#define MAX_PLAYER_SPEED            16

// sound id's
#define MAX_FIRE_SOUNDS       8
#define MAX_EXPL_SOUNDS       8

// defines for gunships
#define MAX_GUNSHIPS          8

#define GUNSHIP_RANGE_RING       1000 // distance from player gunship will be created at

#define GUNSHIP_RIGHT            0
#define GUNSHIP_LEFT             1

#define MAX_GUNSHIP_DAMAGE       150
#define INDEX_GUNSHIP_DAMAGE     2  // damage level of gunship
#define INDEX_GUNSHIP_DIR        3  // direction of ship 
#define INDEX_GUNSHIP_TURRET     4  // direction of turret

// life state for gunships
#define GUNSHIP_STATE_DEAD        0
#define GUNSHIP_STATE_ALIVE       1
#define GUNSHIP_STATE_DAMAGED     2  
#define GUNSHIP_STATE_DYING       3
#define GUNSHIP_MIN_ATTACK_RANGE  500

// defines for powerups
#define POWERUP_TYPE_AMMO       0
#define POWERUP_TYPE_SHLD       1

#define POWERUP_STATE_DEAD      0
#define POWERUP_STATE_ALIVE     1
#define MAX_POWERUPS            16
#define INDEX_POWERUP_TYPE      0


// defines for stations
#define MAX_STATIONS           20

// life state for stations
#define STATION_STATE_DEAD       0
#define STATION_STATE_ALIVE      1
#define STATION_STATE_DAMAGED    2  
#define STATION_STATE_DYING      3

#define STATION_SHIELDS_ANIM_ON  0  // animations for shields
#define STATION_SHIELDS_ANIM_OFF 1 

#define STATION_RANGE_RING       300

#define INDEX_STATION_DAMAGE     2  // tracks the current damage of station
#define MAX_STATION_DAMAGE      100

#define STATION_MIN_UPLINK_DISTANCE  150


// defines for mines
#define MAX_MINES                16

// life state for stations
#define MINE_STATE_DEAD       0
#define MINE_STATE_ALIVE      1
#define MINE_STATE_DAMAGED    2  
#define MINE_STATE_DYING      3

#define MINE_STATE_AI_ACTIVATED   1
#define MINE_STATE_AI_SLEEP       0

#define INDEX_MINE_AI_STATE       1  // state of ai system
#define INDEX_MINE_DAMAGE         2  // tracks the current damage of MINE
#define INDEX_MINE_CONTACT_COUNT  3  // tracks how long mine has been in contact with player

#define MAX_MINE_DAMAGE            50 
#define MAX_MINE_CONTACT_COUNT     20

#define MAX_MINE_VELOCITY        16  
#define MIN_MINE_TRACKING_DIST   1000
#define MIN_MINE_ACTIVATION_DIST 250 

// defines for the star field

#define MAX_STARS                256   // number of stars in universe

#define STAR_PLANE_0             0    // far plane
#define STAR_PLANE_1             1    // near plane
#define STAR_PLANE_2             2

#define STAR_COLOR_0             8    // color of farthest star plane
#define STAR_COLOR_1             7
#define STAR_COLOR_2             15   // color of nearest star plane


// defines for particle system
#define PARTICLE_STATE_DEAD               0
#define PARTICLE_STATE_ALIVE              1

// types of particles
#define PARTICLE_TYPE_FLICKER             0
#define PARTICLE_TYPE_FADE                1 

// color of particle
#define PARTICLE_COLOR_RED                0
#define PARTICLE_COLOR_GREEN              1
#define PARTICLE_COLOR_BLUE               2
#define PARTICLE_COLOR_WHITE              3

#define MAX_PARTICLES                     128

// color ranges
#define COLOR_RED_START                   32
#define COLOR_RED_END                     47

#define COLOR_GREEN_START                 96
#define COLOR_GREEN_END                   111

#define COLOR_BLUE_START                  144
#define COLOR_BLUE_END                    159

#define COLOR_WHITE_START                 16
#define COLOR_WHITE_END                   31

// indices used to access data arrays in BOBs 
#define INDEX_WORLD_X                     8
#define INDEX_WORLD_Y                     9

// defines for the states of the main loop
#define GAME_STATE_INIT                  0
#define GAME_STATE_MENU                  1
#define GAME_STATE_RESTART               2
#define GAME_STATE_RUNNING               3
#define GAME_STATE_UPLINK                4
#define GAME_STATE_EXIT                  5
#define GAME_STATE_WAITING_FOR_EXIT      6
#define GAME_STATE_PAUSED                7

// the menu defines
#define MENU_STATE_MAIN                  0   // main menu state 
#define MENU_STATE_INST                  1   // instructions state
#define MENU_SEL_NEW_GAME                0
#define MENU_SEL_INSTRUCTIONS            1
#define MENU_SEL_EXIT                    2
#define MAX_INSTRUCTION_PAGES            6  

// defines for font
#define FONT_NUM_CHARS         96  // entire character set
#define FONT_WIDTH             12
#define FONT_HEIGHT            12
#define FONT_WIDTH_NEXT_NUM    8
#define FONT_WIDTH_NEXT_LOWER  7
#define FONT_WIDTH_NEXT_UPPER  8

// number of starting objects
#define NUM_ACTIVE_GUNSHIPS          8
#define NUM_ACTIVE_MINES             8
#define NUM_ACTIVE_STATIONS          8


// PROTOTYPES /////////////////////////////////////////////

// game console
int  Game_Init(void *parms=NULL);
int  Game_Shutdown(void *parms=NULL);
int  Game_Main(void *parms=NULL);
void Game_Reset(void);

// helper functions for game logic
void Draw_Info(void);
void Start_Burst(int x, int y, int width, int height, int xv,int yv);
void Draw_Bursts(void);
void Move_Bursts(void);
void Delete_Bursts(void);
void Init_Bursts(void);
void Reset_Bursts(void);

void Draw_Rocks(void);
void Start_Rock(int x, int y, int size,int xv, int yv);
void Move_Rocks(void);
void Delete_Rocks(void);
void Init_Rocks(void);
void Reset_Rocks(void);


void Draw_Powerups(void);
void Start_Powerups(int type, int x, int y);
void Move_Powerups(void);
void Delete_Powerups(void);
void Init_Powerups(void);
void Reset_Powerups(void);


void Init_Gunships(void);
void Move_Gunships(void);
void Draw_Gunships(void);
void Start_Gunship(int override, int x, int y, int dir);
void Reset_Gunships(void);

void Fire_Plasma(int x,int y, int xv, int yv, int source);
void Draw_Plasma(void);
void Move_Plasma(void);
void Delete_Plasma(void);
void Init_Plasma(void);
void Reset_Plasma(void);

void Move_Stars(void);
void Draw_Stars(void);
void Init_Stars(void);
void Reset_Stars(void);


void Init_Reset_Particles(void);
void Draw_Particles(void);
void Move_Particles(void);
void Start_Particle(int type, int color, int count, int x, int y, int xv, int yv);
void Start_Particle_Explosion(int type, int color, int count, 
                              int x, int y, int xv, int yv, int num_particles);

void Reset_Particles(void);


void Init_Stations(void);
void Move_Stations(void);
void Draw_Stations(void);
void Start_Station(int override, int x, int y);
void Reset_Stations(void);


void Init_Mines(void);
void Move_Mines(void);
void Draw_Mines(void);
void Start_Mine(int override, int x, int y, int ai_state);
void Reset_Mines(void);


void Create_Tables(void);
float Fast_Distance_2D(float x, float y);
void Seed_Rocks(void);
int Load_Player(void);
void Draw_Scanner(void);
int Pad_Name(char *filename, char *extension, char *padstring, int num);

int Copy_Screen(UCHAR *source_bitmap,UCHAR *dest_buffer, int lpitch, int transparent);

void Load_Buttons(void);
void Load_HUD(void);


inline void Copy_Palette(LPPALETTEENTRY dest, LPPALETTEENTRY source)
{ memcpy(dest, source, 256*sizeof(PALETTEENTRY)); }


// TYPES //////////////////////////////////////////////////

// used to contain a single star
typedef struct STAR_TYP
        {
        int x,y;                   // position of star
        UCHAR color;               // color of star
        int plane;                 // plane that star is in

        } STAR, *STAR_PTR;


// a single particle
typedef struct PARTICLE_TYP
        {
        int state;           // state of the particle
        int type;            // type of particle effect
        int x,y;             // world position of particle
        int xv,yv;           // velocity of particle
        int curr_color;      // the current rendering color of particle
        int start_color;     // the start color or range effect
        int end_color;       // the ending color of range effect
        int counter;         // general state transition timer
        int max_count;       // max value for counter

        } PARTICLE, *PARTICLE_PTR;

// MACROS ////////////////////////////////////////////////

// used to compute the min and max of two expresions
#define MIN(a, b)  (((a) < (b)) ? (a) : (b)) 
#define MAX(a, b)  (((a) > (b)) ? (b) : (a)) 

// returns a rand in a range
#define RAND_RANGE(a,b) ((a)+(rand()%((b)-(a)+1)))

// GLOBALS ////////////////////////////////////////////////

HWND main_window_handle = NULL; // save the window handle
HINSTANCE main_instance = NULL; // save the instance
char buffer[80];                // used to print text

BITMAP_IMAGE background_bmp, menu_bmp; // used to hold backgrounds
BITMAP_IMAGE menu_sel_bmps[3];   // holds the menu selections
BITMAP_IMAGE andre;

BOB wraith;                   // the player 
BOB plasma[MAX_PLASMA];       // plasma pulses
BOB rocks[MAX_ROCKS];         // the asteroids
BOB rock_s, rock_m, rock_l;   // the master templates for surface info
BOB bursts[MAX_BURSTS];       // the explosion bursts
BOB gunships[MAX_GUNSHIPS];   // the gunships
BOB powerups[MAX_POWERUPS];   // the powerups
BOB stations[MAX_STATIONS];   // the starbase stations
BOB mines[MAX_MINES];         // the predator mines
BOB hud;                      // the art for the scanner hud
BOB stationsmall;             // small station bob

int rock_sizes[3] = {96,56,32}; // X,Y dims for scaler

STAR stars[MAX_STARS];          // the star field

PARTICLE particles[MAX_PARTICLES]; // the particles for the particle engine

// player state variables
int player_state       = PLAYER_STATE_ALIVE;
int player_score       = 0;   // the score
int player_ships       = 3;   // ships left
int player_regen_counter = 0; // used to track when to regen
int player_damage      = 0;   // damage of player
int player_ammo        = 1000;// ammo of player
int player_counter     = 0;   // used for state transition tracking
int player_regen_count = 0;   // used to regenerate player
int player_shield_count = 0;  // used to display shields
int ready_counter = 0,        // used to draw a little "get ready"
    ready_state   = 0;

float mine_tracking_rate = 2; // rate that mines track player

int win_counter = 0,          // tracks if player won
    player_won = 0;   

int station_id = -1,          // uplink station id
    num_stations_destroyed = 0;

int intro_done = 0;           // flags if intro has played already

int game_paused      = 0,
    pause_debounce   = 0,
    huds_on          = 1,
    scanner_on       = 1,
    huds_debounce    = 0,
    scanner_debounce = 0;

// color palettes, so we don't have to reload all the time
PALETTEENTRY         game_palette[256]; // holds the main game palette
PALETTEENTRY         menu_palette[256]; // gee what do you think
PALETTEENTRY         andre_palette[256]; // for me

// positional and state info for player
float player_x=0,
      player_y=0,
	  player_dx=0, 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩经典一区二区| 97se亚洲国产综合在线| 欧美日韩免费观看一区二区三区| 欧美久久久久久久久久| 亚洲精品一二三| 91精品国产综合久久久久久久| 亚洲人成精品久久久久| 色欧美片视频在线观看在线视频| 亚洲综合一区二区精品导航| 欧美高清你懂得| 久久精品国产网站| 国产欧美日韩卡一| 色94色欧美sute亚洲线路一久| 亚洲午夜国产一区99re久久| 欧美一区二区精美| 国产ts人妖一区二区| 亚洲精品高清视频在线观看| 欧美精选午夜久久久乱码6080| 久久 天天综合| 国产精品超碰97尤物18| 欧美日韩精品欧美日韩精品一| 毛片av中文字幕一区二区| 国产欧美日韩精品在线| 在线精品视频一区二区| 久久精品国产免费看久久精品| 国产视频一区不卡| 欧美性猛交xxxx黑人交| 韩国视频一区二区| 一区二区久久久久久| 欧美电影免费观看完整版| av在线这里只有精品| 麻豆国产一区二区| 亚洲免费成人av| 精品伦理精品一区| 欧美亚洲一区二区在线| 国产成人精品免费看| 午夜欧美一区二区三区在线播放| 久久九九国产精品| 制服丝袜国产精品| 99久久精品国产导航| 激情五月婷婷综合| 亚洲福利一二三区| 国产精品三级av在线播放| 7777精品伊人久久久大香线蕉的| 不卡一区二区三区四区| 美女视频免费一区| 亚洲一区欧美一区| 中文字幕第一区综合| 欧美成人a在线| 欧美乱妇23p| av亚洲精华国产精华| 国模冰冰炮一区二区| 日韩和欧美一区二区| 亚洲欧美激情小说另类| 久久综合视频网| 在线播放91灌醉迷j高跟美女| 99久久亚洲一区二区三区青草| 国产一区二区美女| 美女一区二区三区| 石原莉奈一区二区三区在线观看| 亚洲免费高清视频在线| 中文字幕在线观看一区| 精品91自产拍在线观看一区| 欧美日本国产一区| 欧美午夜不卡在线观看免费| 93久久精品日日躁夜夜躁欧美| 国产精品888| 国产精一品亚洲二区在线视频| 人人超碰91尤物精品国产| 亚洲成人手机在线| 偷拍一区二区三区四区| 亚洲一线二线三线视频| 亚洲精品免费播放| 亚洲日本青草视频在线怡红院| 亚洲国产精品高清| 中文一区二区在线观看| 国产三级欧美三级日产三级99 | 日本一区二区三区视频视频| 日韩欧美的一区| 日韩精品一区二区三区视频在线观看 | 欧美aaaaaa午夜精品| 日本在线不卡视频一二三区| 日韩成人dvd| 日本美女一区二区| 三级影片在线观看欧美日韩一区二区| 亚洲午夜国产一区99re久久| 亚洲成av人片| 青草国产精品久久久久久| 蜜臀av一区二区| 另类欧美日韩国产在线| 国产麻豆视频一区二区| 白白色 亚洲乱淫| 99精品黄色片免费大全| 在线亚洲精品福利网址导航| 欧美日韩国产影片| 欧美一区二区三区在线观看 | 精品国产乱码久久久久久1区2区| 精品黑人一区二区三区久久| 久久久久久久综合日本| 中文字幕一区二区三区在线观看| 亚洲免费资源在线播放| 日韩电影一区二区三区| 国产精品影视天天线| 91色|porny| 欧美久久婷婷综合色| 久久日一线二线三线suv| 国产精品久99| 午夜国产精品一区| 国产精品 欧美精品| 色综合久久天天| 欧美一区二区美女| 国产精品三级视频| 亚洲成人一区二区在线观看| 国产一区二区伦理| 欧美色综合天天久久综合精品| 日韩视频免费观看高清完整版| 欧美激情综合网| 亚洲午夜一区二区三区| 国产乱子伦一区二区三区国色天香| 9久草视频在线视频精品| 欧美日韩在线精品一区二区三区激情 | 欧美mv日韩mv亚洲| 亚洲欧美日韩国产一区二区三区 | 亚洲图片自拍偷拍| 国产精品一二三| 欧美视频你懂的| 欧美激情一区二区三区蜜桃视频| 丝袜美腿亚洲一区二区图片| 成人午夜视频免费看| 欧美猛男gaygay网站| 中文字幕在线播放不卡一区| 免费在线欧美视频| 91福利视频网站| 国产精品美女久久久久aⅴ | 日韩美女视频一区| 美女尤物国产一区| 日韩精品一区二区三区在线观看| 久久女同性恋中文字幕| 亚洲一级二级在线| 成人精品gif动图一区| 91精品国产美女浴室洗澡无遮挡| 国产精品美女久久久久av爽李琼 | 99国产精品久久久久久久久久久 | 国产精品萝li| 精品一区二区三区日韩| 欧美日韩免费视频| 亚洲免费观看高清完整版在线观看熊| 国产一区不卡视频| 欧美va亚洲va国产综合| 日韩精品成人一区二区三区| 欧美中文字幕一区| 亚洲欧美在线视频观看| 国产不卡视频一区二区三区| 日韩免费观看2025年上映的电影 | 国产白丝精品91爽爽久久| 日韩欧美国产一区二区三区 | 久久精品噜噜噜成人88aⅴ| 欧美在线观看视频一区二区三区| ...xxx性欧美| 99视频在线精品| 国产欧美一区二区精品性| 国产精品一区免费视频| 久久亚洲捆绑美女| 国产一区不卡精品| 久久综合久久99| 男男gaygay亚洲| 欧美不卡激情三级在线观看| 日韩成人av影视| 日韩视频免费观看高清完整版| 日韩福利电影在线观看| 91精品国产aⅴ一区二区| 日韩一区精品字幕| 5月丁香婷婷综合| 人禽交欧美网站| 欧美tickling网站挠脚心| 国产一区二区成人久久免费影院| 26uuu精品一区二区在线观看| 久久99精品久久久| 久久精品一区蜜桃臀影院| 国产精品一区二区黑丝| 国产欧美一区二区精品婷婷| 国产.欧美.日韩| 亚洲欧美一区二区三区久本道91| 99九九99九九九视频精品| 亚洲一二三四久久| 3751色影院一区二区三区| 免费在线观看一区| 2014亚洲片线观看视频免费| 不卡高清视频专区| 一区二区三区**美女毛片| 欧美男男青年gay1069videost| 免费欧美在线视频| 久久女同互慰一区二区三区| 99re热视频精品| 亚洲成人免费观看| 久久久久久亚洲综合影院红桃 | 国产在线乱码一区二区三区| 国产午夜精品一区二区三区嫩草| 成人av网站免费| 午夜精品国产更新|