小ネタ

HTML5/Javascriptでマルチプラットフォームのゲームを作るときの小ネタ

iPhoneやAndroidといったスマートフォンや、iPadなどのタブレット端末を意識したゲーム作りの小ネタです。 イベントの伝播を防ぐ スマートフォンやタブレット端末ではタッチイベントが多用されます。 ブラウザで実行する際に、タッチすると拡大縮小やフォー…

C言語でCSVファイルを高速読み取り

概要 「,」で区切られたデータ形式のことをCSVと呼びます。 表計算の表現として各セルを「,」で区切って表現することもあります。 // data.csv hello,world,!!! ok, input,data 意識する点は、文字列の先頭と「,」の位置です。 そして、「,」を終端記号「0」…

#includeとCSVファイル

概要 #include文を利用して、CSVを手軽に読み込む。 // data.csv 100,200,300 // main.cpp int DATA[] = { #include "data.csv"; } #includeの仕様を考えると外部ファイルをそのまま展開する。 さらにC/C++の配列の初期化方法ではCSV形式になっている。 二つ…

tabとspcace

はてなのスーパーpreの機能を使っていてソースコードの端が途切れてしまうことが判明した。 どうしようと考えていると、タブが幅を食っていた。(8つ分) タブ幅変えようとも考えたけれども、よく分からなかったのでスペースに置換します。 vimの設定 /etc/vim…

Scalaでゲームプログラミング - 番外編 デバッグの方法を見つけ出す -

Scalaでゲームプログラミング まとめソースあり エラーが起こったり、きちんと動いているか確認するためにもデバッグは必要です。 デバッグをするにあたり、データをどこかに出力しなければなりません。 そこでDebuggerというオブジェクトをつくりどこからで…

C言語の規格

自分の書いているコードがCなのかC++なのか分からないことがあったので調べてみることにした。 C89に盛り込まれた新機能 ・関数のプロトタイプ宣言 ・void、enum C95に盛り込まれた新機能 ・ワイド文字(日本語等) C99 ← スタンダード ・インライン関数…

ショートカットキーの基本

職業柄(?)か、主にテキストエディタで作業することが多い。 いちいちマウスなんか使ってたら遅いってときもある。(マウスの方が早いときもある。) そんなときに大活躍するのがショートカットキー。 テキストエディタあたりで特にこれだけは抑えておくべきと…

スタティックライブラリの作り方 for VC++

ライブラリとは、汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたものwikipedia つまり、様々なプログラムで利用可能だなと思われるコードを 再利用しやすいように部品として生成したものがライブラリと言えます。 中でもスタティック…

メモリリークの検出 for VC++

VC++には、newした後のdelete漏れを自動的に検出してくれる機能があります。 _crtDbgFlag フラグの状態を取得または変更して、デバッグ ヒープ マネージャの動作を制御します (デバッグ バージョンだけ)。 by MSDN 実際にはこのようにして使用することになり…

メモリを安全に解放するマクロ for C++

既に解放済みのメモリを解放しようとするととんでもないことになるそうで #defineマクロはバグの温床なんていわれることもあるけど、ここでは大活躍です。 #define SAFE_DELETE(p) if(p){delete p;p=0;} //使うとき A* a = new A(); SAFE_DELETE(a); {}をつ…

ゲーム制作の小ネタ集

全体 初めてゲームプログラミングでやるべき言語 ver1 new FPS(frame per second)を整える方法 状態遷移の柱「簡易シーケンス1 アクション、シューティング 当たり判定 for 長方形 アルゴリズム チェインハッシュ その他 ビット演算と管理方法 ビットシフト…

剰余(あまり)の算出方法

C言語やJavaなどで余りの出した方として定番なのは「%」の演算子を使う方法です。 int a = 3 % 10; // a == 3 int b = 8 % 6; // b == 2 そこで、言語に依存しないでやる方法はないでしょうか。 某所のセンタープレの数2の選択問題にこのネタがあったので…

当たり判定 for 長方形

各頂点に注目して、領域内or領域外を判定します。 四角形Aと四角形Bの当たり判定 Aの左上頂点(x1,y1) 縦 h1 横 l1 Bの左上頂点(x2,y2) 縦 h2 横 l2 求める条件は以下のとおりです。 x1 x1+l1 > x2 (Aの右側はBの左側より右にある) → A.right > B.left y1 y1+…

サウンド形式まとめ

ファイルサイズが大きくなりがちで技術的にもおくが深いので 悩むゲームプログラマーも多いのがこのサウンドに関する分野です。 一般的に使われる形式をまとめてみました。 Wave midi mp3 ogg 容量 △ ◎ ○ ○ BGM △ ○ ○ ○ SE ◎ △ ○ ○ 環境依存 ○ △ ○ ○ ライセ…