在上一節中,我們搭建了遊戲的基本框架,用迴圈處理我們的遊戲世界,還掌握了一些方法去解決因機器效能不同而引起的問題。在這一節中,我們將會學習:
建立player類
移動我們的player這裡,將會用**矩形(sf::rectangleshape)**代替我們之前的圓形,player應該有這幾個屬性,分別是它的形狀、大小和顏色,它的方向,它的速度。
因此我們建立了這麼乙個player類
class player : public sf::drawableplayer是乙個可繪製的物件,因此它繼承自sf::drawable。void update(sf::time deltatime);
bool ismoving;
int rotation;
private:
virtual void draw(sf::rendertarget& target, sf::renderstates states) const override;
sf::rectangleshape _shape;
sf::vector2f _velocity;
};複製**
這裡delete關鍵字的作用跟game類中的是一樣的。
通過查詢sf::rectangleshape類中的 **setposition()**方法,它有兩個過載方法,分別是:
void setposition (float x, float y)
void setposition (const vector2f &position)
乙個有乙個引數,另乙個有兩個引數,因此 player 類中的setposition()使用了變長引數模版。
ismoving代表 player是否在移動,rotation可以改變方向。
接下來就是具體實現了。
首先是player的初始化,**比較簡單,這裡就不做解釋了。
player::player() : _shape(sf::vector2f(100,100))然後是update的實現複製**
void player::update(sf::time deltatime)通過rotation引數可以改變方向if (ismoving)
_shape.move(seconds * _velocity);
}複製**
ismoving判定player是否在移動,如果是則給它繼續加速,加速度大小這裡為60.0
float angle = _shape.getrotation() / 180 * m_pi - m_pi/2;這段**計算出的是當前player移動的角度,減去m_pi/2是為了是初始方向是向上的。複製**
有了 player 類,當然還需要讓使用者去改變它的狀態,這裡可以通過簡單的事件處理解決。事件處理在game類的processevents方法中,直接看**:
while (_window.pollevent(event)) else if (event.type == sf::event::keypressed) else if (event.key.code == sf::keyboard::up) else if (event.key.code == sf::keyboard::left) else if (event.key.code == sf::keyboard::right)**簡單粗暴,方向鍵的左右控制player向左向右旋轉,up鍵給player加速。} else if (event.type == sf::event::keyreleased)
}複製**
雖然很簡陋,但是好歹執行了起來。這裡沒有做邊界處理,可以看到最後我們的player跑到畫面外去了。
這一節中的事件處理方式只做為演示,因此**很粗糙,下一節我們將會學習如何將事件處理管理起來。:smiley:
用Python和Pygame寫遊戲 入門
windows7 下安裝pygame 安裝好,可以用下面的方法確認有沒有安裝成功 import pygame print pygame.ver 2.新的hello world coding utf 8 背景 游標 mouse image filename fugu.png import pygame...
用C語言寫貪吃蛇遊戲
輸入標頭檔案,設定函式,其中snakemove 是實現蛇運動的函式,put food 是隨機放置金幣的函式,printmap 是輸出影象的函式,x y記錄蛇尾的座標,snakex和snakey記錄蛇的初始座標。include include include include define snake ...
興趣篇 用C語言寫打字母遊戲
昨天說的,以後會寫和小遊戲相關的部落格,事不宜遲,今天就先開始用最簡單的c語言編寫乙個簡單的打字母小遊戲吧。應今天我的軟體工程老師的一句話 當做一件事時,如果能很快的從中得到正反饋,我們將會有成就感,我們將會提高對它的興趣。我們程式設計的入門語言是c語言,是一門相對簡單的程式語言,但是大多數大學生或...