ファイルを分けようと思ったのですが、うまくいきません
ファイル構成:
フォルダの中に、ソースが入っていてすべて同じディレクトリです。
main.cpp, window.cpp, window.hがあります。
main.cpp
#include "../DxLib/DxLib.h" // DxLib.hをインクルード
#include "window.h"
#define SCREEN_WIDTH (1366) // スクリーンの横幅
#define SCREEN_HEIGHT (768) // スクリーンの縦幅
const int menu_num = 3; // メニュー項目の数
int nowSelect; // 現在選択されている項目
int textWidth; // 文字の横幅を格納する変数
int mouseX, mouseY; // マウスのX座標、Y座標
void is_full_screen(); // フルスクリーンで表示するか?の関数
void mouse_hover_detection(); // マウスホバーを検知する関数
typedef struct {
int tibg; // タイトル画面の背景
int stdreimu; // 立ち絵の霊夢
int spark; // 火の粉
}IMG; // IMGという型名をつける
IMG img { // IMG型のimgを生成
LoadGraph("imgs/タイトル画面の背景.jpg"), //
LoadGraph("imgs/主人公/霊夢/reimu_a/霊夢_通常.png"),// ロード
LoadGraph("imgs/火の粉.png") //
};
typedef struct { // 色を格納する型
unsigned int Write;
unsigned int Black;
unsigned int Green;
unsigned int Yellow;
unsigned int Red;
}COLOR;
COLOR color { // 色を設定
GetColor(255, 255, 255),
GetColor( 0, 0, 0),
GetColor( 0, 0, 128),
GetColor(255, 255, 0),
GetColor(255, 0, 0)
};
typedef struct { // メニューの型
int x, y; // X座標とY座標(左上)
unsigned int color; // フォントの色
char name[32]; // 名前
}MENU;
MENU menu[menu_num] { // メニュー項目をmenu_num分生成(配列)
{1000, 400, color.Write, "Game Start"},
{1000 - 50, 400 + 80, color.Write, "Option"},
{1000 - 100, 400 + 160, color.Write, "Game Finish"}
};
enum {
TITLE, // タイトル画面
GAME, // ゲーム画面
RESULT // リザルト画面
}scene = TITLE; // 初期値はタイトル画面
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
is_full_screen();
SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏画面にセット
SetMouseDispFlag(TRUE); // マウスを表示する
SetMainWindowText("東方静天地"); // タイトルを設定
if (DxLib_Init() == -1) return -1; // DxLibの初期化(エラーが発生したら終了)
ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE_8X8); // フォントタイプをアンチエイリアス・エッジ付きに変更(8x8)
SetFontSize(50); // フォントサイズを50に変更
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) // エラー無・ESCが押されていないならループする
{
ClearDrawScreen(); // 画面をクリア
GetMousePoint(&mouseX, &mouseY); // マウスの位置を取得(mouseX, mouseYに代入)
mouse_hover_detection();
test(); // test() の呼び出し
ScreenFlip(); // 裏画面に表示されていたものを表画面に描画
}
DxLib_End(); // DxLibを終了
return 0; // プログラムの終了
}
void is_full_screen() {
int result = MessageBox(
NULL,
"フルスクリーンで表示しますか?", // 説明
"スクリーンの設定", // 題名
MB_YESNO // YES or NO で送信
);
switch(result) {
case IDYES: // YES なら
SetGraphMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32); // 画面いっぱいに設定
ChangeWindowMode(FALSE); // ウィンドウモードにしない
break;
case IDNO: // NO なら
SetGraphMode(SCREEN_WIDTH, SCREEN_HEIGHT - 20, 32); // 少し小さく
SetWindowInitPosition(-8, 0); // 細かい位置調整
ChangeWindowMode(TRUE); // ウィンドウモードにする
break;
}
}
void mouse_hover_detection() {
for (int i = 0; i < menu_num; i++) {
DrawFormatString(menu[i].x, menu[i].y, menu[i].color, menu[i].name); // メニュー項目を表示
textWidth = GetDrawFormatStringWidth(menu[nowSelect].name); // 選択されているテキストの幅を取得
if (menu[i].x <= mouseX && menu[i].x + textWidth >= mouseX &&
menu[i].y <= mouseY && menu[i].y + 50 >= mouseY) {
nowSelect = i; // 条件を満たしていればその数をnowSelectに代入
menu[nowSelect].color = color.Red; // 色変更
} else { // それ以外は
menu[i].color = color.Write; // 白
}
}
}
#include "../DxLib/DxLib.h"
void test() {
DrawString(0, 0, GetColor(255, 255, 255), "分離できています");
}
お願いします