合計 昨日 今日

タイトル画面について

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: E.T.
[URL]
Date: 2017年1月09日(月) 18:30
No: 1
(OFFLINE)

 タイトル画面について

はじめて質問させていただきます。
C++は最近使い始めたばかりなのですが、タイトル画面の表示で困っています。
複数のサイト、サンプルを見ながら自分なりに組んだのですが、エラーが出てしまいます…

Main.cpp
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "DxLib.h"
 
#include "Title.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{  
    //////////////////////////////
    //
    //  ウィンドウ関係の設定及び初期化処理
    //
    //////////////////////////////
    SetMainWindowText("");                  // ウィンドウタイトル名の変更
    ChangeWindowMode(TRUE);                                 // ウィンドウモードに設定
 
    //DXライブラリ初期化処理
    if (DxLib_Init() == -1)
    {
        return -1;
    }
 
    //////////////////////////////
    //
    //  動作の処理
    //
    //////////////////////////////
    //タイトル画面の表示
    Title();
    return 0;                                               // ソフトの終了
}


********************************************************************************************************************
Title.cpp
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "DxLib.h"
 
void Title() {
    //////////////////////////////
    //
    //  変数の宣言
    //
    //////////////////////////////
    char    mKey[256];                                      // キーボード入力確認用
    int     key[256];                                       // キーボード入力確認用
    int     selectNum = 0;                                  // メニューの選択番号
    int     titleImage;                                     // タイトル画像格納用
    int     i = 0;                                          // ループ用
 
    // キーの入力状態を更新する
    int UpdateKey() {
        char tmpKey[256];   //現在のキーの入力状態を格納する
        GetHitKeyStateAll(tmpKey);  //全てのキーの入力状態を得る
        for (int i = 0; i < 256; i++) {
            if (tmpKey[i] != 0) {   //i番のキーコードに対応するキーが押されていたら
                Key[i]++;
            }
            else {
                Key[i] = 0;
            }
        }
        return 0;
    }
 
    //// メニュー項目の表示に必要な構造体を用意する
    typedef struct {
        int title_x_pos, title_y_pos;                       // 座標格納用変数
        char title_entry[128];                              // 項目名格納用変数
    } MenuElement_t;
   
 
 
    //////////////////////////////
    //
    //  変数の初期化
    //
    //////////////////////////////
    // メニュー項目要素を5つ作る
    MenuElement_t MenuElement[5]={
        { 230, 250, "ゲームスタート" },
        { 250, 280, "おまけ" },
        { 250, 310, "ヘルプ" },
        { 250, 340, "コンフィグ" },
        { 250, 370, "ゲーム終了" },
    };
 
 
 
    //////////////////////////////
    //
    //  画像関連の読み込み
    //
    //////////////////////////////
    titleImage = LoadGraph("image/BG_TITLE.png");           // タイトル画像読み込み
 
 
 
    //////////////////////////////
    //
    //  タイトル画面の動作処理
    //
    //////////////////////////////
    while (ProcessMessage() == 0 && UpdateKey() == 0) {
 
        //タイトル画面の選択操作
        if (key[KEY_INPUT_UP] == 1) {                       // UPキーが押された
            selectNum = (selectNum + 4) % 5;
        }
       
        if (key[KEY_INPUT_DOWN] == 1) {                     // DOWNキーが押された
            selectNum = (selectNum + 1) % 5;
        }
 
        //選択によるメニュー項目の表示位置
        //  選択によるメニューの表示位置
        for (i = 0; i<5; i++) {
            if (i == selectNum) {
                MenuElement[i].title_x_pos = 230;           // 選択されているメニュー項目を20pxずらす
            }
            else {
                MenuElement[i].title_x_pos = 250;           // 選択されていないメニュー項目を揃える
            }
        }
 
        //タイトル画面をメモリへ描画
        ClearDrawScreen();                                  // 画面のクリア
       
        DrawGraph(0, 0, titleImage, TRUE);                  // タイトル画像
        for (i = 0; i < 5; i++) {                           // メニュー項目
            DrawFormatString(MenuElement[i].title_x_pos, MenuElement[i].title_y_pos, GetColor(255, 255, 255), MenuElement[i].title_entry);
        }
 
        ScreenFlip();                                       // 表画面に反映
 
    }
 
}


********************************************************************************************************************

Title.h
コード[C++]: 全て選択
1
2
3
#pragma once
 
void Title();


********************************************************************************************************************
こんな感じのプログラムなのですが、Title.cppの
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    // キーの入力状態を更新する
    int UpdateKey() {
        char tmpKey[256];   //現在のキーの入力状態を格納する
        GetHitKeyStateAll(tmpKey);  //全てのキーの入力状態を得る
        for (int i = 0; i < 256; i++) {
            if (tmpKey[i] != 0) {   //i番のキーコードに対応するキーが押されていたら
                Key[i]++;
            }
            else {
                Key[i] = 0;
            }
        }
        return 0;
    }

この部分でエラーが発生してしまいます。わかる方がいましたら、教えていただけないでしょうか。

Name: E.T.
[URL]
Date: 2017年1月09日(月) 19:19
No: 2
(OFFLINE)

 Re: タイトル画面について

追記

環境はOS : Windows 10
コンパイラ : Visual Studio 2015
で、
エラー内容は

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
          expected a ';' 16

エラー C2601 'UpdateKey': local function definitions are illegal Test_App_1 c:\users\xxxxx\desktop\test_app_1\title.cpp 16

エラー C2065 'Key': undeclared identifier Test_App_1 c:\users\xxxxx\desktop\test_app_1\title.cpp 21

エラー C2065 'Key': undeclared identifier Test_App_1 c:\users\xxxxx\desktop\test_app_1\title.cpp 24


です。

Name: hide
[URL]
Date: 2017年1月09日(月) 19:26
No: 3
(OFFLINE)

 Re: タイトル画面について

C++は関数内で関数を定義することはできなかったと思いますので、その辺りで引っかかっているように見えます。
なので、まずはint UpdateKey() 及びそこから参照している変数を Title()の外側に出してみてください。
また、Key というものが定義されていないと書かれています。大文字小文字区別されますので修正しましょう。
その後、キー入力を管理するファイルを作りましょう。

Name: E.T.
[URL]
Date: 2017年1月09日(月) 19:55
No: 4
(OFFLINE)

 Re: タイトル画面について

[解決!]

>hide様
ありがとうございます!
大文字小文字をすべて合わせ、Title()の外にだしたら
うまくいきました。

またなにかあれば教えていただけると助かります。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[7人]