かつどんの活動記録#2(2018/07/11)

こんばんは。
今日はYoutube Liveしなかったので寝る前にここ数日で、できるようになったことを書いていきます。

■スコアを1ずつずらして表示する

<score.cpp>

static int score_keta;
static int count_stop_value;
static int h_score;
static int moku_score;

void Score_Initialize(int keta)
{
	score_keta = keta;
	h_score = 0;

	// 桁数からカンストを求める
	count_stop_value = 1;
	for (int i = 0; i < keta; i++)
	{
		count_stop_value = count_stop_value * 10;
	}
	count_stop_value -= 1;
}

void Score_Draw(float x, float y, bool bZero, bool bLeft)
{
	if (h_score < 0)
	{
		h_score = 0;
	}

	// カンストしているかどうか
	if (h_score > count_stop_value)
	{
		h_score = count_stop_value;
	}

	int n = h_score;
	// 一桁目を右側に表示して、右に一桁ずらす
	for (int i = 0; i < score_keta; i++)
	{
		Number_Draw(x + (score_keta - i - 1) * NUMBER_WIDTH, y, n % 10);
		n /= 10;
	}
}

void Score_Update(int score)
{
	int t = 1.0;
	moku_score = Get_Score();

	if (h_score < moku_score)
	{
		h_score+=1;
	}
}

前回作った<score.cpp>では100ポイント獲得した時に表示されているスコアが一気に+100されていたので、友人に教えてもらいながら、なんとか+1ずつ加算されるようになりました。

■プレイヤーの2段ジャンプ

	if (Keyboard_IsTrigger(DIK_SPACE))    // スペースキー入力時
	{
		if (g_player.jumpCount >= MAX_JUMP_COUNT)
		{
			g_player.IsJump = false;
		}

		if (g_player.IsJump)
		{
			if (g_player.jumpCount >= 1)
			{
				g_player.MoveY = 0.0f;
			}
			g_player.MoveY -= VALUE_JUMP;
			g_player.jumpCount++;
		}
	}

プレイヤーを2段ジャンプできるように変更しました。
ジャンプできる最大回数と現在何回ジャンプしたかを比べ、最大回数以上ならg_player.IsJumpをfalseにすることでジャンプ不可能に。
空中で再度ジャンプする時にg_player.MoveYを0.0fにする必要あり。
これをしないと2回目のジャンプでの移動量が2倍になってしまうから。

■C++
コンストラクタの勉強をし、継承の勉強開始

細かく見るともう少しありますが、まだ納得のいくところまで到達していないのでまた今度にします。
かなり雑でしたが、ここまで見てくれた方に感謝します。

この記事が気に入ったらサポートをしてみませんか?