皆様だったらどっちでソースを書きますか?

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

皆様だったらどっちでソースを書きますか?

#1

投稿記事 by 美香 » 15年前

具体的な質問ではないのですが皆様だったら下記の処理をどうやって書きますか?
理由なども教えて頂けますと嬉しいです。

処理内容
・キャラクターの向き(画像)が上下左右の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
//////////////////////////////////////////////////
その他

softya

Re:皆様だったらどっちでソースを書きますか?

#2

投稿記事 by softya » 15年前

こんな感じ。シンプルだしメンテナンス性も高いから。

float 移動ベクトル配列[向きの数];

if(KEY_UP){
向きの修正
}
if(KEY_DOWN){
向きの修正
}
if(KEY_RIGHT){
向きの修正
}
if(KEY_LEFT){
向きの修正
}
移動処理(今の座標+移動ベクトル[向き]) 画像

御津凪

Re:皆様だったらどっちでソースを書きますか?

#3

投稿記事 by 御津凪 » 15年前

私なら、
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

投稿記事 by バグ » 15年前

>>・キャラクターの向き(画像)が上下左右の4方向ある
>>・キャラクターが上下左右の4方向に移動する

これが前提にあるのだから、斜め(縦・横同時)に移動してはマズイのではないかと…
となると…こうかな?
if (KEY_UP)
{
    向きの修正
    移動処理
}
else if (KEY_DOWN)
{
    向きの修正
    移動処理
}
else if (KEY_LEFT)
{
    向きの修正
    移動処理
}
else if (KEY_RIGHT)
{
    向きの修正
    移動処理
}

閉鎖

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