C言語使ってゲーム作る、というのを見ながらそのままコピぺした

・アフォBlog C言語勉強したけどゲーム作れないぞコラって人向けに
http://afoafodayo.blog84.fc2.com/blog-entry-549.html

こんなのがあったので、
ほぼコピペだけどやってみた。

#include "DxLib.h"
#include <stdio.h>
#include <stdlib.h>	// rand,srand
#include <time.h>	// time

/*-------------------------------------------------------+/
 + マクロ(定数)
/+-------------------------------------------------------*/
// 画像ファイル枚数
#define IMAGE_MAX 11
// 音声ファイル数
#define VOICE_MAX 5
// 音楽ファイル数
#define MUSIC_MAX 5
// エフェクト音ファイル数
#define EFFECT_MAX 5
// 画像ファイル保存ディレクトリ
#define IMAGE_DIR "Image"
// 音声ファイル保存ディレクトリ
#define VOICE_DIR "Voice"
// 音楽ファイル保存ディレクトリ
#define MUSIC_DIR "Music"
// 効果音ファイル保存ディレクトリ
#define EFFECT_DIR "Effect"

// 画面状態系
// * 種まき
#define TANEMAKI 1
// * 成長
#define SUKUSUKU 2
// * やったね
#define YATTANE 3

// かいわれの数
// * 暫定的にマクロにしておく
#define KAIWARE_BRINGED 4

/*-------------------------------------------------------+/
 + グローバル変数定義
/+-------------------------------------------------------*/
// リスト系
// * 画像のリスト
int ImageList[IMAGE_MAX];
// * 音声のリスト
int VoiceList[VOICE_MAX];
// * 音楽のリスト
int MusicList[MUSIC_MAX];
// * 効果音のリスト
int EffectList[EFFECT_MAX];
// * ない画像
int NoImage;

// 画面サイズ系
// * X座標
int WindowWidth = 640;
// * Y座標
int WindowHeight = 480;

// 特殊
// * 右クリックで終了確認中のイベントストッパ
int rightClickBlocker = 0;

/*-------------------------------------------------------+/
 + グローバル変数定義(セーブするもの)
/+-------------------------------------------------------*/
// かいわれ設定系
// * 各かいわれの成長度
// * 0〜150
int KaiwareGrowPoint[KAIWARE_BRINGED];
// * 収穫数
int HavestCount = 0;

// 現在のパート
// * 処理の分岐に使う
int part = TANEMAKI;
// 何章か
// * スタート時は1
int term = 1;
// 日付
// * まぁこれは適当でもいいんだけど
int date;

/*-------------------------------------------------------+/
 + 使用する関数達
/+-------------------------------------------------------*/
int LoadData();
void InitializeDisplay();
bool GameLogic();
bool ConfirmGameFinished();
void DrawBackGround();
void PlayMusic(char *filePath);
void DrawImage();
void tanemaki();
void sukusuku();
void yattane();

