一、在控制台中顯示畫面
使用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中玩家可以看見角色的手和槍,...