Admin * New entry * Up load * All archives 

C++&DirectXでプチプチゲーム制作をしています。文章力?気合で乗り越えるさ。

 

旧 ゲーム的な何か。

09«1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.»11
カテゴリー「異境」の記事一覧

    n e x t »

Posted on --:--:-- «edit»

Category:スポンサー広告

スポンサーサイト 

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

tb: --     com: --

go page top

Posted on 16:14:19 «edit»

Category:異境

文字列処理の追加 

どうも。デスクトップさえも汚いSignalです。新規テキストドキュメント(14)とかよくある話です。

星蓮船のWeb体験版が出ましたね。バランスも幾分改善されたようです。
ただあのシステムはバランス調整がとんでもなくきつそうですね。。ホントにすごいとしか言いようがないです。

さて、こちらでは文字列描画が出来たので、
・一括消去システム
・描画レイヤ管理
を実装しました。

この文字列、
タスクとして文字画像を作成→タスク内から描画
を行っているので、ただ表示させなくするわけにはいきません。解放処理が必要です。
というわけで、作った文字タスクごとに判別コードを随時指定し、「あるコードのタスクを全削除」
という処理を実現しました。これである文字列を削除、なんてことが簡単になります。

描画レイヤは下を見ていただければお分かりかと。
フォントゥ

システム上、タスクの並び順(制御不可)にて描画が行われるので、9枚のレイヤに分割して大まかながら描画順序を指定できるようになっています。
右下のスコアなんかはそれを表していますね。

とまぁこんな感じです。楽しいですね。
文字列を回転させようかとも思ったのですが使わないのと難しいのとで断念しました。。いつかやるかもしてません。

ところで、これからしばらくは文化祭用のシューティング製作に切り替える予定です。
そこのところよろしくお願いします。

ではでは。
スポンサーサイト

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 16:06:57 «edit»

Category:異境

とりあえず文字列表示 

ようやく気合が入ってきました。Signalです。
前の記事を書いた後しばらく試行錯誤していたのですが、思わぬ形で解決しました。

void CreateFontString(string s, int fontType, float px, float sp, float py, DWORD size, DWORD color)
{

string sBuffer;
unsigned int i = 0;
int space = 0;

while(i
sBuffer = s.substr(i,1);
const char* c = _strdup( sBuffer.c_str() );

//2バイト文字であるかの判定(上でまず1バイトだけ抜き出して判定ようにchar型のを作る)
if (isJapaneseCharacter(*c) == 1){
//2バイト分抜き出し
sBuffer = s.substr(i,2);
i+=2;
CreateFontChar(sBuffer, fontType, px + space, py, size, color);
space += sp;
} else {
//1バイト分抜き出し(そのまま)
i++;
CreateFontChar(sBuffer, fontType, px + space, py, size, color);
space += (sp / 2);
}
}
}

CreateFontCharは、string型の文字を入力することでその文字の画像を大きさに合わせ作成、表示してくれます。
今回文字列を分割して1文字ごとに画像を作成するように作っていたのですが、substr()が1バイトごとにしか区切ってくれないので、2バイト文字を認識してそのときは2バイト分分割する必要があったわけです。
非常に不器用なコードではありますが、こんな感じでコードを分割しています。

①文字列の1バイト目を抜き出す(char*型に変換)
②isJapaneseCharacter(char*)で2バイト文字かどうか判定
↑は別に作った関数で、2バイト文字なら1、1バイト文字なら0を返します。
SHIFT_JISの2バイト文字では,第一バイトが0x81~0x9fまたは0xe0~0xfcの範囲にあるのを利用しています。
③2バイト文字ならバッファに2バイト分ロード、画像作成、1バイト文字ならそのまま画像作成
④半角、全角に合わせて表示部を調整、次のバイトを①から続ける

こんな感じですね。コードはいらなかったかも知れません。

とりあえず目に見える成果はこちら。ふと見つけたので今年の正月ごろに作っていたプログラムのスクショと一緒に。タイトルは相変わらずです。
フォントー表示するだけ

7か月でようやくここまで来たか、といったところです。人より進歩は遅いので、この夏に一気に進めたいですね。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 23:32:54 «edit»

Category:異境

うーむ 

