SFML2.0を使ってみよう。2nd:はじめてのコード
前々回、前回から続くSFML2.0の導入編。
いよいよコードを書いて、実行まで。
メンドイ事を一任してくれるheader fileを書く
とりあえず、WindowsでVisual Studioを使ってる人に便利なheader file
ファイル名を sfml_pragma.hとして、下記を
#pragma once // This file is for windows MSVS linker and compiler command set. #ifdef _MSC_VER #ifdef _DEBUG #ifdef SFML_STATIC #pragma comment( lib, "sfml-system-s-d.lib") #pragma comment( lib, "sfml-window-s-d.lib") #pragma comment( lib, "sfml-graphics-s-d.lib") #pragma comment( lib, "sfml-audio-s-d.lib") #pragma comment( lib, "sfml-network-s-d.lib") #else #pragma comment( lib, "sfml-system-d.lib") #pragma comment( lib, "sfml-window-d.lib") #pragma comment( lib, "sfml-graphics-d.lib") #pragma comment( lib, "sfml-audio-d.lib") #pragma comment( lib, "sfml-network-d.lib") #endif #else #ifdef SFML_STATIC #pragma comment( lib, "sfml-system-s.lib") #pragma comment( lib, "sfml-window-s.lib") #pragma comment( lib, "sfml-graphics-s.lib") #pragma comment( lib, "sfml-audio-s.lib") #pragma comment( lib, "sfml-network-s.lib") #else #pragma comment( lib, "sfml-system.lib") #pragma comment( lib, "sfml-window.lib") #pragma comment( lib, "sfml-graphics.lib") #pragma comment( lib, "sfml-audio.lib") #pragma comment( lib, "sfml-network.lib") #endif #endif #endif
c++11向け Hello SFMLwrold
こっちは、C++11向けなので、c++11未対応の2010とかを利用してる人は、
適時for( auto item: list)を for(auto item=list.begin();item != list.end();item++)などに読み替えて下さい。
#define SFML_STATIC #include "sfml_pragma.h" #include <SFML/Graphics.hpp> #include <vector> typedef std::vector<sf::Shape* > ShapeList; void redraw_window(sf::RenderWindow& window, ShapeList& list) { window.clear(); for(auto item: list) { window.draw( *item); } window.display(); }// void redraw_window(... void check_window_closed(sf::RenderWindow& window) { sf::Event event; while(window.pollEvent(event) ) { if( event.type == sf::Event::Closed) window.close(); }//while(window.pollEvent(... }// bool is_window_closed(... int main() { sf::RenderWindow window(sf::VideoMode(200,200), L"SFML 始動!!"); sf::CircleShape circle(100.f); circle.setFillColor(sf::Color::Green); ShapeList sList; sList.push_back( &circle); while( window.isOpen() ) { check_window_closed( window); redraw_window(window, sList); }//while( window.isOpen() ) }//int main()
上記二つのコードをprojectに入れてコンパイルで
緑の丸が出てくるだけのHello SFML Worldが完成!!
いろいろとWarningが吐かれる場合は、落として来たSFMLの
libがデバック用の情報を十分に含んでいない事が理由なので、気にせずに。
細かいコードの説明や、SFMLの本格的なチュートリアルは後ほど、別の記事で。