具体的な質問ではないのですが皆様だったら下記の処理をどうやって書きますか?
理由なども教えて頂けますと嬉しいです。
処理内容
・キャラクターの向き(画像)が上下左右の4方向ある
・キャラクターが上下左右の4方向に移動する
この2つを実装するとします。
KEY_UP等は仮の名前でキーが押されたことを意味します。
わかりづらい質問で申し訳ないのですが
ご回答いただけますと嬉しいです。
//////////////////////////////////////////////////
パターン1
//////////////////////////////////////////////////
if(KEY_UP){
向きの修正
移動処理
}
if(KEY_DOWN){
向きの修正
移動処理
}
if(KEY_RIGHT){
向きの修正
移動処理
}
if(KEY_LEFT){
向きの修正
移動処理
}
//////////////////////////////////////////////////
パターン2
//////////////////////////////////////////////////
if(KEY_UP) 向きの修正
if(KEY_DOWN) 向きの修正
if(KEY_RIGHT) 向きの修正
if(KEY_LEFT) 向きの修正
if(KEY_UP) 移動処理
if(KEY_DOWN) 移動処理
if(KEY_RIGHT) 移動処理
if(KEY_LEFT) 移動処理
//////////////////////////////////////////////////
パターン3
//////////////////////////////////////////////////
その他
皆様だったらどっちでソースを書きますか?
Re:皆様だったらどっちでソースを書きますか?
こんな感じ。シンプルだしメンテナンス性も高いから。
float 移動ベクトル配列[向きの数];
if(KEY_UP){
向きの修正
}
if(KEY_DOWN){
向きの修正
}
if(KEY_RIGHT){
向きの修正
}
if(KEY_LEFT){
向きの修正
}
移動処理(今の座標+移動ベクトル[向き])
float 移動ベクトル配列[向きの数];
if(KEY_UP){
向きの修正
}
if(KEY_DOWN){
向きの修正
}
if(KEY_RIGHT){
向きの修正
}
if(KEY_LEFT){
向きの修正
}
移動処理(今の座標+移動ベクトル[向き])

Re:皆様だったらどっちでソースを書きますか?
私なら、
方向が反対のキーが同時に押された時の判断を処理しておかないと動作が(ユーザーに対して)不適切になります。
もしキャラクターの移動に慣性があって、その移動方向に常に向く、というのであれば、
向きの修正はキー入力では判断できませんが、その点はどうなのでしょうか?
処理内容にはキャラクターが指定方向に向く明確な条件(仕様)が書かれていないので気になりました。
if(!(KEY_UP && KEY_DOWN)){ if(KEY_UP){ 向きの修正 移動処理 } if(KEY_DOWN){ 向きの修正 移動処理 } } if(!(KEY_LEFT && KEY_RIGHT)){ if(KEY_LEFT){ 向きの修正 移動処理 } if(KEY_RIGHT){ 向きの修正 移動処理 } }ですね。(パターン1亜種とでもしましょうか)
方向が反対のキーが同時に押された時の判断を処理しておかないと動作が(ユーザーに対して)不適切になります。
もしキャラクターの移動に慣性があって、その移動方向に常に向く、というのであれば、
向きの修正はキー入力では判断できませんが、その点はどうなのでしょうか?
処理内容にはキャラクターが指定方向に向く明確な条件(仕様)が書かれていないので気になりました。
Re:皆様だったらどっちでソースを書きますか?
>>・キャラクターの向き(画像)が上下左右の4方向ある
>>・キャラクターが上下左右の4方向に移動する
これが前提にあるのだから、斜め(縦・横同時)に移動してはマズイのではないかと…
となると…こうかな?
>>・キャラクターが上下左右の4方向に移動する
これが前提にあるのだから、斜め(縦・横同時)に移動してはマズイのではないかと…
となると…こうかな?
if (KEY_UP) { 向きの修正 移動処理 } else if (KEY_DOWN) { 向きの修正 移動処理 } else if (KEY_LEFT) { 向きの修正 移動処理 } else if (KEY_RIGHT) { 向きの修正 移動処理 }