No.1
- 回答日時:
次のようにすれば、実行するたびにランダムな表示になると思います。
%PL ハッシュのキーを配列に入れに入れて、ランダムに並べ替えています。
my @PL_key = keys %PL;
push @PL_key, splice(@PL_key, int(rand $_), 1) foreach reverse 1 .. ($#PL_key + 1);
foreach my $key (@PL_key) {
@VS_VALUES = split(/\,/, $PL{$key});
print $VS_VALUES[5];
}
有難うございます。そして申し訳ございません。
ソースが長くなると思い、短縮して書いたのがいけないようで、
お教えいただいたスクリプトを試してみましたところ、キャラクターが表示されなくなりました。https://sourceforge.jp/projects/dest/files/?rele …
改造しているスクリプトは↑のDestEの deste-stable.1.2.zip になります。改造ファイルはDestEフォルダのscript/battle/battle_sel.cgiの80行目辺りです。
かなり複雑なつくりになっていますので、自分ではどの部分を記載していいかわかりません。以下情報で足りない場合はよろしければスクリプトのご参照をお願いいたします。
ソースは以下の通りとなります。お手数をおかけして大変申し訳ございませんが、よろしくお願いいたします。
&repair('PL');
$first ="checked";
$col = "#efefff";
while(my($key,$val) = each %PL)
{
@VS_VALUES = split(/\s/,$val);
if($form{'vc_name'} eq $VS_VALUES[5] && $key ne $form{'pname'})
{
&repair('VS');
if(!$VS_VALUES[25])
{
$che = $PL_VALUES[31] + vec($key,0,32);
$sel .= "<tr bgcolor=\"$col\"><td><input type=\"radio\" $first name='vsname' value=\"$key\" onclick=\"check_val('$che')\"></td><td><span style=\"color:$VS_VALUES[13];\">$key</span>".&Rank($VS_VALUES[0],$VS_VALUES[6],$VS_VALUES[5])."</td><td><img class='icon'src='$S_Icon_path/$VS_VALUES[27].gif'></td></tr>\n";
if($col eq "#ffffff")
{
$col ="#efefff";
}
else
{
$col = "#ffffff";
}
if ($first)
{
$first = "";
$first_check = $che;
}
}
}
}
No.2
- 回答日時:
No1 です。
間違いがありますので、訂正します。すみません。>配列に入れに入れて --> 配列に入れて
>@VS_VALUES = split(/\,/, $PL{$key}); --> @VS_VALUES = split(/\s/, PL{$key});
No.3ベストアンサー
- 回答日時:
↓このようにすると配列の中身がランダムな順番になります。
@VS_VALUES = shuffle(@VS_VALUES);
# 配列内をシャッフルする関数
sub shuffle {
my @list = @_;
for my $i ( 0 .. $#list ) {
my $rand = int( rand(@list) );
@list[ $i, $rand ] = @list[ $rand, $i ];
}
@list;
}
有難うございます。そして申し訳ございません。
ソースが長くなると思い、短縮して書いたのがいけないようで、
どの部分にどのように@VS_VALUES = shuffle(@VS_VALUES);を記入していいかわからず、うまくいきませんでした。
@VS_VALUES = shuffle(@VS_VALUES); → %PL = shuffle(%PL);
このように置き換えてもみましたが、ランダムに表示されるにはされるのですが、必要でないデーターも呼び出されてしまい、動作がおかしくなってしまいました。せっかくお教えいただいたにもかかわらず、Perl知識がほとんどないため、適用できずに申し訳ございません。
詳細はNo.1の方に記入させていただきました。よろしければお手数をおかけし恐縮でございますが、よろしくお願いいたします。
No.4
- 回答日時:
no3です。
@VS_VALUES = split(/\s/,$val);
の直後に書いて使えば良いはずです。
有難うございます。
@VS_VALUES = split(/\s/,$val);
の直後に書きましたところ、ランダムで表示されるようになったのですが、例えば、常に5人表示されなければならないところで、0~数人と、表示人数もランダムになっています。また、キャラクターデーターとキャラクター画像が合わなくなったり、本来は表示されてはいけないキャラクターも表示されてしまいます。
挿入箇所をいろいろ変えてみましたが、同じようでした。
どのように質問して、どのようなソースを出していいのかあまりよくわかっていないため、申し訳ございません。
No.5
- 回答日時:
No1 です。
軽率に回答してしまったようで、申し訳ありません。while(my($key,$val) = each %PL)
{
@VS_VALUES = split(/\s/,$val);
if($form{'vc_name'} eq $VS_VALUES[5] && $key ne $form{'pname'})
{
&repair('VS');
.....
%PL の呼び出す順番を変更した場合、if($form{'vc_name'} eq $VS_VALUES[5] && $key ne $form{'pname'})
にどのような影響を及ぼすのか %form ハッシュや @VS_VALUES 配列の詳細を把握していないと判断できません。
また、repair('VS'); サブルーチンで %form や @VS_VALUES を書き換えていると推測できますが、どのような
処理をしているのかも分かりません。どうやら私の手には負えないので、前回の回答は撤回したく思います。
有難うございます。
こちらの質問の仕方が悪かったため、ご迷惑をおかけしてしまい、申し訳ございませんでした。
自動登録ソフトによるレベル上げを防止するためにこの改造を行っているのですが、処理が複雑なようですので、もう少し試行錯誤して解決できないようでしたら、もっとPerlを理解できるようになってから再度挑戦してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列のインデックスについて
-
Strawberry Perl for Windows ...
-
Perlで<select multiple>の複数...
-
エクセルVBAでTransposeの不思議
-
Excel VBA ユーザーフォームの...
-
一致する要素が格納されている...
-
2次元配列の扱い
-
文字の整列(printf)
-
perl 配列名変数指定するには
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
リストボックスに縦スクロール...
-
perl このテキストファイルを簡...
-
プログラミングについて。 1つ...
-
文字列を変数名として扱う方法
-
どなたかこのプログラミングを...
-
ネットワークループとルーティ...
-
perlでファイルの拡張子を除い...
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
Excel VBA ユーザーフォームの...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
jcode->jfold で禁則処理
-
VB6で配列の最大値を簡単に求め...
-
perl 配列の要素数について
-
ファイル名に日付・時刻を付与...
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報