スポンサーサイト

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

フェードイン・フェードアウトの骨組みを実装

とりあえずテクスチャを表示する仕組みを整えたので、フェードイン・フェードアウトクラスの骨組みを実装。
ベタにα値足したり、引いたりのフェードです。

前まで、真っ白なスクリーンサイズと同じサイズのテクスチャを用意し、
フェードをするタイミングで最前面に張った後、徐々にα値を加減算しての実装でした。

今回、描画するオブジェクトはリストに積んで描画担当で一気に描画するような仕組みを取ったので
フェードのフラグが立ったら、リストに積んだ全てのオブジェクトに対してα値をいじるような仕組みになりました。
そこまでしなくてよかったかもしれません・・・。


加えて、DirectX 9 で使用するデバイスオブジェクトなどのクラスと、ウインドウ作成・管理クラス、
ゲーム全体を管理するマネージャクラスともに実装。
とりあえず実行すれば真っ白なウインドウが出来上がります

とりあえずデータ飛んだのを取り戻そうとなんとか地道にやってます。
描画してたものが一気になくなったのでなんだか寂しいっすね・・・

PC再開

なんやかんやで PC 触らなかったりしてましたが、ここ最近ほとんど毎日数時間でも触るようにしました。
今は特に画面の進展とかはないですが、スキルアップをしないと理解できないところが多々あったので勉強をメインで行ってます。

DirectX を使った描画を行ってるので基本的な描画や移動などは出来てたのですが、
一転して行列演算に興味を持ちまして、やってみたいと思いつつも 3D系のプログラムは難しそうだなと思いまったく手を出していなかったので
コレを機に 2Dではありますが移動・回転なども行列で処理してみようかなと思いました。

とりあえずワールド行列、射影変換行列など新しい単語が出てきたのでその辺の基礎的なところから始めてます。
テクスチャの切り張りや、アルファブレンディングなどもシェーダーでやるといいそうなので、これもやってみようかなと思ってます。

今までの仕組みをまるっと変える感じになるので実際に動かしてどうこうはまだ先になりそうです。
いざはじめて見ると、割と意味不明な感じでした。
その反面楽しみも増えたのでがんばりたいと思います。

PC 新調となんかまたはじめようかな・・・。

新PC は今回、BTO で以下の構成にしました。

CPU : AMD FX-4300 [4Core/3.8GHz/TDP95W] 搭載モデル
CPUグリス: CPUクーラー付属グリス(標準)
CPU-FAN : AMD 推奨FAN(標準)
MOTHER : ASRock 970 Extreme3 R2.0 [AMD 970 + SB950](標準)
MEMORY : 8GB DDR3 SDRAM PC-12800 [4GB*2枚/メジャーチップ・6層基板]
READER : なし(標準)
HDD/SSD : Seagate ST1000DM003 [1TB 7200rpm 64MB]
HDD/SSD2 : なし(標準)
OptDrive : 【黒】DVD; LG GH24NSC0 BL+書込みソフト(標準)
VGA : GeForce GT730 2GB [DVI/D-Sub/HDMI]
ExCard : オンボードサウンド(標準)
LAN : Gigabit LAN [1000BASE T] オンボード
CASE : SilverStone SST-PS11B-Q(標準)
CASE-Option: なし(標準)
POWER : Corsair CX600M (CP-9020060-JP) [600W/80PLUS Bronze]
OS : Microsoft(R) Windows7 Home Premium SP1(64bit)DSP版
Office : なし(標準)
SOFT : なし(標準)
N-PAD : なし(標準)
保証 : 通常保証1年(標準)

◎周辺機器(キーボード・マウス・ディスプレイ等)
OTHER2 : なし(標準)
KEY : なし(標準)
MOUSE : なし(標準)
Mousepad : なし(標準)
USBメモリ: なし(標準)
無線LAN子機: なし(標準)
SPEAKER : なし(標準)
MONITOR : なし(標準)
MONITOR2 : なし(標準)

ディスプレイ : BenQ 24inch
OS : Windows 7 にしました。

スピーカー : ONKYO( http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx70hd2/index.htm )

バックアップ用に、TB HDD も用意し、以前と比べるとかなりのスペックアップを果たしました。
これで丁度10万くらいだったので良しとしました。

なんとなく AMD にしてますが、次から CPU は Intel にしようと思います!!!