// 初期処理
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // 乱数の初期値のセット
    srand((unsigned) time(NULL));

	// Windowモード指定
	ChangeWindowMode(TRUE);

	// ウィンドウのサイズを変更
	// * DxLib_Initの後に呼ぶと一瞬大きな画面が出てからリサイズされるらしい
	// * カッコ悪いので先に呼びましょう
	// * 解像度も指定しなければならないのですが32bitだと重いので16bitにします
	SetGraphMode(WindowWidth, WindowHeight, 16);

	// DxLib使えないとダメですよ、と
	if(DxLib_Init() == -1) {
		return -1;
	}

	// 裏画面を利用する
	SetDrawScreen(DX_SCREEN_BACK);

	// データのロード
	if (LoadData() == -1) {
		MessageBox(NULL, "データが破損しています", "読み込みエラー", MB_OK);
		return -1;
	}

	// 初期画面
	InitializeDisplay();

	// セーブデータがある場合ロード
	int loadFile;
	if ((loadFile = FileRead_open("Save\\data.txt")) != 0) {
		char buf[1024];
		// 1行目は設定系
		FileRead_gets(buf, 1023, loadFile);
		sscanf_s(buf, "%d,%d,%d,%d", &part, &term, &date, &HavestCount);
		// 2行目はかいわれの成長度リスト
		FileRead_gets(buf, 1023, loadFile);
		sscanf_s(buf,"%d,%d,%d,%d", &KaiwareGrowPoint[0], &KaiwareGrowPoint[1], &KaiwareGrowPoint[2], &KaiwareGrowPoint[3]);
		// ファイルハンドルをクローズ
		FileRead_close(loadFile);

		// セーブデータがあるって教える
		DrawString(100, 200, " --- セーブデータをロードします --- ", 0xFFFFFF);
	}

	// 裏画面を表に
	ScreenFlip();

	// スクリーンをクリアする
	ClsDrawScreen();

	// BGM
	PlayMusic("Music\\Beder.mp3");

	// メイン処理のループ
	while (ProcessMessage() == 0) {
		// キー操作待ち
		// * イベントハンドラなどはパートで埋め込んでおく
		WaitKey();

		// ゲーム終了確認画面
		// * 右クリック時にイベント発生
		if (ConfirmGameFinished() == true) {
			break;
		}

		// 左クリックで続行
		if ((GetMouseInput() & MOUSE_INPUT_LEFT)) {
			int MouseClickX, MouseClickY;
			GetMousePoint(&MouseClickX, &MouseClickY);
			if((MouseClickX >= 0 && MouseClickX <= WindowWidth) && (MouseClickY >= 0 && MouseClickY <= WindowHeight) && rightClickBlocker != 1)  {
				// ゲームの処理
				if (GameLogic() == true) {
					break;
				}

				// 裏画面を表に
				ScreenFlip();

				// スクリーンをクリアする
				ClsDrawScreen();
			}
		}
	}

	// セーブデータ保存
	// * サブルーチンにしたほうがいいよね
	{
		FILE *saveFile;
		saveFile = fopen("Save\\data.txt", "w");
		// 1行目は設定系
		fprintf_s(saveFile, "%d,%d,%d,%d\n", part, term, date, HavestCount);
		// 2行目はかいわれの成長度リスト
		fprintf_s(saveFile, "%d,%d,%d,%d", KaiwareGrowPoint[0], KaiwareGrowPoint[1], KaiwareGrowPoint[2], KaiwareGrowPoint[3]);
		fclose(saveFile);
	}

	// DxLibを終了する
	DxLib_End();

	return 0;
}

// 初期データの読み込み
int LoadData() {
	// かいわれデータの初期化
	for (int i=0;i<KAIWARE_BRINGED;i++) {
		KaiwareGrowPoint[i] = 0;
	}

	// 画像を読み込む
	for (int i=0;i<IMAGE_MAX;i++) {
		// 画像のパス設定
		char ImagePath[256];
		sprintf_s(ImagePath, "%s\\%03d.jpg", IMAGE_DIR, i);

		// 画像読み込みに失敗した場合
		if ((ImageList[i] = LoadGraph(ImagePath)) == -1) {
			return -1;
		}
	}
	// 特殊画像
	if ((NoImage = LoadGraph("Image\\NoImage.jpg")) == -1) {
		return -1;
	}

	return 0;
}

// 初期画面
void InitializeDisplay() {
	// ゲームタイトル
	DrawString(100, 100, "かいわれげーーーーーむ!!!", 0xFFFFFF);

	// 説明がき
	DrawString(100, 300, "クリックするとはじまる!", 0xFFFFFF);
}

// ゲーム終了確認画面
bool ConfirmGameFinished() {
	int MouseClickX, MouseClickY;
	if ((GetMouseInput() & MOUSE_INPUT_RIGHT)) {
		rightClickBlocker = 1;

		GetMousePoint(&MouseClickX, &MouseClickY);
		if((MouseClickX >= 0 && MouseClickX <= WindowWidth) && (MouseClickY >= 0 && MouseClickY <= WindowHeight))  {
			if (MessageBox(NULL, "終了確認", "終了しますか?", MB_YESNO) == IDYES) {
				return true;
			}
			rightClickBlocker = 0;
	   	}
	}
	return false;
}

