2013-01-01から1年間の記事一覧

std::(unordered_)mapにキーが入っているかどうかを判定する

stlのコンテナのfindメンバ関数は、条件に合うものが見つからない場合にendイテレーターを返します。 template <class M, class K> bool containsKey(const M& map, const K& key){ return map.find(key) != map.end( } 使用例 if(containsKey(table, "hoge")){ return table["</class>…

フォルダ内の各ファイルをfor文で処理する

C++11ではfor文に新たな記法が追加され、便利になりました。 新しい記法ではイテレーターを返すbegin()とend()を持っているものなら何でも回すことができます。 イテレーターを自作することでfor文で書けるものを増やすことができます。 今回はDXライブラリ…

フェードイン・フェードアウトを簡単に書けるFaderクラス

ゲームを作っているとある値を一定時間かけて変化させたいという場面が多くあります。 例えば、画面の明るさ(フェードイン・フェードアウト)、スコアの数値、HPゲージなど… こういった要素は一瞬で変化させるより、動きを与えた方が画面に高級感が出てきま…

interfaceと抽象クラスの使い分け

interfaceと抽象クラスの本質的な違いを勘違いしていた。 - ゆどうふろぐ

C++で2次元ベクトルクラスを作る

C++

ここでいうベクトルはstd::vectorではなく、2次元平面上の幾何ベクトルを意味します。 特徴は、a / b を外積にしている点です。これは当たり判定等で役立ちます。 #include <cmath> class Vector2 { public: double x, y; Vector2():x(0),y(0){ } Vector2(const Vec</cmath>…

C++でのCSVファイルの処理について

C++

色々あさってみて、最終的にこれが今一番しっくりきたので載せます。せっかくだし。 data.csv 10, 20, 30 hello, world, ! 12a, 23b, 34c main.cpp #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main(){ ifstream file("data.csv"); v</vector></string></fstream></iostream>…