スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【ゲーム開発】マルチバイト文字から Unicode 文字に対応

とてつもなく久しぶりの更新ですね。
色々あって停滞期間が続いてました。
主にやる気なくなったのが大きいですが…

久しぶりにプログラムを触る機会があったのでちょっと触ってました。
何やってたか全然思い出せなかったので一からプロジェクトを立ち上げて
ソースの整理等々やって、ようやくタイトル画面での選択まで戻ってきました。

で、その過程でブログ放置だったよな~
と言う事で今回はこの記事にしました。


タイトル通り、今までマルチバイト文字を使ってプロジェクトを作ってました。
正直、個人のプロジェクトなので全く問題はない訳ですが
一度 Unicode でコンパイルしたらどうなるのかという興味が沸きました。

当たり前ですが、Unicode なんて気にせず組んでますのでエラー出るわ出るわ…
とりあえずこれに対応しようと言う事で TCHAR 型を今回初めて使ってみました。
TCHAR 型は Unicode かどうかで char 型か、wchar_t 型か判断してくれます。


今度はファイル名などで、文字列を扱う時も気にしないといけません。
char 型であれば "ファイル名" とすればよかったのに対し、
wchar_t 型であれば L"ファイル名" としなくてはいけません。

この違いを吸収するために便利なマクロが用意されてます。

_T("ファイル名")
_TEXT("ファイル名")

どちらでも意味は同じですが、Unicode かどうかで char 型か、wchar_t 型か判断してくれます。

この辺を修正して、よし完璧!!
めでたし、めでたし!!
といきたかった訳ですがそうは行きません。

std::string 型。
これが地味に厄介でした。

TCHAR 対応の string 型。
さて使うか…「std::tstring」

std::string 型, std::wstring 型は用意されているのに
std::tstring 型が用意されていなかったのです。

この事実を昨日初めて知りました。
え、まじか! とリアルに声が出ました。
まずは、std::string, std::wstring が何処にあるのか見に行きました。

<xstring> と言うヘッダに書かれているようです。

std::string は以下のように、
typedef basic_string<char, char_traits<char>, allocator<char> >
string;


std::wstring は以下のように
typedef basic_string<wchar_t, char_traits<wchar_t>,
allocator<wchar_t> > wstring;


と、二種類書かれているだけでした。
どうやら引数に char 型、wchar_t 型を渡しているようです。
ならこの引数に TCHAR を与えれば tstring 型を作れるじゃないかと。

なので、<xstring> に直接書こうかと思いましたが、
さすがに既存のヘッダに追加するのはどうかということでやめました。

しかし、std 名前空間の元で同じように使いたかったので namespace を使ってみました。
適当なファイルに以下の記述を追加。
namespace std
{
typedef basic_string<TCHAR, char_traits<TCHAR>, allocator<TCHAR>>
tstring;
};


これで std 名前空間の下使えるようになりました。
今まで通り std::string と同じように std::tstring とするだけです。


と言う事で、久々の更新はこんな記事でしたよと。
VC++ 2008 EE のインテリセンスが言う事を聞いてくれなかったのは確かであります。
へそを曲げたのかな・・・。

最近テニスの王子様を一話から見てます。
ようやく半分消化し終わりましたが
なんていうかテニスやろうぜって思います・・・しかし面白いのでいいです!

ゲームは 3DS の Project MIRAI をプレイ中です。
現在、全曲全譜面クリア、コスチューム全部取得と言う事で一区切り付きました。
なので今度は全曲全譜面の S+SPALL を目指してます。

残る所、難易度トコトンで四曲(SING&SMILE、ハロ/ハワユ、君の体温、ゆめゆめ)
なんですが細かい連打が反応してくれないので凄く困ってます。
う~~む、どうしたものか…。

今月22日に DJMAX Black Square が PSP にて発売されるので凄く楽しみにしてます。
シアトリズムも凄い気になってたんですが三月に音ゲーを三つ買うのは死ねるのでやめました…
が、MIRAI も一段落ついたので買ってもいいかなと思ってたり。


当分はソースの整理メインでやってると思います。
プログラムに関して今は、自機の座標をどうやって撃ち出す弾に教えようか
どう管理しようかで凄く悩んでます。

今のままだと非常に面倒なので分離させないと行けない訳ですが
どう分離していいのかサンプルを作ったりしながら試行錯誤な状態です。
力技でやれば楽勝だけど、結構難しい問題だったりするんだな~

久しぶりに紙にクラス図書いたりして遊んでます。
さて…久々に更新した所で晩飯だな、うん。

この記事へのコメント

トラックバック

URL :

検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。