Home > バグ Archive

バグ Archive

ゼルダもたまにはバグる

DSのゼルダやってました。ま、ゼルダといえどたまにはバグるようですよ。

1.概要
ゼルダDS(夢幻の砂時計)をやってたらバグって悲しかった。

2.環境
DS本体:DSLiteネイビーブルー
残電池:十分(緑色ランプ点灯)
プレイ状況:30分プレイ→30分スリープ(電源入れたままDSの蓋閉めた状態)→1時間プレイ

3.バグ発生前後のプレイ

  • メイズ島で中級を開始
  • 5個目までボヨヨンたたく
  • 時間切れまさにそのときに6個目のボヨヨンをたたく
  • ボヨヨンへのズームアップ後、フリーズ(メッセージは出ず、背景は動いていた。)

4.バグ発生後の対処
電源OFFするしかなかった。

5.考察
ゲーム難易度(今回は中級)は関係ない可能性が高い。問題はボヨヨンをたたいたタイミングだと思われる。

6.まとめ
「ん?止まったな。えーと、セーブセーブ。・・・セーブ。できねぇ!いつセーブしたっけ?え、してねぇ!動け!動け!なぜ動かん!?・・・ぐふっ!」

以上

最近ハマッタarray_multisort()

array_multisort()は多次元配列をソートするわけだけども、ソートするキーの配列を作らないといけないのでめんどくさい。 (横配列→縦配列) そういうわけで下のようなものを作った。


/**
* $array = array(
*                 array('a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4),
*                 array('a' => 4, 'b' => 3, 'c' => 2, 'd' => 1, 'e' => 0),
*                 array('a' => 2, 'b' => 3, 'c' => 4, 'd' => 0, 'e' => 1),
*                 array('a' => 0, 'b' => 4, 'c' => 3, 'd' => 2, 'e' => 1)
*          );
* multi_sort($array, 'a', SORT_ASC, 'b', SORT_DESC);
*
* @param &$array 多次元配列
* @param ... key1 [SORT_ASC|SORT_DESC] key2 [SORT_ASC|SORT_DESC] ...
*/
function multi_sort(&$array) {
    $args = func_get_args();
    $argc = func_num_args();
    $data = array();
    foreach ($array as $key => $val) {
        for ($i = 1; $i < $argc; $i+=2) {
            if (!array_key_exists($args[$i], $data)) $data[$args[$i]] = array();
                $data[$args[$i]][$key] = $val[$args[$i]];
            }
        }

        $arg_str = "";
        for ($i = 1; $i < $argc; $i+=2) {
            $arg_str .= '$data[' . "{$args[$i]}" . ']' . ",";
            $arg_str .= "{$args[$i+1]},";
        }
    }
    
    $array_str = '&$array';
    if (!eval("return array_multisort($arg_str $array_str);")) {
        return false;
    }
    return true;
}

しかし、これでハマッタわけで。 array_multisort()の最後の引数に配列のリファレンスやグローバル変数を渡すとソートされないらしい(PHP4)。でもリファレンスを渡すといいらしい。 なもんで、最初 $array_str = ‘$array’; としていたので上手くソートされずにムキィ!となったとさ。キーワード:php,array_multisort,ソート,多次元配列ソート,バグ

Home > バグ Archive

Search
Feeds
Meta
 合計:016026
 今日:0024 昨日:0168

Return to page top