投稿記事

日記の記事 (98)

黒ピーマン工房 2020/09/07 00:53

2020/09/06の記録-キャラクターラフ、戦闘プログラム

寝落ちしました。
疲れてるのだろうか・・・。

イラスト制作

僧侶ポジションなキャラを考えた結果、こうなりました。

シスターっぽい感じです。

あとこの前描いた狼男のポーズがちょっと気に食わなかったので、

描き直しました。
また時間があるときに綺麗に描きます。

プログラム

戦闘画面処理をちまちま作っています。
そもそもどういう仕様にするかというところですが、全員のコマンドを入れてから進行ではなく、順番が来たらコマンドを入れて都度処理していくタイプにします。
これ代表的なゲームだと何なんでしょうね。
SRPGから移動取ったような感じでしょうか。

というのをどう実現するか。
1.各々が持つ素早さから計算して「行動コスト」を出す
2.全体の時間を進める
3.全体の時間と各キャラの「行動コスト」を比べ、等しいキャラからキューへ追加
みたいな感じの処理を考えています。
「行動コスト」が少ないキャラは、他のキャラが動くまでに複数動かしたりできます。
1の変換式は全く考えていません。

黒ピーマン工房 2020/09/05 23:42

2020/09/05の記録-キャラクターラフとデータ設計

今日はお昼寝してないので眠いのですが、寝落ちからは逃げ切りました。
実質勝ちです。

キャラクターラフ

小豆をコトコト煮込んでる間暇だったので、キャラクターを考えていました。

チャイナな女の子を・・・描きたかったんや・・・。
ベタなところで格闘家っぽいキャラです。
名前はまだ無い。吾輩は猫ではない。
中国人ぽい可愛い名前って何でしょうね・・・。

次。

でかい武器ぶん回す系のキャラが欲しかったので。
これもまた名前はまだありません。

年齢設定とかそういうのすらふわふわしてます。
おっさんなのかお兄さんなのか・・・。

データ設計

戦闘部分の処理を作りたくて、データをどうするか考えていました。
ということでざっくり整理したエクセルのキャプチャがこちらです。

なんか微妙に矢印ズレてるけど・・・まあ気にしないことにします。

味方キャラクター

常にどこかにデータがあって、パラメータも都度変動していくものです。
装備品があったりもします。
基本的にインスタンス化してポインタを常にどこかで保持しています。

敵キャラクター

固定の初期データを戦闘開始時にマスターデータから引っ張れば良いです。
そのためポインタではなく構造体の実体から読むことになります。

そういった違いがあるため、コンストラクタはオーバーロードで2種類用意しています。
要するに両方を戦闘処理をするのに都合の良いデータにしてしまえというわけですね。
素早さによる行動順ソートなどもあるので、そのほうが都合が良いのです。
自分がよくやるパターンの設計です。

というところまで考えて今日はお開きとなります。

黒ピーマン工房 2020/09/05 05:38

2020/09/04の記録-文字列置換を作ってたら寝落ち!

画像は寂しいサムネを回避するために出てきて貰ったドラゴンくん。

今日はプログラミングの日。
文字列置換処理が欲しいと思い、Cには純正で存在しないため自作していました。
途中で子供の寝かしつけをしていたら自分も寝ていました。
子持ちあるある。

私は別にものすごく出来が良いわけでもないので、とても苦労しました。
とりあえず何とか動いてるっぽいものができたのでコードをぺたぺた。

int Util::StrReplace(const char* target, const char* needle, const char* replace, char* ret, int maxSize) {
	int result = -1;

	const char* resultPtr = strstr(target, needle); // どこにあるか調べておく

	int index = 0;
	int retIndex = 0;

	while (target[index] != '\0') {
		// ヌル文字に当たるまで繰り返す
		if (&target[index] == resultPtr) {
			// 検索した結果のポインタに当たったら置き換え文字の挿入
			result = index;
		
			strncat_s(ret, maxSize, replace, sizeof(replace));

			// 検索位置をその分進める
			index += strlen(needle);
			retIndex = strlen(ret);

		} else {
			// 異なる場合は単純にコピー
			ret[retIndex] = target[index];
			++retIndex;
			++index;
		}

	}

	ret[retIndex] = '\0'; // 末尾にNULL文字を入れておく

	return result;
}

多分結構危ないコード。
例外処理とか色々足りてないと思われます。
個人使用なのであまり細かくケアするつもりはありませんが、実行環境をぶっ壊すバグだけは入れないように気を付けます。

黒ピーマン工房 2020/09/03 23:15

2020/09/03の記録-モンスターイラストな日

今日は絵を描いてました。

朝は30分しか取れなかったので割とシンプルめに。

ヘビです。
多分毒攻撃とかしてきます。

夜は子供が早めに寝てくれたのでじっくりお絵描き。

狼男的なものです。

最近人間の絵を描いてないような気が・・・。
そろそろ描きましょうか。

黒ピーマン工房 2020/09/02 21:53

2020/09/02の記録-モンスター・・・?と文字入力続き

今日は背景はちょっとお休み。

イラスト

通勤中にモンスターの案を色々考えていて、ひとまずその中の一つ。

モンスター・・・なのか?
なんか普通のカラスですね。
まあドラ〇エ3のお〇がらすとかの例もあるし別にいいかあ・・・。
という感じです。

プログラム

昨日の文字入力で、描画のフォント指定できないのかなとあれから色々調べました。
何とDXライブラリの非公開関数でSetKeyInputStringFontというものがあり、フォントハンドルを渡すことでフォント指定ができるようです。
恐れ入りました。
ということで早速組み込み。

※音出ます注意

一応できました。
これフォントサイズ指定はハンドル作成時しか無理かな・・・。

月別アーカイブ

限定特典から探す

記事を検索