分割コンパイルがうまく出来ません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kiri

分割コンパイルがうまく出来ません

#1

投稿記事 by kiri » 13年前

新・ゲームプログラミングの館を参考にプログラムを作っています。
ゲームの設計と分割コンパイル(2)のPlayer.cppに簡単な選択画面を作るを組み合わせたいのですが、
途中のif(Key[KEY_INPUT_DOWN]==1)のKeyが定義されていませんと表示されるのですが、これは何故でしょうか⁇ifの前にvoid Player_Update(){を入れると、今度はifやUpdateのあとにある{でエラーが見つかってしまいます。何が原因なのかがわかりません。教えて下さい。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルがうまく出来ません

#2

投稿記事 by softya(ソフト屋) » 13年前

ゲームの設計と分割コンパイル(2)ではkeyはm_Keyとなりstaticでファイル内スコープにしていますので、Keyboard_Get()関数を使ってしかアクセス出来ません。
if(Key[KEY_INPUT_DOWN]==1)と言う使い方そのものができなくなります。

こちらも参考にしてください。
「分割の定石」
http://homepage3.nifty.com/mmgames/c_guide/20-02.html
「変数の寿命とアロケーション - mkubara.com」
http://mkubara.com/index.php/%E5%A4%89% ... 7%E3%83%B3

あとの件は良くわからないのでソースコードを貼ってもらったほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kiri

Re: 分割コンパイルがうまく出来ません

#3

投稿記事 by kiri » 13年前

if(Key[KEY_INPUT_DOWN]==1)と言う使い方が出来ないことは何となくわかりました。
ただ、これ以外の方法でキーを押したら一個下がると言う指示の仕方がわかりません。
他にどんな指示の仕方がありますか⁇

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルがうまく出来ません

#4

投稿記事 by softya(ソフト屋) » 13年前

kiri さんが書きました:if(Key[KEY_INPUT_DOWN]==1)と言う使い方が出来ないことは何となくわかりました。
ただ、これ以外の方法でキーを押したら一個下がると言う指示の仕方がわかりません。
他にどんな指示の仕方がありますか⁇
ゲームの設計と分割コンパイル(2)に説明されているKeyboard_Get()関数の使い方で分かりませんか?
Key[KEY_INPUT_DOWN]がKeyboard_Get(KEY_INPUT_DOWN)に変わるだけです。
と言うよりC言語の文法レベルの知識の問題なのでC言語を勉強すれば分かります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kiri

Re: 分割コンパイルがうまく出来ません

#5

投稿記事 by kiri » 13年前

コード:

#include "DxLib.h"
#include "Keyboard.h"
typedef struct{
	int x,y;
	char name[128];
}
MenuElement_t;
MenuElement_t MenuElement[2]={
	{80,100,"ゲームスタート"},
	{100,200,"ゲーム終了"},
};
int SelectNum=0;
void Player_Update(){
if(Keyboard_Get[KEY_INPUT_DOWN]==1){
	SelectNum=(SelectNum+1)%2;
	for(int i=0; i<2; i++){
		if(i==SelectNum){
		MenuElement[i].x=80;
	}else{
		MenuElement[i].x=100;
		}
	}
}
for(int i=0; i<2; i++){
	DrawFormatString(MenuElement[i].x,MenuElement[i].y,GetColor(0,0,255),MenuElement[i].name);
}

	DeleteGraph(SelectNum);
}
一応、変えてみましたがまだ出来ません。
まだおかしなところがありますか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルがうまく出来ません

#6

投稿記事 by softya(ソフト屋) » 13年前

申し訳ないですが前のトピックも放置状態ですので放置しないようにお願いします。

「通常文字と選択文字 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11229

どちらもC言語の基礎部分の問題ですので、まずC言語の基礎を勉強して頂きたいです。
プログラムの流れ・配列・関数など基礎部分をクリアすれば解決する問題です。
あとインデントもちゃんとしていただくようにお願いします。

●C言語の入門サイトを紹介しておきます。
「苦しんで覚えるC言語」
http://9cguide.appspot.com/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: 分割コンパイルがうまく出来ません

#7

投稿記事 by へにっくす » 13年前

kiri さんが書きました:一応、変えてみましたがまだ出来ません。
まだおかしなところがありますか?
なぜ関数がないの
コード載せるなら、せめてコンパイルできるものを載せてください。
そもそも前の質問ではWinMainの関数がありましたが今回は関数名自体がない…
本当に大丈夫かなと思っちゃいますよ?
前の質問にレスつけないで、さらに悪いコードを載せるようじゃ…ね
written by へにっくす

閉鎖

“C言語何でも質問掲示板” へ戻る