HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1023
モツ2次元配列の1次元目のみを他の2次元配列の1次元目にコピーする方法5未解決


モツ

リンク

2018/10/23(Tue) 17:26:38|NO.85669

ゲームでのユニットステータスをPT内から待機場所に移す際に、2次元配列で作成した好感度の保持方法で悩んでおります。

好感度は

好感度.対象ユニットID.PT内自IDという形で設定しています。

待機場所に移す際に、

好感度.対象ユニットID.待機場所自ID

と言う形でコピーしてやりたいのですが、PT内のIDと待機場所でのID割り振りが異なっており、配列まるごとのコピーでは都合が悪い状態です。

PT内自IDの変数を指定してやり、指定した待機場所時IDの変数に好感度.対象ユニットIDの部分をコピーしてやるにはどういった方法を取ればよろしいでしょうか?



この記事に返信する


とあるプログラマ

リンク

2018/10/23(Tue) 18:02:04|NO.85671

ええと、少し分からなかったので質問良いですか?
まず2次元配列ということですが、「好感度.対象ユニットID.PT内自ID」という表現をしているので おや?と思いまして。
「好感度」は恐らく数値で変数名ではないとは思うのですが、これだと3次元配列のような気がするのですが…

それと「PT内自IDの変数を指定してやり、指定した待機場所時IDの変数に好感度.対象ユニットIDの部分をコピーしてやる」とありますが、
これはPT内自IDと待機場所自IDが異なっているということではどう変数(待機場所自ID)の検索を行うのでしょうか。
私の勝手な解釈通りだとユーザーがPT内自ID(キャラ?)またはそれに準ずるものを選択してさらに、待機場所のIDも指定するということでしょうか?
例: PT内の4番目のキャラ(のID)を選択→待機場所で何らかの自IDを指定?

また「対象ユニットID」とはどういったIDなのでしょうか?当方RPG等のゲームの知識が乏しいため不自然な質問でしたら申し訳ないです。
私はポケモンのボックス的なものを想像しているのですが、間違っていたら指摘お願いします。



モツ

リンク

2018/10/23(Tue) 18:59:13|NO.85672

>>とあるプログラマさん
すいません、知識不足でした。おっしゃるとおり3次元配列です

解釈どおりです。ポケモンで例えるならば、PT内の1〜6番目でPT内自IDを使用しており、BOX内で待機場所自IDを使用するという形です。

PT内のn番目を指定し、BOX内のN番目にコピーしてやると言う方式にしたいのです。

対象IDはキャラクターの管理IDです。PT内番号で指定してしまうと、並び替え時にずれてしまうので、
各キャラクターに個別のIDを与えているのですが、ステータスなどはPT内のナンバーで管理している形式です。
(スマートではないのですが、リアルタイムで動作させている部分もあり、ID基準にしてしまうとメイン動作中のrepeat回数が膨大になってしまうので、PT内でのナンバーのみとしています)



さか

リンク

2018/10/23(Tue) 22:04:14|NO.85673

具体的になにが問題なのかわからないところです。
こうしたいと言うのを以下のようにシンプルに記述してみたらどうでしょうか。

[PT]          [待機場所]
ユニットID. PTID    ユニットID. 待機場所ID
  C     1      E     1
  A     2      J     2 
  H     3      K     3
             P     4
              N     5    

例えば、上記の状態でユニットID CとJを入れ替えたい場合はこうなりたいと
いうのを記述してみたらいかがでしょう。



モツ

リンク

2018/10/23(Tue) 22:12:31|NO.85674

好感度数値用変数.他ユニットID用変数.PT内NO用変数

好感度数値用変数.他ユニットID用変数.BOX内NO用変数

にコピーしてやりたいのです……


*好感度数値異様変数は0〜1000の配列変数

*他ユニットID用変数は0〜9999の配列変数

*PT内NO用変数、BOX内NO用変数は0〜160の配列変数
です



とあるプログラマ

リンク

2018/10/25(Thu) 17:55:42|NO.85697

コンテスト製作のため返信遅れました。
こういうことでしょうか?違ってたらすみません。

randomize screen 0 koukando=0 ;インプット好感度 UnitID=0 ;インプットユニットID PTNo=0 ;インプットPT内NO BOXNo=0 ;インプットBOX内NO Charas=0 ;作ったキャラの数 兼ID CharaNum=0 ;インプットキャラID dim PTCharaInfo,3,32 ;PT内キャラの情報 dim BOXCharaInfo,3,32 ;BOX内キャラの情報 //ユニットIDが最大9999だけど配列を10000も取ったらメモリがやばいので //今は32取る // 1次元目 // 3要素の中身 (3次元では無かったです。すみません) // 好感度 . ユニットID . PT/BOX内ID // 0 1 2 // // 2次元 // _________________________________________________________ // | | | キャラ1 | キャラ2 | キャラ3 | キャラ4 | // |======================================================== // 1 | 0 |好感度 | XX | XX | XX | XX | // 次 |-------------------------------------------------------- // 元 | 1 |ユニットID| XX | XX | XX | XX | // |-------------------------------------------------------- // | 2 |PT/BOX ID | XX | XX | XX | XX | // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pos 10,10 input koukando,80,20,4 mes "好感度" pos 100,10 input UnitID,80,20,4 mes "ユニットID" pos 200,10 input PTNo,80,20,3 mes "PT内NO" pos 300,10 objsize 160,20 button gosub "キャラ作成!",*makechara pos 480,10 button gosub "ランダム",*random pos 10,70 input CharaNum,80,20,2 mes "呼び出しキャラID" pos 200,70 input BOXNo,80,20,3 mes "BOX内NO" pos 300,70 button gosub "BOX内NOにコピー",*copy2box pos 10,150 ;mesの初期座標 stop *makechara ;キャラ作成 PTCharaInfo(0,Charas)=koukando ;キャラの好感度を格納 PTCharaInfo(1,Charas)=UnitID ;キャラのユニットIDを格納 PTCharaInfo(2,Charas)=PTNo ;キャラのPT内NOを格納 mes "キャラ作成 ID("+(Charas)+") 好感度=("+koukando+") ユニットID=("+UnitID+") PT内NO=("+PTNo+")" Charas++ ;作ったキャラの数を増やす return *copy2box ;BOXにコピー ;キャラ未作成か指定のIDのキャラが未作成なら戻る if Charas=0 | CharaNum>Charas: mes "キャラが作成されてません" : return BOXCharaInfo(0,CharaNum)=PTCharaInfo(0,CharaNum) ;BOX変数にキャラの好感度をコピー BOXCharaInfo(1,CharaNum)=PTCharaInfo(1,CharaNum) ;BOX変数にキャラのユニットIDをコピー BOXCharaInfo(2,CharaNum)=BOXNo ;BOX変数にキャラのBOX内NOを格納 mes "キャラ   ID("+CharaNum+")のデータをコピー" mes "コピー元PT内NO=("+PTCharaInfo(2,CharaNum)+") コピー先BOX内NO=("+BOXCharaInfo(2,CharaNum)+")" ;コピー先BOX内NOはBOXNoと同じだがコピーされたことを確認するためにこっちを表示 return *random ;ランダムに数値を設定 objprm 0,rnd(1001) objprm 1,rnd(10000) objprm 2,rnd(161) if Charas : objprm 5,rnd(Charas) ;rnd(0)はエラーになる objprm 6,rnd(161) return



ONION software Copyright 1997-2023(c) All rights reserved.