// ゲームのメイン処理
bool GameLogic() {

	// パート判別
	switch (part) {
		case TANEMAKI:
			tanemaki();
			break;
		case SUKUSUKU:
			sukusuku();
			break;
		case YATTANE:
			yattane();
			break;
		default:
			break;
	}

	return false;
}

// 背景描画
void DrawBackGround() {
}

// 音声再生
void PlayMusic(char *filePath) {
	int music = LoadSoundMem(filePath);
	PlaySoundMem(music, DX_PLAYTYPE_BACK);
}

// 画像描画
void DrawImage() {
}

/*-------------------------------------------------------+/
 + ゲームの実際のパート
 + 後でクラス作る

/+-------------------------------------------------------*/
// 最初の画面
// * 種まきです!
void tanemaki() {
	// 背景描画
//	DrawBackGround();

	// テキスト表示
	if (term == 1) {
		// 説明表示
		DrawString(50, 10, "左クリックで種を蒔く", 0xFFFFFF);
		DrawString(50, 40, "右クリックで終了", 0xFFFFFF);
	}
	else {
		// 収穫数
		DrawFormatString(50, 10, 0xFFFF00, "現在%3d個", HavestCount);
	}

	// 画像描画
	for (int i=0;i<KAIWARE_BRINGED;i++) {
		// 各かいわれを表示
		DrawGraph(i * 70 + 50, 100, ImageList[KaiwareGrowPoint[i]], FALSE);
	}

	// 開始メッセージ
	if (term == 1) {
		MessageBox(NULL , "ゲーム開始", "ゲームを開始します" , MB_OK);
	}

	// partをSUKUSUKUへ
	part = SUKUSUKU;
}

// お水をあげてスクスク育てます
// * ふふん!
void sukusuku() {
	// 背景描画
//	DrawBackGround();

	// 説明のテキスト
	DrawString(50, 10, "おみずをあげて すくすくそだてよう!", 0xFFFFFF);

	// 日付をプラス
	date++;

	// 画像描画
	int maxCount = 0;
	for (int i=0;i<KAIWARE_BRINGED;i++) {
		// 0-10で, 5以下の場合成長
		if (KaiwareGrowPoint[i] < 10 && rand() % 30 < 5) {
			KaiwareGrowPoint[i]++;

			// 効果音!
			PlayMusic("Effect\\NewType.wav");

			// 10になったら収穫
			if (KaiwareGrowPoint[i] == 10) {
				// 収穫数カウント
				HavestCount++;
			}
		}
		// MAXフラグのカウント
		if (KaiwareGrowPoint[i] == 10) {
			maxCount++;
		}
		// 各かいわれを表示
		DrawGraph(i * 70 + 50, 100, ImageList[KaiwareGrowPoint[i]], FALSE);
	}

	// 日付
	DrawFormatString(400, 0, 0xFFFF00, "%2d%2d/%2d", date, maxCount, KAIWARE_BRINGED);

	// MAXフラグが全部たってたらYATTANEへ
	if (maxCount == KAIWARE_BRINGED) {
		part = YATTANE;
	}
}

//
void yattane() {
	// 背景描画
//	DrawBackGround();

	// 説明のテキスト
	DrawString(50, 10, "おめでとう!これで もくひょうは たっせいされたぞ!", 0xFFFFFF);

	// 戻るよってテキスト
	DrawString(50, 100, "クリックすると最初に戻ります!", 0xFFFFFF);

	// かいわれデータの初期化
	for (int i=0;i<KAIWARE_BRINGED;i++) {
		KaiwareGrowPoint[i] = 0;
	}

	// 次の章へ
	term++;

	// 日付をリセット
	date = 1;

	// 初期画面へ
	part = TANEMAKI;
}


というかC++勉強しなきゃ。