はじめまして。初心者ですが最近このサイトをみながら1からシューティングを作っているのですが分割コンパイルでの移動範囲の限定ができなくて困ってます。
なにかヒントかアドバイスいだたけないでしょうか?
シューティングの移動範囲
Re: シューティングの移動範囲
分割コンパイルがうまくいかないのでしょうか?
それとも移動範囲の限定ができないのでしょうか?
もしくは2つとも困っているのでしょうか?
どんなロジックを書いて、どううまくいかないのか、一度整理してみることを強くオススメします。
それとも移動範囲の限定ができないのでしょうか?
もしくは2つとも困っているのでしょうか?
どんなロジックを書いて、どううまくいかないのか、一度整理してみることを強くオススメします。
Re: シューティングの移動範囲
これはホントに初心者にありがちな感じですね(苦笑)
フォーラムルールにも書いてあいますが、具体的にどこが分からないのか
自分はどういう方法で実装しようとしてどこで躓いたのか
などなど、質問の内容を具体的にしてくれた方がこちらとしてもアドバイスしやすいです。
今回の場合でも移動制御の部分で躓いたのか、コードを分割するところで躓いたのか全く分かりません。
制御に関しては
単純に自機の座標を随時チェックして、決められた範囲外に出ないようにしてやればいいと思います
こちらなども参考になると思います。
http://dixq.net/rp/9.html
フォーラムルールにも書いてあいますが、具体的にどこが分からないのか
自分はどういう方法で実装しようとしてどこで躓いたのか
などなど、質問の内容を具体的にしてくれた方がこちらとしてもアドバイスしやすいです。
今回の場合でも移動制御の部分で躓いたのか、コードを分割するところで躓いたのか全く分かりません。
制御に関しては
単純に自機の座標を随時チェックして、決められた範囲外に出ないようにしてやればいいと思います
こちらなども参考になると思います。
http://dixq.net/rp/9.html
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ
Re: シューティングの移動範囲
今わからないのはキャラが枠内から出ないようにすることです
// 動きを計算する
void Player_Calc(){
if(Keyboard_Get(KEY_INPUT_RIGHT)>0){
m_x++;
}
if(Keyboard_Get(KEY_INPUT_LEFT)>0){
m_x--;
}
if(Keyboard_Get(KEY_INPUT_UP)>0){
m_y--;
}
if(Keyboard_Get(KEY_INPUT_DOWN)>0){
m_y++;
}
if(m_x<10 || m_x>FIELD_MAX_X-10 || m_y<5 || m_y>FIELD_MAX_Y-5) ←
}
矢印の範囲から出ないようにしたいんですが、MAX_X=384,MAx_Y=448です。
void Player_Calc(){
if(Keyboard_Get(KEY_INPUT_RIGHT)>0){
m_x++;
}
if(Keyboard_Get(KEY_INPUT_LEFT)>0){
m_x--;
}
if(Keyboard_Get(KEY_INPUT_UP)>0){
m_y--;
}
if(Keyboard_Get(KEY_INPUT_DOWN)>0){
m_y++;
}
if(m_x<10 || m_x>FIELD_MAX_X-10 || m_y<5 || m_y>FIELD_MAX_Y-5) ←
}
矢印の範囲から出ないようにしたいんですが、MAX_X=384,MAx_Y=448です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: シューティングの移動範囲
codeタグを失敗しているので、事前にプレビューして確認してくださいね。
あとで
if(m_x<10 || m_x>FIELD_MAX_X-10 || m_y<5 || m_y>FIELD_MAX_Y-5) ←
で一気に確認するんじゃなくて、m_x++;とかの直後に範囲内か確認すれば簡単だと思います。
あとで
if(m_x<10 || m_x>FIELD_MAX_X-10 || m_y<5 || m_y>FIELD_MAX_Y-5) ←
で一気に確認するんじゃなくて、m_x++;とかの直後に範囲内か確認すれば簡単だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: シューティングの移動範囲
加算や減算の直後に入れてみましたがうまくいきませんでした。どう変えればいいでしょうか?
// 動きを計算する
void Player_Calc(){
if(Keyboard_Get(KEY_INPUT_RIGHT)>0){
m_x++<10 && m_x++>FIELD_MAX_X-10;
}
if(Keyboard_Get(KEY_INPUT_LEFT)>0){
m_x--<10 && m_x-->FIELD_MAX_X-10;
}
if(Keyboard_Get(KEY_INPUT_UP)>0){
m_y--<5 && m_y-->FIELD_MAX_Y-5;
}
if(Keyboard_Get(KEY_INPUT_DOWN)>0){
m_y++<10 && m_x++>FIELD_MAX_X-10;
}
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: シューティングの移動範囲
これだと期待した効果はありません。
あとこの使い方は、後置インクリメントを使うとうまく動きません。
もう少しC言語の学習をされた方が良いと思います。
参考例。
あとこの使い方は、後置インクリメントを使うとうまく動きません。
もう少しC言語の学習をされた方が良いと思います。
参考例。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る: