昨日も質問しましたふらっとです。
お世話になっております。
昨日の質問に対して頂いた回答からじゃんけんゲームを練習で作ってみることにしました。
新・ゲームプログラミングの館を参考にさせていただいて、作っているんですが
うまくいかないところがあるので質問します。
まず、キー入力です。
キー入力をメインの関数とは別のkey.ccp関数で行うようにしようと思い
新・ゲームプログラミングの館に載っていたものをkey.ccpにコピーして配列変数keyをm_keyに変えてみました。
しかし、実行しようとすると
error C3861: 'gpUpdateKey': 識別子が見つかりませんでした
fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
と出ます。
このプロジェクトは新・ゲームプログラミングの館で勉強した時のものなので、gpUpdateKey関数自体はプロジェクトに入っているはずです。
ソースファイルから別のソースファイルの関数は呼び出せないということでしょうか?
2つ目です。
draw.ccpで画像をロードするために
static int m_Handle01, m_Handle02, m_Handle03;
m_Handle01 = LoadGraph("画像/ぐー.png");
m_Handle02 = LoadGraph("画像/ちょき.png");
m_Handle03 = LoadGraph("画像/ぱー.png");
と書いたんですが
これもまた実行しようとすると
型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
'int m_Handle01' : 再定義されました。
'm_Handle01' の宣言を確認してください。
と出ます(実際はm_Handle02もm_Handle03も)
3つ目は
関数の最後の行に
値を返さないコントロール パスがあります。
というエラーが出ます。
原因、解決方法を教えてください。
よろしくお願いします。
3種類のエラーについて質問です
Re: 3種類のエラーについて質問です
key.ccp関数とはなんでしょうか。関数名にドットは使えませんが。ふらっと さんが書きました: まず、キー入力です。
キー入力をメインの関数とは別のkey.ccp関数で行うようにしようと思い
新・ゲームプログラミングの館に載っていたものをkey.ccpにコピーして配列変数keyをm_keyに変えてみました。
しかし、実行しようとすると
error C3861: 'gpUpdateKey': 識別子が見つかりませんでした
fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
と出ます。
このプロジェクトは新・ゲームプログラミングの館で勉強した時のものなので、gpUpdateKey関数自体はプロジェクトに入っているはずです。
ソースファイルから別のソースファイルの関数は呼び出せないということでしょうか?
gpUpdateKey関数の宣言をしたヘッダファイルをソースでインクルードしないとそういうエラーが出るはずです。
これはもうちょっと広い範囲のソースがないと原因がわからないです。ふらっと さんが書きました: 2つ目です。
draw.ccpで画像をロードするために
static int m_Handle01, m_Handle02, m_Handle03;
m_Handle01 = LoadGraph("画像/ぐー.png");
m_Handle02 = LoadGraph("画像/ちょき.png");
m_Handle03 = LoadGraph("画像/ぱー.png");
と書いたんですが
これもまた実行しようとすると
型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
'int m_Handle01' : 再定義されました。
'm_Handle01' の宣言を確認してください。
と出ます(実際はm_Handle02もm_Handle03も)
戻り値が必要な関数内で戻り値を返さない場合あるといいうことです。例えば、ふらっと さんが書きました: 3つ目は
関数の最後の行に
値を返さないコントロール パスがあります。
というエラーが出ます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3種類のエラーについて質問です
大体の回答はh2so5さんの書かれたとおりです。
ファイル名・クラス名・構造体名・関数名・メンバ名など明確に説明を書き分けて下さい。結構重要な問題です。
あとLoadGraphを書く場所は結構重要です。所属するファイル・関数と呼び出されるタイミングも書いてくださいね。
そうそれと、前回の質問が一時的解決なら解決チェックをお願いしますね。
あとm_はクラスのメンバ変数だと明示するためのルールの一種ですので無闇に付けると意味無いですよ。
ファイル名・クラス名・構造体名・関数名・メンバ名など明確に説明を書き分けて下さい。結構重要な問題です。
あとLoadGraphを書く場所は結構重要です。所属するファイル・関数と呼び出されるタイミングも書いてくださいね。
そうそれと、前回の質問が一時的解決なら解決チェックをお願いしますね。
あとm_はクラスのメンバ変数だと明示するためのルールの一種ですので無闇に付けると意味無いですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ふらっと
Re: 3種類のエラーについて質問です
申し訳ないんですが
解決にチェックとはどこから行えるか教えてもらえますか?
それとコードもフォーラムルールに載っているようにしていなくて申し訳ないです
以後気をつけます
解決にチェックとはどこから行えるか教えてもらえますか?
それとコードもフォーラムルールに載っているようにしていなくて申し訳ないです
以後気をつけます
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3種類のエラーについて質問です
解決チェックは返信の投稿時に行えます。ふらっと さんが書きました:申し訳ないんですが
解決にチェックとはどこから行えるか教えてもらえますか?
送信ボタンの横にあるチェックボックスです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ふらっと
Re: 3種類のエラーについて質問です
「key.ccp関数」は
「key.ccpというソースコード」の間違いでした。
新・ゲームプログラミングの館で紹介されている
gpUpdateKey()関数(最初の質問に書いた、キー入力の関数です)を使うには何をインクルードすればいいんですか?
#include "gpUpdateKey.h"では
include ファイルを開けません。'gpUpdateKey.h': No such file or directory
となってダメでした。
最後に
もっと広い範囲を載せないとわからないとアドバイスをもらったので
draw.ccpを全てコピーして載せておきます。(座標は実際見て調整しよう思っているので、だいたいです)
よろしくお願いします。
「key.ccpというソースコード」の間違いでした。
新・ゲームプログラミングの館で紹介されている
gpUpdateKey()関数(最初の質問に書いた、キー入力の関数です)を使うには何をインクルードすればいいんですか?
#include "gpUpdateKey.h"では
include ファイルを開けません。'gpUpdateKey.h': No such file or directory
となってダメでした。
最後に
もっと広い範囲を載せないとわからないとアドバイスをもらったので
draw.ccpを全てコピーして載せておきます。(座標は実際見て調整しよう思っているので、だいたいです)
よろしくお願いします。
#include "DxLib.h"
#include "draw.h"
static int Handle01, Handle02, Handle03; //画像格納用ハンドル
static int White = GetColor( 255, 255, 255 );
Handle01 = LoadGraph("画像/ぐー.png");
Handle02 = LoadGraph("画像/ちょき.png");
Handle03 = LoadGraph("画像/ぱー.png");
void Draw_Player_gu(){
DrawGraph( 20, 160, Handle01, TRUE ); // プレイヤーのぐー描画
}
void Draw_Player_tyoki(){
DrawGraph( 20, 160, Handle02, TRUE ); //プレイヤーのちょき描画
}
void Draw_Player_pa(){
DrawGraph( 20, 160, Handle03, TRUE ); //プレイヤーのぱー描画
}
void Draw_CPU_gu(){
DrawGraph( 300, 160, Handle01, TRUE ); // CPUのぐー描画
}
void Draw_CPU_tyoki(){
DrawGraph( 300, 160, Handle02, TRUE ); //CPUのちょき描画
}
void Draw_CPU_pa(){
DrawGraph( 300, 160, Handle03, TRUE ); //CPUのぱー描画
}
void Draw_Draw(){
DrawFormatString( 120, 240, White, "あいこ");
}
void Draw_Win(){
DrawFormatString( 120, 240, White, "勝利");
}
void Draw_Defeat(){
DrawFormatString( 120, 240, White, "敗北");
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3種類のエラーについて質問です
さっき見逃してましたがファイル拡張子はccpではなくcppです。c plus plusの略ですね。
書き方は、新・C言語 ~ゲームプログラミングの館に説明があります。
「d.2章 複数のファイルに分けてコンパイルする」
http://dixq.net/g/d_02.html
それとDxLib_init()前に呼び出してはいけない関数が変数定義で使われています。
static int White = GetColor( 255, 255, 255 );
これはDXライブラリの仕様上、推奨されません。いや、動かないかエラーになると思ってもらったほうが良いでしょうね。
変数定義はの処理はmain動作前に行われますので、ここに書いてはいけません。
初期化関数を作り、そこに書きましょう。
こちらは、スクリプト言語のPHPやPerlではないので関数外に代入文は書けません。
必ず関数で行なって下さい。変数の初期値にするのは上に書いた理由でNGです。
[補足]
Handle01 = LoadGraph("画像/ぐー.png");
や関数でインデント(字下げ)してますが、一般的な書き方としてC/C++ではここでインデントしません。
慣習と言って良いと思いますが他の人にも読みやすくなるので独自流は避けられたほうが良いでしょう。
gpUpdateKey.hは自分で作ります。ふらっと さんが書きました:新・ゲームプログラミングの館で紹介されている
gpUpdateKey()関数(最初の質問に書いた、キー入力の関数です)を使うには何をインクルードすればいいんですか?
#include "gpUpdateKey.h"では
include ファイルを開けません。'gpUpdateKey.h': No such file or directory
となってダメでした。
書き方は、新・C言語 ~ゲームプログラミングの館に説明があります。
「d.2章 複数のファイルに分けてコンパイルする」
http://dixq.net/g/d_02.html
それとDxLib_init()前に呼び出してはいけない関数が変数定義で使われています。
static int White = GetColor( 255, 255, 255 );
これはDXライブラリの仕様上、推奨されません。いや、動かないかエラーになると思ってもらったほうが良いでしょうね。
変数定義はの処理はmain動作前に行われますので、ここに書いてはいけません。
初期化関数を作り、そこに書きましょう。
Handle01 = LoadGraph("画像/ぐー.png");
Handle02 = LoadGraph("画像/ちょき.png");
Handle03 = LoadGraph("画像/ぱー.png");必ず関数で行なって下さい。変数の初期値にするのは上に書いた理由でNGです。
[補足]
Handle01 = LoadGraph("画像/ぐー.png");
や関数でインデント(字下げ)してますが、一般的な書き方としてC/C++ではここでインデントしません。
慣習と言って良いと思いますが他の人にも読みやすくなるので独自流は避けられたほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。