新・ゲームプログラミングの館を参考にプログラムを作っています。
ゲームの設計と分割コンパイル(2)のPlayer.cppに簡単な選択画面を作るを組み合わせたいのですが、
途中のif(Key[KEY_INPUT_DOWN]==1)のKeyが定義されていませんと表示されるのですが、これは何故でしょうか⁇ifの前にvoid Player_Update(){を入れると、今度はifやUpdateのあとにある{でエラーが見つかってしまいます。何が原因なのかがわかりません。教えて下さい。
分割コンパイルがうまく出来ません
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 分割コンパイルがうまく出来ません
ゲームの設計と分割コンパイル(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
あとの件は良くわからないのでソースコードを貼ってもらったほうが良いでしょう。
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: 分割コンパイルがうまく出来ません
if(Key[KEY_INPUT_DOWN]==1)と言う使い方が出来ないことは何となくわかりました。
ただ、これ以外の方法でキーを押したら一個下がると言う指示の仕方がわかりません。
他にどんな指示の仕方がありますか⁇
ただ、これ以外の方法でキーを押したら一個下がると言う指示の仕方がわかりません。
他にどんな指示の仕方がありますか⁇
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 分割コンパイルがうまく出来ません
ゲームの設計と分割コンパイル(2)に説明されているKeyboard_Get()関数の使い方で分かりませんか?kiri さんが書きました:if(Key[KEY_INPUT_DOWN]==1)と言う使い方が出来ないことは何となくわかりました。
ただ、これ以外の方法でキーを押したら一個下がると言う指示の仕方がわかりません。
他にどんな指示の仕方がありますか⁇
Key[KEY_INPUT_DOWN]がKeyboard_Get(KEY_INPUT_DOWN)に変わるだけです。
と言うよりC言語の文法レベルの知識の問題なのでC言語を勉強すれば分かります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
kiri
Re: 分割コンパイルがうまく出来ません
#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: 分割コンパイルがうまく出来ません
申し訳ないですが前のトピックも放置状態ですので放置しないようにお願いします。
「通常文字と選択文字 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11229
どちらもC言語の基礎部分の問題ですので、まずC言語の基礎を勉強して頂きたいです。
プログラムの流れ・配列・関数など基礎部分をクリアすれば解決する問題です。
あとインデントもちゃんとしていただくようにお願いします。
●C言語の入門サイトを紹介しておきます。
「苦しんで覚えるC言語」
http://9cguide.appspot.com/
「通常文字と選択文字 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11229
どちらもC言語の基礎部分の問題ですので、まずC言語の基礎を勉強して頂きたいです。
プログラムの流れ・配列・関数など基礎部分をクリアすれば解決する問題です。
あとインデントもちゃんとしていただくようにお願いします。
●C言語の入門サイトを紹介しておきます。
「苦しんで覚えるC言語」
http://9cguide.appspot.com/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 分割コンパイルがうまく出来ません
なぜ関数がないのkiri さんが書きました:一応、変えてみましたがまだ出来ません。
まだおかしなところがありますか?
コード載せるなら、せめてコンパイルできるものを載せてください。
そもそも前の質問ではWinMainの関数がありましたが今回は関数名自体がない…
本当に大丈夫かなと思っちゃいますよ?
前の質問にレスつけないで、さらに悪いコードを載せるようじゃ…ね
written by へにっくす