プログラミング

めめめめうめうを最適化

深夜テンションで「"め" "う"をランダムに発生させ"めめめめうめうめめめめうめう"という順序になったら"ぺったん×4大好き"と表示させる」じゃ?ぁを組んだ URL2016-03-24 00:54:46 via TweetDeck大分昔のツイートではあるが、朝から流れてきたので頭の体操…

.csv を更にスマートに読み込む

今時 Unity だと .csv とかめっちゃスマートに読み込めるのでコピペして使おう。 using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Linq; class ReadCSV { List<CharaData> mCharaDataList = new List<CharaData>(); public void loa</charadata></charadata>…

リソースの場合分けとビット演算

例えば自動生成のマップチップのようなものを想像しよう。上下左右に道があって、道のパターンによって使うマップチップが変わる。上に道があればこれ、左と右に道があればこれ、右と下ならこれ……。よくあるシチュエーションだ。 マップチップじゃなくてもい…

数値に四桁毎の単位を付けて表示する

10299933000020004041324600000000 を 1029穣9933予2000京4041兆3246億 に変換する方法。 ActionScript で書かれているが、他の言語でも基本は一緒。 var score:Number = 10299933000020004041324600000000; var cValueUnit:Array = ["","万","億","兆","京"…

きらりん☆DASHをドリンク飲んで制作(はし)った話

http://kirarin.illucalab.com/作りました。 弊サークル「いるからぼ」では定期的に FLASH でゲームジャムをする良くない慣習があり、これもその一つ。製作期間は二人で二日間。ただし平日(月火)なので実働はもうちょっと少ないです。 正直短期間でゲーム…

オブジェクトをTerrain(地形)に転写

なんか試したら一瞬で出来たので。 コースのようなペラっとしたオブジェクトを選択してメニューを選ぶと、その部分の地形がそのオブジェクトに吸い付くように整地される。勿論、それまでの地形はキープ。以下をEditor/フォルダにぶち込み。 //--------------…

効果音再生の工夫

効果音の鳴らし方は大切である。大量に鳴る危険性のある音を放置しておけば全力でスピーカーを叩き割ってくるし、停止再生と重複再生では全く音のイメージが異なる。 というわけで実際のゲームで使われた鳴らしわけパターンの例。

DXライブラリ 製品向け便利な関数まとめ

実は色んなオプションがあるDXライブラリ。

boost::asioでhttps-post

似たようなサンプルコードは沢山ある(公式にも)が、GETばかりなので。 //-------------------------------------------------------------------------------- int Connect(std::string *Body,const std::string &host,const std::string &path,const std:…

ポリモーフィズムで実体も取っておく

備忘録。 container<CObject*> box; CObject *object = new CObject(a,b,c); box.push_back( object ); 良くあるポリモーフィズム。 CObjectを継承したCRenderObjectを入れたいなら CRenderObject *robject = new CRenderObject(a,b,c); box.push_back( robject ); だ</cobject*>…

boost::regexでIPアドレスを取得

備忘録。 #include <boost/regex.hpp> #include <string> int tmpIP[4] = {0,0,0,0}, tmpPort = 0; std::string str(buf); boost::regex reg("(\\d+)\.(\\d+)\.(\\d+)\.(\\d+):(\\d+)"); boost::regex reg2("(\\d+)\.(\\d+)\.(\\d+)\.(\\d+)"); boost::smatch result; if (boost::rege</string></boost/regex.hpp>…

std::vectorの仕様

多分こんな感じ。(ソースを読んだ事はない) インスタンスを作ると自動的にある程度のメモリ領域を確保する。 reserveで領域の広さを変更可能。(別の位置にメモリ再確保) push_backで現在ある要素の最後に新たな要素を追加。その際、追加後の配列が確保さ…

名前空間付き列挙型

namespace NAME { enum { a, b, c }; }; int bar = NAME::a + NAME::b; 定数や列挙型の使い方は殊個人開発においてはかなり宗教観溢れているらしい。自分の使い方はこうである。デフォルトの列挙型enumはなんか使いづらい。かといって無名で使うと管理がやや…

Bishamon for DXライブラリ

BishamonのDXライブラリ用ラッパーが完成したので公開する。Bishamonの導入を検討している人も参考にしてほしい。 尚、使用にはDirectX9用のBishamonSDKが必須となる。ソースコードのライセンスはこちら※ 基本的に2D用(3Dエフェクトは使用可) ※ Windows Vi…

ランキングシステム

先日、ランキングシステムを搭載したFlashゲームを制作した。→ドリルナ 明らかにランキングシステムは誰もが作り使ってるはずなのだが、そのサンプルコードがどこにも見当たらないのは困った。よってぼくはPHPを一から勉強して幾千幾万と書かれたであろう車…

.csvを読み込む

.csvとはコンマ","区切りのドキュメントのことであり、Excelなどで表として編集できるので敵データやアイテムのデータの管理にとても優れたファイル形式である。 データの読み込み方法は幾つかあるが、基本的にはカンマをプログラム側で抽出し、前後の文章を…

メッセージボックス

void errorBox(const char *InputMessage,...) { int len; char buf[256]; va_list ap; va_start(ap,InputMessage); len = vsprintf_s(buf,256,InputMessage,ap); va_end(ap); if(len != EOF) MessageBox(GetMainWindowHandle(),buf,"Error",MB_OK | MB_ICON…

関数で数値を動かす

多忙で大分長く空きました。すみません。ゲーム製作において、数値というものは欠かせない。キャラクターの位置、吹っ飛びパワー、ダメージの計算、経験値テーブル。それらは何千個もの配列を使えば一切の数学的要素を排除したまま構築できるが、流石にそん…

DrawExRotaGraph

DXライブラリ用描画関数ラッパー。 基本的にはDrawRotaGraphと同じだが、縦と横の拡大率を別々に指定可能。 typedef struct VECTOR2D{ double x,y; } VECTOR2D; /* DrawExRotaGraph */ void DrawExRotaGraph(double ex, double ey, double xScale, double yS…

麻雀和了り判定

麻雀の和了判定のアルゴリズムを説明する。探せばあちらこちらに転がっているが、より実践的なものをここでは扱う。何箇所かはここやここを参考にしているため、あわせて参照されたし。 下準備 まず、前提として牌の情報を以下のような形で持ち、std::listあ…

演算子のオーバーロード

C++を語る上で欠かせないのが、オーバーロードという概念である。オーバーロードとは上書きという意味で、C++ではあらゆる要素を上書きして使うことができる。 C++では、演算子もオーバーロードすることができる。演算子とは、+だの-だの%だの算術記号や()だ…

マウスとパッドとキーボード

入力の利便性は、ゲームの命である。 いかに面白いゲームでも、キーコンフィグが固定されていたり、PADが使えなかったりすれば、時にプレイヤーは遊びそのものを諦めてしまう。特にアクションゲームや格闘ゲームなど、緻密な操作がゲームそのものに大きな影…

数値を画像で表示

スコアやタイムなど、ゲームに欠かせない「数値」。表示をフォントに頼ってしまうのは簡単だが、どうにも見た目が美しくない。ならば予め数字の画像を作り、画像で表示してあげれば良い。 描画に関わる箇所なため、サンプルはDXライブラリで実装している。適…

ポリモーフィズム

デザインパターンより、ポリモーフィズム。 デザインパターンについてはそれについて書いてあるサイトやら本やらが山ほどあるのでそれを読めばいいと思う。簡単に言えば将棋やチェスでいう定石。ポリモーフィズムとはプログラミング言語の型システムの性質を…

座標の移動とイージング

主観的な記事が続いたのでちゃんとしたプログラミングの話でも。非初心者向け。 文字や画像を左から右に移動させるとき、一番簡単なのは等速直線運動なのだが、なんとも味気ない。 dx = 3; x += dx; そこで使うのがイージング。イージングとは速度に重みを持…

ゲームの種類と製作難易度

昨日の記事で「STGは本当に簡単なのか?」という質問を貰ったのでついでに色んなゲーム種類と製作難易度(とその理由)を述べる。尚、主観と偏見にまみれてる上に個人製作が前提なのであまり役に立たないと思う。(これはおかしい、というコメントを頂ければ…

ゲームを製作するまで

プログラムの基礎の基礎は習ったけど、これをどう転用すればゲームが作れるのか分からない。また、簡単なゲームを作ったけどその後どうすればいいのか良く分からない。そんな人向けの記事。 ちなみに、ゲームの作り方を教えるわけではなし。どこにでも載って…

当たり判定

こんなものはどこにでも載ってるが。 int IsInRect(int in_x,int in_y,RECT _rect) { return (in_x>_rect.left&&in_x<_rect.right&&in_y>_rect.top&&in_y</_rect.right&&in_y>

va_listの使い方

va_listというものがある。これを使うとprintfのような、いくつでも値を関数呼び出しの括弧の中に入れられるような関数が作れる。 int CheckWhichEver(int maxnum,int val,...) { va_list ap; va_start(ap,val); for (int i=0;i

DIGIT_マクロ

ごく単純なdefineマクロ。入れた数値の桁数が出てくる。 #define DIGIT_(a) ((int)log10((double)(a))+1) DIGIT_(51245) = 5。 aに構造体とか入れると大変なことになるんじゃないかな。