第一人稱射擊遊戲 C 控制台版(未完成)

2021-10-19 05:19:29 字數 2450 閱讀 6937

一、在控制台中顯示畫面

使用cout方式顯示時重新整理速度較慢,不能滿足遊戲需求。 遊戲的顯示借助windows函式。

#includeusing namespace std;

#include//定義螢幕寬度、高度

int nscreenwidth = 120;

int nscreenheight = 40;

int main()

, &dwbyteswritten); }

}

二、

地圖

//地圖

int nmapwidth = 16; // world dimensions

int nmapheight = 16;

//玩家位置x、y、角度

float fplayerx = 0.0f; // player start position

float fplayery = 0.0f;

float fplayera = 0.0f; // player start rotation

// 建立地圖 create map of world space # = wall block, . = space

wstring map;

map += l"################";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"#..............#";

map += l"################";

地圖與實際的對應

(玩家視角有限)           

(玩家視線)

通過視線與牆面的碰撞檢測,生成玩家看到的畫面。

for (int x = 0; x < nscreenwidth; x++)

else}}

//計算到天花板和地板的距離

int nceiling = (float)(nscreenheight / 2.0) - nscreenheight/((float)fdistancetowall);

int nfloor = nscreenheight - nceiling;

for (int y = 0; y < nscreenheight; y++)}}

三、左右移動,其中用tp2-tp1來獲得一幀花費的時間,使得運動看起來更流暢。

#include//時間相關	

auto tp1 = chrono::system_clock::now();

auto tp2 = chrono::system_clock::now();

//遊戲迴圈

while (1)

{ //計算時間

tp2 = chrono::system_clock::now();

chrono::durationelapsedtime = tp2 - tp1;

tp1 = tp2;

float felapsedtime = elapsedtime.count(); //一幀的時間

// handle ccw rotation

if (getasynckeystate((unsigned short)'a') & 0x8000)

fplayera -= (0.1f)*felapsedtime;

if (getasynckeystate((unsigned short)'d') & 0x8000)

fplayera += (0.1f)*felapsedtime;

但是參考之前的俄羅斯方塊中的控制台設定方法,改變控制台之後還是沒有改變。

沒有找到解決方法,但猜測是和控制台相關的問題(使用作者**執行也是亂碼

Unity VR學習 第一人稱射擊遊戲(1)

1 封裝標籤 1.標籤有player,enemy,gamecontroller,fader 畫布 maincamera 2.使用const常量進行封裝 const 宣告某個常量欄位或常量區域性變數。注意 常量欄位和常量區域性變數不是變數並且不能修改 利用const管理遊戲標籤 2 場景淡入淡出 1....

openGL實現第一人稱視角

最近做的乙個題目要求用opengl實現乙個漫遊功能,雖然不知道這個漫遊是不是指第一人稱 其實我覺得第三人稱俯視的那種也算 不過都差不多 主要使用opengl的glulookat函式,通過計算球面座標來實現 目錄 glulookat 實現過程 demo 最終效果 void glulookat gldo...

第一人稱遊戲與第三人稱遊戲的區別

第一人稱遊戲也叫主視角遊戲,是指遊戲的視野就是玩家操控的角色的主視野,操控的角色本身並不出現,螢幕上顯示的內容就相當於角色眼睛所看到的,玩家通過該視野範圍和角度來了解遊戲世界。玩家覺得 我 就是遊戲裡的角色,有種身處遊戲中的強烈的帶入感,因而被稱為第一人稱遊戲。比如,cs中玩家可以看見角色的手和槍,...