プログラマは0から数える

あまりにも適当に生きすぎたので、何かを残そうと足掻く、そんなBlog

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の本格的なチュートリアルは後ほど、別の記事で。