PC もこんな感じなので、初期セットアップ~環境を整える感じで色々インストール。
コンパイラを使い慣れた Visual Studio 2008 Express Edition にしようとした所、サポート切れ。
以前重たく感じた 2010 もサポート切れ。

よく分からないままに Visual Studio 2015 を導入。
見た目が新しくなったことと、以前と違い、無料で使うためにサインインするような方向に変わったみたいです。

久しぶりにプログラムをやり始め、STG から打って変わってマップチップとキャラの当り判定をやりました。
なんとなくのゲームイメージは固めてますが、仕様がまだはっきりしないため必要そうな部分をとりあえず固めてます。

伝わるか微妙ですが、SFC 自体のゲームで「ぐっすんおよよ」+「簡単なアクション」を混ぜたゲームを目指そうかと思ってます。


今のところこんな感じです。
GameScreen.png

ボタンを押せばブロックが生成され、自キャラの移動と、マップチップへの当り判定が完成。
ブロックの回転処理などを含めていきたいと思ってます。


とりあえず久しぶりということもあったのでブログを更新しました。

数値を文字列に変換する( boost::lexical_cast )

数値を文字列に変換して、文字列Aと文字列Bの連結をしたいなと思ってたのですが、
どんな関数を使ったらいいのか知らずに検索してたら、boost ライブラリにかなり良さそうなものがあったので記録。

boost::lexical_cast<変換する型名>(変換対象)

使い方は結構シンプルでした。

int Val = boost::lexical_cast<int>("150");
これで、"150" を数値の150に変換してくれたり、

std::string Str = boost::lexical_cast<std::string>(200);
これで数値の200を "200" に変換してくれたりするので非常に便利です。

たとえばループで Sample1~Sample10 みたいな連番を作成するのも簡単にできそうです。

for(int i=1; i<=10; ++i)
{
Str = "Sample" + boost::lexical_cast<std::string>(i);
std::cout<< Str<< std::endl;
}


こんな感じでしょうか。
便利だな~。
これからは是非使わせてもらうことにしましょう('w`)

新年あけましておめでとうございます。

今更ですが、新年明けましておめでとうございます!
今年もよろしくお願いします!


【雑談】一ヶ月以上経ったのか・・・。
 の続きの記事となります。

前回・・・と言っても約二年前の記事になるんですが、Excel VBA を用いて
ある範囲のセルデータをテキストデータで出力し、プログラム側で読み取ったデータをコンソールアウトする。
と言うのが前回の流れでした。
この時のメインは Excel VBA でしたが、本日の更新分は C++ 側となります。
ソースは面倒なので割愛してます。


Excel からテキストデータを書き出したものがこれになります。
Excelの出力データ

一行目、二行目:セルの列数・行数
プログラム側ではこれを頼りにループ処理をしてます。

やることは単純で、形式は CSV となるので、 "," か "\0"(改行) が来るまでデータを読み込むのみです。
メイン関数はこんな感じになってます。



int main()
{
CDataTable wDataTable("./01EnemyInfo.txt");

std::string name1 = wDataTable["Enemy05"]["imageEnemy"];
std::string name2 = wDataTable["Enemy01"]["y"];
std::string name3 = wDataTable["Enemy10"]["apperFrame"];

std::cout<< name1.c_str()<< std::endl;
std::cout<< name2.c_str()<< std::endl;
std::cout<< name3.c_str()<< std::endl;

return 0;
}



コンストラクタにファイル名を渡すと、その中でファイルの読み込みをしてくれます。
クラス内で、std::map や [ ] 演算子のオーバーロードを使っていて、["ID"]["読み出したい項目名"] とすることで
その文字列をキーに値が検索されて返ってくる感じになってます。

実行結果はこんな感じです。
出力画面

文字列、数値に対応できたため、後は外部からの情報を流し込むだけになりました。
ここまでくれば敵を表示できるところまであと僅かというところまで来た気がします。

作りをどうするかで悩んでましたが、これで敵だけでなく色々なデータを読み込むのもやりやすくなった気がします。
std::map の使い方が個人的にわかり辛かったので、もうちょっと勉強したほうがいいかもしれないですね・・・。

何はともあれ、Excel からデータを書き出すマクロ、データを読み込むためのクラスの二つが完成しました。
≪PREVNEXT≫
検索フォーム
プロフィール

DVDM

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

 
Pixiv バナー


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