画像表示について

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

画像表示について

#1

投稿記事 by 刄汰 » 6年前

初めましてです。
最近C言語を学びはじめていて、DXライブラリを使って勉強をしています。
今、このサイトでの→http://dxlib.o.oo7.jp/
サンプルプログラムを参考にさせていただいているのですが
マップチップ?でのプレイヤーの画像表示ができずにいます。
今はプレイヤーの表示をDrawBoxで描画しているのですが、DrawGraphで
どのように書けばいいのか分からないので、ヒントをお願いします。

コード:

// アクションサンプルプログラムメイン
int ActMain(void)
{
	// 描画先を裏画面にセット
	SetDrawScreen(DX_SCREEN_BACK);

	// 垂直同期信号を待たない
	SetWaitVSyncFlag(FALSE);

	// プレイヤーの座標を初期化
	PlX = 320.0F;
	PlY = 240.0F;

	// プレイヤーの落下速度を初期化
	PlDownSp = 0.0F;

	// ジャンプ中フラグを倒す
	PlJumpFlag = FALSE;

	// アイテムが表示されてる間はフラグをTRUEにする
	GetItemFlag = FALSE;

	// バレットのグラフィックをロード
	ShotGraph = LoadGraph("media\\バレット.png");

	// ShotFlagに0を代入して画面上に表示させないようにする
	ShotFlag = 0;

	// 入力状態の初期化
	Input = 0;
	EdgeInput = 0;

	// 60FPS固定用、時間保存用変数を現在のタイムカウントにセット
	FrameStartTime = GetNowCount();

	// メインループ開始、ESCキーで外に出る
	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
	{
		// 画面のクリア
		ClsDrawScreen();

		// 1/60秒立つまで待つ
		while (GetNowCount() - FrameStartTime < 1000 / 60)
		{
			Sleep(1); 
		}

		// 現在のタイムカウントを保存
		FrameStartTime = GetNowCount();

		// 入力状態を更新
		{
			int i;

			// パッド1とキーボードから入力を得る
			i = GetJoypadInputState(DX_INPUT_KEY_PAD1);

			// エッジを取った入力をセット
			EdgeInput = i & ~Input;	1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,

			// 入力状態の保存
			Input = i;
		}

		// プレイヤーの移動処理
		{
			float MoveX, MoveY;

			// 移動量の初期化
			MoveX = 0.0F;
			MoveY = 0.0F;

			// 左右の移動を見る
			if ((Input & PAD_INPUT_LEFT) != 0) MoveX -= SPEED;
			if ((Input & PAD_INPUT_RIGHT) != 0) MoveX += SPEED;

			// 地に足が着いている場合のみジャンプボタン(ボタン1 or Zキー)を見る
			if (PlJumpFlag == FALSE && (EdgeInput & PAD_INPUT_A) != 0)
			{
				PlDownSp = -JUMP_POWER;
				PlJumpFlag = TRUE;
			}
			// 空中ジャンプを可能にする
			if (PlJumpFlag == TRUE && (EdgeInput & PAD_INPUT_A) != 0)
			{
				PlDownSp = -JUMP_POWER;
				PlJumpFlag = FALSE;
			}

			// 落下処理
			PlDownSp += G;

			// 落下速度を移動量に加える
			MoveY = PlDownSp;

			// 移動量に基づいてキャラクタの座標を移動
			CharMove(&PlX, &PlY, &PlDownSp, MoveX, MoveY, CHAR_SIZE, &PlJumpFlag);
		}

		// マップの描画
		{
			int i, j;

			for (i = 0; i < MAP_HEIGHT; i++)
			{
				for (j = 0; j < MAP_WIDTH; j++)
				{
					// 1~7はブロックチップを表しているので1~7のところだけ描画
					switch (MapData[i][j])
					{
					case 1:
					case 6:
					case 7:
						DrawBox(
							j * CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							GetColor(255, 255, 255), TRUE);
						break;

					case 2:
						DrawTriangle(
							j * CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							GetColor(255, 255, 255), TRUE);
						break;

					case 3:
						DrawTriangle(
							j * CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							j * CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							GetColor(255, 255, 255), TRUE);
						break;

					case 4:
						DrawTriangle(
							j * CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							GetColor(255, 255, 255), TRUE);
						break;

					case 5:
						DrawTriangle(
							j * CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							j * CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE,
							GetColor(255, 255, 255), TRUE);
						break;

					case 8:
						DrawBox(
							j * CHIP_SIZE, i * CHIP_SIZE,
							j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
							GetColor(0, 255, 255), TRUE);
						break;
					}
				}
			}
		}
		// プレイヤーの描画(DrawBoxで表示ではなく画像で表示する)
		DrawBox((int)(PlX - CHAR_SIZE * 0.5F), (int)(PlY - CHAR_SIZE * 0.5F),
			(int)(PlX + CHAR_SIZE * 0.5F) + 1, (int)(PlY + CHAR_SIZE * 0.5F) + 1,
			GetColor(255, 0, 0), TRUE);
     
		// 画面の更新
		ScreenFlip();
	}

	// 終了
	return 0;
}


よもやま
記事: 68
登録日時: 8年前
連絡を取る:

Re: 画像表示について

#2

投稿記事 by よもやま » 6年前

1関数にいくつも処理が混在していてスパゲッティ状態です。
あと、関数リファレンスなどを参照はされたのでしょうか。

DXライブラリ関数リファレンス

DrawGraph

返信

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