文字列の扱いに苦労しっぱなしです。Signalです。
やはりC言語の基本を相当すっ飛ばしているのが痛いかなー。いまだにchar*の扱いが微妙。

ただ今「文字列を1文字単位に分割する」のに困っている状況です。
Unicodeを使ってないので半角と全角の文字が混在した場合バイト数が変わるわけですが、うまいことそれを認識、半角文字は半角、全角文字は全角で抜き出せるように出来なくて困っています。
今のところstd:stringクラスを使ってやっているのですが、substrだとそのまんま1バイト区切りなら1バイト、2バイト区切りなら2バイトで出力されてしまうんですよねぇ。

思うにstringクラスの利点が逆にあだになっているらしく、その辺の扱いがブラックボックス化しているのかなぁ。

char*型をしっかり勉強し直さなくてはいけないようですね。。仕方のない所。
この文字列管理を乗り越えたら文化祭向けのシューティングを作る予定なので、ここは数日内に乗り切りたいところです。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (1)

 管理人のみ閲覧できます

  by -

Comment-WRITES

go page top

Posted on 00:05:36 «edit»

Category:異境

メモリの動的確保でフォント表示 

どうも。いつも午後6時を境に体の調子が一気に変わります。Signalです。
それにしても午後5時ごろのあのつぶれっぷりはなんなんでしょう。。不思議。

↓まずはこちらを
ふぉんとー
どでかく「適」。何とも言えず残るのは邪魔くささのみ。

マルペケつくろー様、ありがとうございます。
↑のサイトの方の書いたサンプルを改造しまして、とりあえず画面表示までこぎつけました。
このサンプル、1文字ごとにビットマップを作成する(個人的に)面白いスタイルでして、応用の仕方次第で随分使えそうです。

そういえば私、明日でようやく休校解除となるんですが、この休校期間中こんなものを書いてました。。

今更バニラで天帝に挑戦してみた

civilization4のプレイレポです。無謀にもバニラ(civ4本体、拡張パックなし)の天帝に挑んできました。
初めてwikiでレポ書いたのですが、イヤー疲れる。改行時に~を入れるのが癖になって今この記事書いてる途中にも~と入れそうになりました。。
もしよければ読んでください。お願いします。

あと、随分昔に作った蛮族繁栄MODも再度上げておきます。
蛮族繁栄MOD
Bts3.13(J)用です。こちらもよければどうぞ(ここみている人にcivプレイヤーはいるのでしょうか。。?)

今日はこんな感じです。まさかフォント表示を組み込むのががあんなにあっさりいくとは思っていませんでした。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (1)

 Re: メモリの動的確保でフォント表示

お!Civ4やってるんですか?自分も最近はじめました(`・ω・´)

天帝クリアできるとかすごいですね。

自分はとりあえず貴族に挑戦中ー

  by いさな

Comment-WRITES

go page top

Posted on 22:19:35 «edit»

Category:異境

アルファブレンディングの続き 

kraftwerkは素晴らしいですね。ここ最近(今更)ハマってます。Signalです。

どうしようもなく日々を過ごしてます。少々civに手を染めたりしていますがだんだんプログラミングへのモチベーションが上がってきました。

とりあえずアルファブレンディングについて調べた結果、今回の表示の問題は「背景の色次第」らしいということが今更わかりました。
もっとも東方projectの大弾の色遣いが素晴らしいのでたぶん違和感がだいぶ少なくなっていたのではと思います。
とりあえず検証で使ったスクショを数枚。
↓一応星蓮船ネタばれ注意。。










検証用1検証用2
検証用3一応

左上。永夜抄5面「ライジングゲーム」より。明るめの背景の割に違和感が少なくて不思議。
右上。地霊殿4面さとり通常1より。良く見るとずいぶん色が焼けてます。弾が多いのがカモフラージュに?
左下。星蓮船1面「高感度ナズーリンペンデュラム」より。中心部の明るい所やペンデュラムとかぶる場所は光ってます。
右下。星蓮船2面道中より。背景が明るいのでアルファブレンディングを行っていません。こうして見ると弾の色きれいですね。

完全な疑問解決にはなっていませんが、どうやら工夫次第のようです。
結果的にアルファブレンディングの仕組みを理解できたので何より。

今日はこの辺で。ではでは。

↓ブログ拍手返信

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

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