設置

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
そうめん

設置

#1

投稿記事 by そうめん » 7年前

今ボンバーマンのようなゲームを作っているのですが、ボタンが押されたときに操作キャラと同じ座標に爆弾の画像を出しボタンを離した後でも同じ場所に表示する方法
が思いつきません。何がわからないかと言うと、変数xとy(プレイヤーの座標)の場所と変数aとb(爆弾の座標)があるとしてボタンを押したときにx!=aのようにして爆弾を離して操作キャラだけを移動させる方法とボタンを離した後もそこに爆弾を表示する方法がわかりません。

説明下手ですみませんが熟練者の方よろしくお願いします!

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 設置

#2

投稿記事 by みけCAT » 7年前

条件を緩和したプログラム(爆弾を離さず操作キャラと一緒に移動する、ボタンを離したら爆弾の表示をやめるなど)を提示していただければ、それをもとに改造することで答えやすいですが、提示はできないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 設置

#3

投稿記事 by みけCAT » 7年前

そうめん さんが書きました:変数xとy(プレイヤーの座標)の場所と変数aとb(爆弾の座標)があるとしてボタンを押したときにx!=aのようにして爆弾を離して操作キャラだけを移動させる方法とボタンを離した後もそこに爆弾を表示する方法
「x!=aのようにして」という条件は満たしていないと思いますが、例えばこんな感じで普通にプログラムを書いて実行すればできるでしょう。

コード:

#include <DxLib.h>

int key[256];

int updateKey(void) {
	char rawKey[256];
	if (GetHitKeyStateAll(rawKey) != 0) return 0;
	for (int i = 0; i < 256; i++) key[i] = rawKey[i] ? key[i] + 1 : 0;
	return 1;
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	if (ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() != 0) return -1;
	SetDrawScreen(DX_SCREEN_BACK);

	int x = 100, y = 100;
	int a = 0, b = 0;
	int bomb_alive = 0;

	while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && updateKey()) {
		// 操作キャラの移動
		if (key[KEY_INPUT_LEFT] && x > 10) x -= 5;
		if (key[KEY_INPUT_RIGHT] && x < 530) x += 5;
		if (key[KEY_INPUT_UP] && y > 10) y -= 5;
		if (key[KEY_INPUT_DOWN] && y < 440) y += 5;
		if (key[KEY_INPUT_Z] == 1) {
			// 操作キャラと同じ座標に爆弾を出す
			a = x;
			b = y;
			bomb_alive = 1;
		}

		// 爆弾の描画
		if (bomb_alive) {
			DrawString(a, b, "爆弾の画像", GetColor(255, 128, 128));
		}
		// 操作キャラの描画
		DrawString(x, y, "操作キャラ", GetColor(255, 255, 255));

		ScreenFlip();
	}

	DxLib_End();
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る