質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

Q&A

4回答

3186閲覧

順番が変動する度に整理したい。

MadZetton

総合スコア10

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

0グッド

0クリップ

投稿2016/11/28 09:56

###順番が変動する度に順番を整理したい。
ターン制RPGゲームを作っているのですが、魔法などで行動順が変動した場合、
どのように行動順を整理すれば良いですか?
ターン開始時の「すばやさ」で行動順を決めることはできるのですが、
このやり方だと、そのターンの中で「すばやさ」が変動した場合も「すばやさ」の変動
が無視され、ターン開始時に決定された行動順で実行されてしまいます。

要約すると、「行動順の変動に対応したい」ということです

幼稚な質問かと思いますが、何かアルゴリズムとかありますか?
わかりにくい箇所がありましたら、ご指摘お願いします。

###発生している問題・エラーメッセージ
すばやさが変動する度に行動順を整理したい。

###該当のソースコード
C++
C言語
BluePrint

###試したこと
自分なりにプログラムを考え、コンパイルしたところ、同じキャラが二回動いてしまうバグに見舞われました

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

1:行動が終わるたびにすばやさチェックを行う
2:早いもの順に並び替え
3:この際に行動が終わっているやつは除く

1、2は既に作成しているものが使えるでしょう
3だけ新規に作成かな
結果、ターン開始、途中に関わらず、1、2、3は常に行うことになる

投稿2016/11/28 13:32

ardin

総合スコア544

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MadZetton

2016/11/29 05:55

御回答ありがとうございます。解決できました。
MadZetton

2016/11/29 08:46 編集

すいません。ちゃんと解決できていませんでした。 行動順が変動すると、変動したキャラが攻撃してくれなくなりました。 自分はバブルソートで順番を決め、すばやさ順で配列Aに入れていきます。 そして、配列Aの1番目と同じすばやさを持つキャラを探し、攻撃を行わせます。 攻撃が終われば、そのキャラのすばやさを-10000というようなゲームの中で起こり得ない数値に設定することで、除外しました。 何故、行動しなくなったのでしょうか? わかりにくい箇所がありましたら、ご指摘お願いします。
episteme

2016/11/29 10:51

わかりにくいもなにも、コード見せてもらわにゃなんともいえんですよ。
MadZetton

2016/11/29 12:56 編集

すいません。コードというか、UE4のBluePrintというやつですが、よろしいでしょうか?
episteme

2016/11/29 13:19

僕はわからんけど、UE4などなたかが教えてくれるんでないの?
guest

0

「常に素早さで並び替えておき、行動を終えていないものの中で一番素早いやつが動く」でよくね?

投稿2016/11/28 10:47

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MadZetton

2016/11/29 05:55

御回答ありがとうございます。
guest

0

RPGの特殊性を考えて

順番が変動する度に順番を整理する方法を
私なりに考えてみました。

以下詳細です。

==============================================

行動開始前と行動終了のフラグを作成します。

行動開始前のキャラクターの中で一番早いキャラが行動します。
同じ早さの場合どうするかも設定して下さい

戦闘中に順番が変わるのは

・戦闘中にキャラが死ぬ
・戦闘中に行動不能ステータスに陥る
・戦闘中にステータス変動でターンが早く回ってくる

等が挙げられます

ターン制RPGに特殊な連携技などの要素が無ければ
普通は上記の事柄で対応できそうですが

そもそも ”同じキャラが二回動いてしまうバグ”
この事からターンを終了した時に終了フラグを立てずに
自キャラが他キャラより素早さが3倍ぐらい有ると
3回行動できたりするパターンだと思いました。

どんなシステムを作成したいのかによりますが
素早さが早いと2倍、3倍の攻撃力を持つと同義のシステムは
育成面においてややバランスを取るのが難しくお勧めできません
質問者さんがバグ扱いされている事からも
ターン終了時にフラグを立てて全員の行動が終了するのを待つ形にするのが良いと思います。

投稿2017/01/01 23:15

dec5798

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1.各キャラの行動回数でソートする。
2.行動回数が最小のグループの中を素早さ順にソートする。
3.行動して行動回数を+1する。
上記を毎回行うようにすればよいでしょう。

投稿2016/12/28 12:10

TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問