C/C++ゲーム製作総合スレッド Part3

このエントリーをはてなブックマークに追加
817名前は開発中のものです。
お知恵をお借りしたく質問させていただきます

 1
4 2
 3

ジョイパッドのボタン配置変更についてなのですが、
例えば、1のボタンを2に変更したとします
その時、同じボタンが存在しているのは不自然なので
2のボタンを1のボタンに変更させるわけですが、
これを考えれば考えるほどややこしくなります

1と2だけで考えるなら簡単ですが、
例えば1を3にして、3を1に変更、
さらに1に変更した3を2に変更する、
すると2は1に変更される
818名前は開発中のものです。:2013/05/24(金) 04:11:44.35 ID:Z+dxyWG0
プレイヤーが制作者の意図する順にボタンを変更してくれるなら
組むのは簡単ですが、どの順番でどのボタンをどのボタンに変更するのかは
その時のプレイヤーの気分次第です

 1
4 2
 3

もしかすると、4を3に変更して
3が4になり、
2を1にして、1が2になり、
「やっぱやーめた」と言って
2になった1を1に戻し、1になった2は2に戻り、
4になった3を2に変更することにして、2が4になることもある

このように片方のボタンを別のボタンにした時に、
その変更前のボタンを自動的にそのボタンに変更する
というプログラムに頭を悩まされています
お知恵をお借りできればと思い質問させていただきました
819名前は開発中のものです。:2013/05/24(金) 04:31:56.16 ID:Z+dxyWG0
 1
4 2
 3

1.1を2にすると2を1に変更する
2.1を3にすると3を1に変更する
3.1を4にすると4を1に変更する
4.2を1にすると1を2に変更する
5.2を3にすると3を2に変更する
6.2を4にすると4を2に変更する
7.3を1にすると1を3に変更する
8.3を2にすると2を3に変更する
9.3を4にすると4を3に変更する
10.4を1にすると1を4に変更する
11.4を2にすると2を4に変更する
12.4を3にすると3を4に変更する
820名前は開発中のものです。:2013/05/24(金) 04:37:39.35 ID:Z+dxyWG0
ノーマルで考えるならこういうことになるのだが、
これは、それぞれのボタンがそれぞれのボタンの時のものです
1が2や3や4になっていたり、
2が1や3や4になっていたり、
3が1や2や4になっていたり、
4が1や2や3になっている場合もある
それらのパタンもすべて考えると、かなりたくさんの条件式になってしまうので、
もっと短く簡潔にできないかなと考えています。

ボタンは4つしかないのです
片方を別のボタンに変更したら、変更前のボタンを変更後ボタンが
元あった場所のボタンに自動的に変更させる
という仕組みを考えれば考えるほどややこしくなるぜ
821名前は開発中のものです。:2013/05/24(金) 07:22:21.97 ID:W28pQXpz
もしかしたら全ボタン2にしたいかもしれないのでそのままにする!
やった!かっちょよく決まった!
822名前は開発中のものです。:2013/05/24(金) 08:21:18.83 ID:yphWCsM0
変更前のボタンを一時的に記憶する。

ボタンを変更する。

変更後のボタンと重複してるのをループで探す。
(さっき変更したところはスキップ)

見つけたらそこを一時的に記憶したので上書きする。
823名前は開発中のものです。:2013/05/24(金) 09:15:11.43 ID:nzV7r7Pm
単純にボタン番号をスワップしてるだけにしか見えないんだが
複雑になるのか?
824名前は開発中のものです。:2013/05/24(金) 10:23:10.91 ID:cwmzJ29T
何を悩んでるのかがわからないw

初期状態が、
ButtonMap[0]=1
ButtonMap[1]=2
ButtonMap[2]=3
ButtonMap[3]=4
で、これを入れ替えるとすると、
たとえばswap(&ButtonMap[1],&ButtonMap[3])で、2と4を入れ替えて
ButtonMap[0]=1
ButtonMap[1]=4
ButtonMap[2]=3
ButtonMap[3]=2
になるとかいう話じゃなかったりするのか?
825名前は開発中のものです。:2013/05/24(金) 10:56:49.19 ID:Z+dxyWG0
>>821
同じ機能のボタンが2つ以上ある案は俺も考えた
それならもう完成している
だが、それだと不親切なゲームだと思うので却下したい

タイトル画面
ttp://livedoor.blogimg.jp/winpg/imgs/7/0/707953a4.png
コンフィグ画面
ttp://livedoor.blogimg.jp/winpg/imgs/d/f/df6687f0.png
ボタン設定変更画面

コンフィグ画面のすべての機能は完成していて
ボタン設定変更画面も一応は完成しているのだが
片方のボタンを変更したら、別のボタンが変わるという仕組みに苦戦
826名前は開発中のものです。:2013/05/24(金) 11:02:17.17 ID:u2VY/BUA
プッ
827名前は開発中のものです。:2013/05/24(金) 11:07:34.44 ID:Z+dxyWG0
ボタン設定変更画面
ttp://livedoor.blogimg.jp/winpg/imgs/7/e/7ea8fac8.png

肝心な画像がぬけていた

>>822
その案をプロミング言語に置き換えた時に
どのように組めばいいのかをよく考えてみるよ

>>824
まあそういうことなんだけど
それをプログラミング言語で組む場合は簡単には行かないんだ
上の画面で完成しているのは、画面の表示内容を変更させるまでのもので
最後に「決定」を選択することで、そのボタン配置に変更される