- 追加された行はこの色です。
- 削除された行はこの色です。
* 国データの配列化にて… [#t3eb53ae]
- ページ: [[罪罰改造板3]]
- 投稿者: [[玉子]]
- 優先順位: 重要
- 状態: 提案
- 状態: 完了
- カテゴリー: 罪罰管理者の雑談
- 投稿日: 2008-02-02 (土) 12:39:54
- バージョン:
** メッセージ [#f7ca9e9c]
国データの配列化をしようとして、配列化が説明している掲示板を参考にさせていただきましたが、なかなかうまくいきません。
表示部分に最新情報が小分けされて表示されるし、ログデータを確認しても記録された形跡も無く、リセットしてみたらログデータの下に0 0 0 0 0のみの表示です。
これだけでは分かりにくいと思いますが、何方か教えていただけたらありがたく思います。
--------
- ベンツさんのとこの説明をご覧になっているものとして書きます。~
>>各配列内容の区切り文字はスペースです。また、改行文字の「¥n」(¥は半角)が含まれているとそこで改行されてしまうため、改行以降は「次の配列データ」として認識されます。~
>また、読み込み等で変換される記号文字(「,」とか)は内容に含ませないほうが安全です。~
>>どのように導入されているのかが分からないので抽象的ですが、以上のことを踏まえて、配列化しているデータの中にそのような内容を含んでいるということはありませんか? -- [[三毛猫]] &new{2008-02-03 (日) 19:12:45};
- 三毛猫さんありがとうございます。ログデータについて理解できてなかったのでとりあえず改造前のデータを引っ張り出して配列化を試みました。配列化の意味もある程度分かってきましたが、現状ではリセットすると何も起こらないのと状態表示が表示されないの2箇所が機能できていません。状態はログでは正常なのですが表示されないので変換にミスがあるか、リセットはベンツさんの配列化のmain-resetの変更をそのままなのが原因でしょうか? -- [[玉子]] &new{2008-02-04 (月) 08:01:20};
- 症状が抽象的過ぎて。。。「何をして、どうなったのか。」両方きちんと分からないと何とも言えないです。>>それと、ベンツさんのトコのも私のトコのも、そのままコピるのはあまりお勧めできません。(INだったりIMだったりするし。)何をしてるのかの流れを把握して、自分のトコの内容に合わせてアレンジが必要かと思います。 -- [[三毛猫]] &new{2008-02-04 (月) 09:39:24};
- 大まか過ぎてすみません。リセットは$cn1=int(rand(40)+1)*100+5000;等をmy @cn = (0,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500);に変えて元の$cn1=〜等表示の通り消しました所リセットの配列化以外は正常にリセットされてますが配列化したところがリセットされてないです。 -- [[玉子]] &new{2008-02-04 (月) 15:26:22};
- systemの国データ書込みか読み込みが上手くいってないのではないですか? -- [[三毛猫]] &new{2008-02-04 (月) 16:02:26};
- systemの国データ読み込みは
sub cdata_open{
open (IN,"$cdatfile") || &error("国データファイルが開けませんでした",1);
@cdat = <IN>;
@cn= split(/\s+/, $cdat[1]);#国力
@cg= split(/\s+/, $cdat[2]);#財政
@cf= split(/\s+/, $cdat[3]);#蓄米
@cs= split(/\s+/, $cdat[4]);#予備兵
@ce= split(/\s+/, $cdat[5]);#状態
@c = split(/\s+/, $cdat[6]);#参加人数
@ca= split(/\s+/, $cdat[7]);#定員
%CP = '';
my @prats = split(/,/,$cdat[0]);
foreach $prats (@prats){
my($k,$v) = split(/;/,$prats);
$CP{$k} = $v;
}
(他の国データ)
close(IN) or die "Can't close : $!";
}
書き込みは
sub cdat_write{
$cdat =その他の国データ;
open (OUT,">$cdatfile") || &error("open error:$cdatfile",1);
print OUT $cdat;
print OUT "@cn\n";#国力
print OUT "@cg\n";
print OUT "@cf\n";
print OUT "@cs\n";
print OUT "@ce\n";
print OUT "@c\n";
print OUT "@ca\n";
close(OUT) or die "Can't close : $!";
}
となってます。-- [[玉子]] &new{2008-02-04 (月) 17:08:04};
- 問題ないように見えるんですが。。。>>国データファイルの中身にもよるのですが、データが殆ど書き出せていない状態ならば、試しに手動で、すべてのデータが入るであろう項目に0を入れて保存→国データリセットでmain_resetを動かしてみてください。(根拠はないんですけど、うちの場合最初のときにそうしてたので。 -- [[三毛猫]] &new{2008-02-04 (月) 17:42:42};
- 管理画面の国データ編集は正常に書き換えできるようになりましたが、リセットがおかしいのでしょうか?
my @cn = (0,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500); # 国力
my @cg = (0,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200); # 国家予算
my @cf = (0,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500); # 総兵糧
my @cs = (0,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000); # 総兵士数
my @cn = (0,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500,int(rand(40))*100+2500); # 国力
my @cg = (0,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200,int(rand(50))*20+200); # 国家予算
my @cf = (0,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500,int(rand(60))*100+2500); # 総兵糧
my @cs = (0,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000,int(rand(60))*50+2000); # 総兵士数
後はデータがあるのに表示されていない箇所があるので…状態なのですが$ce[1]〜$ce[5]まで表示されず、ためしに$ce[0]を表示してみたら表示されたので意味が分からず… -- [[玉子]] &new{2008-02-04 (月) 17:57:36};
- ログデータの配列部分に手動で0 0 0 0 0 0と入力して国データリセットしましたがすべて変わらず0のままでした… -- [[玉子]] &new{2008-02-04 (月) 18:05:12};
- 0以外を入力して(リセットしないで)、表示はしますか? -- [[三毛猫]] &new{2008-02-04 (月) 18:18:53};
- 状態以外は表示できています。 -- [[玉子]] &new{2008-02-04 (月) 19:08:20};
- 固定モードのままで、固定モードの方は弄ってない、、、って事はないですよね^^;; -- [[三毛猫]] &new{2008-02-04 (月) 19:24:40};
- 一応両方変更はしています。リセットは1:ランダム[多様性高]にしてます。固定は基本以外の国データのリセットの処理事態書き込んでないので^^; -- [[玉子]] &new{2008-02-04 (月) 19:54:05};
- 状態も表示されました。一箇所[]に切り替えを忘れてました。後はリセット… -- [[玉子]] &new{2008-02-04 (月) 21:39:09};
- リセットのmain-resetに普通に$cn[1]=int(rand(40)+1)*100+5000;と書き込んだら書き換えたのですが、my @cn=〜だけでは駄目なのですか?$cn[1]=〜も要るのでしょうか?もしかしたら逆にmy @cn=〜が要らないのでしょうか? -- [[玉子]] &new{2008-02-04 (月) 21:57:52};
- @cn=($cn[0],$cn[1],$cn[2],$cn[3],$cn[4],$cn[5]);←なので、どちらで書いてもおなじです。>>ん。myを外してみるのはやってみました?>myなしでジカに@cn=〜 -- [[三毛猫]] &new{2008-02-05 (火) 13:24:22};
- my @cn=〜のmyを外したら書き換えることが出来ました。myがあったから書込みできなかったのですかね?とりあえずこれで進めてみます。無知な私に付き合っていただき、どうもありがとうございました。 -- [[玉子]] &new{2008-02-05 (火) 13:49:38};
- おめです。私も気が付くのが遅くって。。。orz>myはある意味「その場だけ」の変数の宣言になってしまうので、私もたまにmyで引っかかります。^^;; -- [[三毛猫]] &new{2008-02-06 (水) 12:11:32};
#comment