<?php i18n_http_output("SJIS"); ?>
<?php 
    
/*    PHP Test#04 : MapEditor
        Programmed by FUKAYA Takashi

        *MEMO
        
        主要変数
            basedir        ファイル保存用ベースディレクトリ
        
        DBMファイル (mapedit.dbm)
            auther        作者
            passwd        編集パスワード
            width        横サイズ
            height        縦サイズ
            

        HIDDENパラメータ
            prmX        表示X座標
            prmY        表示Y座標
            prmW        表示横ブロック数
            prmH        表示縦ブロック数
            prmMulti    複数ブロック置き換えモード
            prmBoxsel    ボックス選択モード
            prmDst        移動量

            prmCopyXmin コピー元矩形
            prmCopyXmax コピー元矩形
            prmCopyYmin コピー元矩形
            prmCopyYmax コピー元矩形

            prmPhase    画面状態
                         1:編集
                        10:マップ選択
                        11:新規マップ

            prmMapfile    編集中のマップファイル名

        
        # PHPって変数定義の強制って出来ないのかなあ
    */

    // ==================== PHP DEFINES ====================


    // ==================== PHP FUNCTIONS ====================

    /* ▼ 変数一覧を表示(デバッグ用)
    */
    
function prtvars() {
        echo 
"<HR>\n";
        echo 
"<B>変数一覧 (" count($GLOBALS) . ")</B><BR>\n";
        
reset$GLOBALS );
        while( list( 
$key$value ) = each$GLOBALS ) ) {
               echo 
"$key = $value<br>\n";
        }
         echo 
"<HR>\n";

    } 

    
/* ▼ マップブロックキー作成
    */
    
function MapKey($x,$y) {
        return (string)
$x "_" . (string)$y;
    }

    
/* ▼ マップデータ拡張
    */
    
function ExpandMap($w,$h) {
        global 
$dbmid,$mapw,$maph;

        for (
$x=0$x<$w$x++ ) {
            for (
$y=0$y<$h$y++ ) {
                if ( !
dbmexists$dbmid MapKey($x,$y)) ) dbmreplace$dbmid MapKey($x,$y) , "0");
//                dbmreplace( $dbmid , MapKey($x,$y) , "1");
            
}
        }
        
$mapw $w;
        
$maph $h;
        
dbmreplace$dbmid "width" $mapw);    
        
dbmreplace$dbmid "height" $maph);    

    }

    
/* ▼ マップ選択矩形取得
    */
    
function GetSelectBox() {
        global 
$selXmin,$selYmin,$selXmax,$selYmax,$prmW,$prmH;
        
$selXmin = -1;
        
$selXmax = -1;
        
$selYmin = -1;
        
$selYmax = -1;
        for (
$x=0$x<$prmW$x++ ) {
            for (
$y=0$y<$prmH$y++ ) {
                if ( 
$GLOBALS"chkmap" MapKey($x,$y) ] == "1" ) {
                    if ( 
$selXmin>$x || $selXmin==-$selXmin $x;
                    if ( 
$selXmax<$x || $selXmax==-$selXmax $x;
                    if ( 
$selYmin>$y || $selYmin==-$selYmin $y;
                    if ( 
$selYmax<$y || $selYmax==-$selYmax $y;
                }
            }
        }

    }



    
// ==================== PHP STARTUP CODE ====================
    
    // ● 処理開始
    
$basedir "mapedit/";
    
$msg "";
//    $mapfile = "mapedit.dbm";

    // パラメータ処理
    
if ( empty($prmPhase) ) $prmPhase 11;
//    if ( empty($prmMapfile) ) $prmMapfile = "default";

    
if ( empty($prmW) ) $prmW 15;
    if ( empty(
$prmH) ) $prmH 10;
    if ( empty(
$prmX) || $prmX<$prmX 0;
    if ( empty(
$prmY) || $prmY<$prmY 0;
    if ( empty(
$prmDst) ) $prmDst 5;




    
// ● 画面移動関連処理 (DBオープン前)

    
if  ( $Submit == "マップ選択" ) {
        
$prmPhase 11;
    }

    if  ( 
$Submit == "パスワード変更" ) {
        
$prmPhase 2;
    }

    if  ( 
$Submit == "データエクスポート" ) {
        
$prmPhase 3;
    }

    if  ( 
$Submit == "新規マップ作成" ) {
        
$prmPhase 12;
    }

    
// マップ新規作成画面での処理
    
if ( $prmPhase == 12 ) {
        if  ( 
$Submit == "マップ作成"  ) {
            
// 新規マップ作成
            
            // 値チェック
            
$msg "";
            if ( empty(
$txtMapfile) ) $msg .= "マップ名が入力されていません。<BR>";
            if (  
is_file($basedir .$txtMapfile ".dbm" ) )   $msg .= "同名のマップが既に存在します。<BR>";
            if ( empty(
$txtAuther) ) $msg .= "作者名が入力されていません。<BR>";
            if ( (int)
$txtWidth $msg .= "マップ幅は1以上を指定して下さい。<BR>";
            if ( (int)
$txtHeight $msg .= "マップ高さは1以上を指定して下さい。<BR>";
            if (  
$txtPasswd != $txtPasswd2 $msg .= "パスワードの1つ目と2つ目(確認用)が異なっています。<BR>";
            
            if ( empty(
$msg)  ) {
                
// 新規マップ作成
                
$dbmid dbmopen($basedir $txtMapfile ".dbm" "c");
                if ( 
$dbmid == TRUE ) {
                    
$prmMapfile $txtMapfile ".dbm";
                    
                    
dbmreplace$dbmid "auther" $txtAuther );
                    
dbmreplace$dbmid "passwd" $txtPasswd );
                    
ExpandMap($txtWidth,$txtHeight ); 
                    
                    
dbmclose$dbmid );
                    
$prmPhase 1;        // マップ編集モードへ移行
                
}else{
                    
$msg .= "データベースの作成に失敗しました。<BR>";
                }
            }
        } else if  ( 
$Submit == "キャンセル"  ) {
            
$prmPhase 11;
        }        
    }

    
// マップ選択画面での処理
    
if ( $prmPhase == 11 ) {
        if ( 
$Submit == "マップ編集" ) {
            if (  
is_file($basedir $rbMap ) ||  is_file($basedir $rbMap ".db" ) ) $dbmid2 dbmopen($basedir $rbMap "w");
            if (
$dbmid2 <> ) {
                
$prmMapfile $rbMap;
                
$p dbmfetch$dbmid2 "passwd" );
                if (  
$txtPasswd == $p ) {
                    
// マップ選択成功
                    
$prmPhase 1;
                } else {
                    
$msg "パスワードが違います。";
                }
                
dbmclose$dbmid2 );
            }else{
                
$msg "マップを選択してから[マップ編集]ボタンを押してください。";
            }
        }
    }



    
// ● DBMオープン
    
if ( $prmPhase 10 ) {
        
$dbmid dbmopen($basedir $prmMapfile "w");
        
$mapw = (int) dbmfetch($dbmid,"width");        
        
$maph = (int) dbmfetch($dbmid,"height");
        if ( 
$mapw == || $maph == 0) {  ExpandMap(20,15 ); }
    }else{
        
$dbmid dbmopen(  "__dummy__.dbm""w");
    }

    
// ● ブロックリスト

    
$blk = array(
        
0    =>    "wall_n.gif",

        
1    =>    "wall_c.gif",
        
2    =>    "wall_c2.gif",
        
3    =>    "wall_c3.gif",
        
4    =>    "wall_c4.gif",

        
11    =>    "wall_r.gif",
        
12    =>    "wall_t.gif",
        
13    =>    "wall_l.gif",
        
14    =>    "wall_b.gif",

        
21    =>    "wall_rb.gif",
        
22    =>    "wall_lb.gif",
        
23    =>    "wall_lt.gif",
        
24    =>    "wall_rt.gif",

        
25    =>    "wall_crb.gif",
        
26    =>    "wall_clb.gif",
        
27    =>    "wall_clt.gif",
        
28    =>    "wall_crt.gif",


        
31    =>    "wall_srb.gif",
        
32    =>    "wall_slb.gif",
        
33    =>    "wall_slt.gif",
        
34    =>    "wall_srt.gif",

        
35    =>    "wall_scrb.gif",
        
36    =>    "wall_sclb.gif",
        
37    =>    "wall_sclt.gif",
        
38    =>    "wall_scrt.gif"
    
);


    
// ● ユーザー操作処理
    
if ( $prmPhase == ) {
        
// ■ マップ編集画面
        
        // 実行ボタン
        
if ( $Submit == "サイズ変更" ) {
            if ( (int)
$txtWidth $msg .= "マップ幅は1以上を指定して下さい。<BR>";
            if ( (int)
$txtHeight $msg .= "マップ高さは1以上を指定して下さい。<BR>";

            if (empty( 
$msg ) ) ExpandMap($txtWidth,$txtHeight ); 
        } else if ( 
$Submit == "指定範囲をコピー" ) {
            
GetSelectBox();
            if ( 
$selXmin != -) {
                
$prmCopyXmin $selXmin $prmX;
                
$prmCopyXmax $selXmax $prmX;
                
$prmCopyYmin $selYmin $prmY;
                
$prmCopyYmax $selYmax $prmY;
            }            
        } else if ( 
$Submit == "一括指定" ) {
            if ( 
$putchar == "paste" ) {
                
GetSelectBox();
                if ( 
$selXmin != -&& !empty($prmCopyXmin) ) {
                    for (
$x=$selXmin$x<=$selXmin + ($prmCopyXmax-$prmCopyXmin) ; $x++ ) {
                        for (
$y=$selYmin$y<=$selYmin + ($prmCopyYmax-$prmCopyYmin)  ; $y++ ) {
                            
dbmreplace$dbmid MapKey($x $prmX,$y $prmY) , dbmfetch($dbmidMapKey($x $selXmin $prmCopyXmin,$y $selYmin $prmCopyYmin) )  );
                        }
                    }
                }else{
                    
$msg .= "コピー先座標が指定されていません(コピー先の左上のチェックボックスをチェックしてください)。";
                }
            }else{
                
// 通常
                
if ( $prmBoxsel != "1" ) {
                    for (
$x=0$x<$prmW$x++ ) {
                        for (
$y=0$y<$prmH$y++ ) {
                            if ( 
$GLOBALS"chkmap" MapKey($x,$y) ] == "1" dbmreplace$dbmid MapKey($x $prmX,$y $prmY) , $putchar );
                        }
                    }
                }else{
                    
GetSelectBox();
                    if ( 
$selXmin != -) {
                        for (
$x=$selXmin$x<=$selXmax$x++ ) {
                            for (
$y=$selYmin$y<=$selYmax$y++ ) {
                                
dbmreplace$dbmid MapKey($x $prmX,$y $prmY) , $putchar );
                            }
                        }
                    }
                }
            }
            
        }else if  ( 
$Submit == "上" ) {
             
$prmY -= $prmDst;
        }else if  ( 
$Submit == "下" ) {
             
$prmY += $prmDst;
        }else if  ( 
$Submit == "左" ) {
             
$prmX -= $prmDst;
        }else if  ( 
$Submit == "右" ) {
             
$prmX += $prmDst;

            
        }else if  ( 
$Submit == "XX" ) {

        }

        if ( 
$prmX<$prmX 0;
        if ( 
$prmY<$prmY 0;


        
// ○ マップクリックチェック
        
for ($x=0$x<$prmW$x++ ) {
            for (
$y=0$y<$prmH$y++ ) {
                if ( 
$GLOBALS"map"MapKey($x,$y) . "_x" ] != "" ) {
                    if ( 
$putchar == "paste" ) {
                        if (  !empty(
$prmCopyXmin) ) {
                            for (
$xo=0$xo<= ($prmCopyXmax-$prmCopyXmin) ; $xo++ ) {
                                for (
$yo=0$yo<= ($prmCopyYmax-$prmCopyYmin)  ; $yo++ ) {
                                    
dbmreplace$dbmid MapKey($xo+$x $prmX,$yo+$y $prmY) , dbmfetch($dbmidMapKey($xo $prmCopyXmin,$yo $prmCopyYmin) )  );
                                }
                            }
                        }
                    }else{
                        
// 通常
                        
dbmreplace$dbmid MapKey($x $prmX,$y $prmY) , $putchar );
                    }

                }
            }
        }

    }else if ( 
$prmPhase == ) {
        
// ■ マップ編集画面 - パスワード変更画面
        
        // 実行ボタン
        
if ( $Submit == "決定" ) {
            
            if (  
$txtPasswdNow != dbmfetch$dbmid "passwd" ) ) $msg .= "現在のパスワードが一致しません。<BR>";
            if (  
$txtPasswd != $txtPasswd2 $msg .= "変更後のパスワードの1つ目と2つ目(確認用)が異なっています。<BR>";
            
            if ( empty(
$msg) ) {
                
dbmreplace$dbmid "passwd" $txtPasswd );
                
$msg .= "パスワードを変更しました。<BR>";
                
$prmPhase 1;    // 編集画面へ移行
            
}
            
        }else if ( 
$Submit == "キャンセル" ) {
             
$prmPhase 1;    // 編集画面へ移行
        
}
        

    }else if ( 
$prmPhase == ) {
        
// ■ マップ編集画面 - データエクスポート
        
        // ソース生成
        
$expsrc "";
        
$expsrcext "";
        
$m substr$prmMapfile 0,strlen($prmMapfile)-) ;

        switch (
$select) {
            case 
1:        // CSV形式
                
$expsrc .= $mapw "," $maph "\n";
                for (
$y=0$y<$maph$y++ ) {
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= dbmfetch$dbmid MapKey($x,$y) ) ;
                        if ( 
$x<$mapw-$expsrc .= ","; else $expsrc .= "\n"
                    }
                }
                
$expsrc .= "\n"
                
$expsrcext ".csv";
                break;
                
            case 
2:        // C言語ソース形式
                
$expsrc .= "// マップ名:" $prmMapfile "\n";
                
$expsrc .= "// 作者名  :" dbmfetch($dbmid,"auther") . "\n\n";
                
                
$expsrc .= "#define MAP_" $m "_WIDTH = " $mapw "\n";
                
$expsrc .= "#define MAP_" $m "_HEIGHT = " $maph "\n\n";

                
$expsrc .= "int nMap_" .$m  "[$maph][$mapw]={\n";
                for (
$y=0$y<$maph$y++ ) {
                    
$expsrc .= "\t";
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= dbmfetch$dbmid MapKey($x,$y) ) ;
                        if ( 
$x<$mapw-|| $y<$maph-$expsrc .= ",";  
                    }
                    
$expsrc .= "\n";
                }
                
$expsrc .= "};\n\n"
                
$expsrcext ".c";
                break;
                
            case 
3:        // BASIC(DATA文)ソース形式
                
$expsrc .= "' マップ名:" $prmMapfile "\n";
                
$expsrc .= "' 作者名  :" dbmfetch($dbmid,"auther") . "\n\n";
                
                
$expsrc .= "map_" .$m "_width = " $mapw "\n";
                
$expsrc .= "map_" .$m "_height = " $maph "\n\n";

                
$expsrc .= "LABEL \"" .$m "\"\n";
                for (
$y=0$y<$maph$y++ ) {
                    
$expsrc .= "DATA ";
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= dbmfetch$dbmid MapKey($x,$y) ) ;
                        if ( 
$x<$mapw-$expsrc .= ",";  
                    }
                    
$expsrc .= "\n";
                }
                
$expsrc .= "\n"
                
$expsrcext ".bas";
                break;
                
            case 
4:        // アセンブラ(Z80的)ソース形式
                
$expsrc .= "# MapName:" $prmMapfile "\n";
                
$expsrc .= "# Auther :" dbmfetch($dbmid,"auther") . "\n\n";
                
                
$expsrc .= "# MapSize (Width,Height)\n";
                
$expsrc .= "MAPSIZE_" $m ":\n";
                
$expsrc .= "\tDS\t" $mapw "," $maph "\n\n";

                
$expsrc .= "# MapData\n";
                
$expsrc .= "MAPDATA_" $m ":\n";
                for (
$y=0$y<$maph$y++ ) {
                    
$expsrc .= "\tDB\t";
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= dbmfetch$dbmid MapKey($x,$y) ) ;
                        if ( 
$x<$mapw-$expsrc .= ",";  
                    }
                    
$expsrc .= "\n";
                }
                
$expsrc .= "\n"
                
$expsrcext ".asm";
                break;
                
            case 
5:        // 16進数データ
                
for ($y=0$y<$maph$y++ ) {
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= sprintf("%02X" dbmfetch$dbmid MapKey($x,$y) ) );
                    }
                    
$expsrc .= "\n";
                }
                
$expsrc .= "\n"
                
$expsrcext ".hex";
                break;
                
            case 
6:        // DEFCHAR形式ソース
                
for ($y=0$y<$maph$y++ ) {
                    
$expsrc .= sprintf("POKE BASE + &H%04X , DEFCHR(\"",$y*$mapw);
                    for (
$x=0$x<$mapw$x++ ) {
                        
$expsrc .= sprintf("%02X" dbmfetch$dbmid MapKey($x,$y) ) );
                    }
                    
$expsrc .= "\")\n";
                }
                
$expsrc .= "\n"
                
$expsrcext ".bas";
                break;

                
            default:
                
$expsrc "ソース形式を選択してください";
        }

        if ( 
$chkMakeFile == ) {
            
// ソースファイル作成
            
$fp fopen $basedir $m $expsrcext  "wb");
            
fputs$fp $expsrc );
            
fclose$fp );
        }


        
// 実行ボタン
        
if ( $Submit == "決定" ) {
            
        }else if ( 
$Submit == "キャンセル" ) {
             
$prmPhase 1;    // 編集画面へ移行
        
}
        
    }


    
// ==================== PHP STARTUP CODE END ====================
?>







<!-- ● HTML開始 -->

<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<link rev="made" href="mailto:fukaya@dokokano.com">
<title>PHP TEST#04 : Map Editor</title>
</head>

<body bgcolor="#000000" text="#ffffff" topmargin="0" link="#9999FF" vlink="#FF66FF" alink="#CCCCFF">
<!-- ● タイトル部分 --> 
<table align="center" background="bgCir01.gif" width="90%" border="0" cellspacing="0" >
        <tr>
            <td height="3" bgcolor="#ff0000" ></td>
        </tr>
        <tr align="center"> 
            <td > <font size="-1" color="#ff0000"><font size="+4" color="#FFFFFF"> <font size="+3">PHP 
          TEST#04</font> : MapEditor</font>` <br>
          <?php 
        $tm 
time();
        echo 
"(ただいまの時刻は " date("Y/m/d H:i:s",$tm) . ")"
      
?><br>
          </font> </td>
        </tr>
        <tr>
            <td height="3" bgcolor="#ff0000" ></td>
        </tr>
    </table>


    <div align="center"> <BR>

    <!-- ● 入力フォーム -->

    <form method="post" action="mapedit.php3">

        <?php if ( $prmPhase==11 ) { ?>

        <!-- ■■■■ 11:マップ選択 -->
        <table border="0" width="90%"><tr><td>
            
            <font size="+2">● マップ選択
            </font><br>
            <br>
             編集するマップを選択して [マップ編集]ボタンを押してください。<br>
             ※マップ名の後ろに「*」があるものは、編集パスワードが必要です。<br>
            <br>
            <table width="100%" border="0">
                <tr bgcolor="#666666">
                    <td width="6%"><font size="-1">選択</font></td>
                            <td width="24%"><font size="-1">マップ名</font></td>
                            <td width="19%"><font size="-1">作者</font></td>
                            <td width="12%"><font size="-1">サイズ</font></td>
                            <td width="26%"><font size="-1">最終編集日付</font></td>
                            <td width="13%"><font size="-1">備考</font></td>
                </tr>

                <?php    // マップ一覧
                    
$d dir$basedir );
                    while(
$entry=$d->read()) {
                        
                        if ( 
substr$entry , -) == ".db" ) { // 2001.05.29
                            
$entry substr($entry,0,strlen($entry)-);
                        }
                        
                        if ( 
substr$entry , -) == ".dbm" ) {
                            
$dbmid2 dbmopen($basedir $entry"r");
                
?>
                            
                        <tr bgcolor="#333333">
                                
                            <td width="6%">
                                    
                                <input type="radio" name="rbMap"  <?php echo "value=$entry";  if ($entry==$prmMapfile ) echo " checked"?> >
                                </td>
                            <td width="24%"><?php echo $entry; if (dbmfetch($dbmid2,"passwd")) echo " *";  ?></td>
                            <td width="19%"><?php echo dbmfetch($dbmid2,"auther"); ?></td>
                            <td width="12%"><?php echo dbmfetch($dbmid2,"width") . "x" dbmfetch($dbmid2,"height"); ?></td>
                            <td width="26%"><?php $tm=filemtime($basedir $entry); echo date("Y/m/d H:i:s",$tm); ?></td>
                            <td width="13%"> </td>
                        </tr>
                <?php
                            dbmclose
$dbmid2 );
                        }
                    }
                
?>
            </table>        
            <div align="center">
                        <p><BR>
            
                            <input type="submit" name="Submit" value="マップ編集">
                (<font size="-1">編集パスワード 
                </font>
                            <input type="password" name="txtPasswd">
                            )
                </p>
                        <p>
    
                            <input type="submit" name="Submit" value="新規マップ作成">
                <br>
                <br>
                <font size="+1" color="#FF3333"><b><?php echo $msg ?>
                </b></font><BR>

            </p>
                    </div>
        
        </td></tr></table>


        <?php } else if ( $prmPhase==12 ) { ?>
        <!-- ■■■■ 12:新規マップ作成 -->
        <table border="0" width="90%">
            <tr>
                <td>


                    <div align="left"><font size="+2">● 新規マップ作成</font><br>
                        <br>
                         作成するマップの情報を入力して [マップ作成]ボタンを押してください。<br>
                        <br>
                    </div>
                    <div align="center">
                        
            <table border="0" width="442">
              <tr>
                                
                <td bgcolor="#666666">
<div align="right">マップ名</div></td>
                                
                <td bgcolor="#333333">
<input type="text" name="txtMapfile"  <?php echo "value=$txtMapfile"?> > .dbm</td>
                            </tr>
                            <tr>                        
                                
                <td bgcolor="#666666">
<div align="right">作者名</div></td>
                                
                <td bgcolor="#333333">
<input type="text" name="txtAuther"  <?php echo "value=$txtAuther"?>   ></td>
                            </tr>
                            <tr>
                                
                <td bgcolor="#666666">
<div align="right">マップ幅サイズ</div></td>
                                
                <td bgcolor="#333333">
<input type="text" name="txtWidth" size="4"  <?php echo "value=$txtWidth"?>  >ブロック</td>
                            </tr>
                            <tr>
                                
                <td bgcolor="#666666">
<div align="right">マップ高さサイズ</div></td>
                                
                <td bgcolor="#333333">
<input type="text" name="txtHeight" size="4"  <?php echo "value=$txtHeight"?>  >ブロック</td>
                            </tr>
                            <tr>
                                
                <td bgcolor="#666666">
<div align="right">パスワード</div></td>
                                
                <td bgcolor="#333333">
<input type="password" name="txtPasswd"> (省略可能)</td>
                            </tr>
                            <tr>
                                
                <td bgcolor="#666666">
<div align="right">パスワード(確認)</div></td>
                                
                <td bgcolor="#333333">
<input type="password" name="txtPasswd2"></td>
                            </tr>
                        
                        </table>
                        <br>
                        <input type="submit" name="Submit" value="マップ作成"> <input type="submit" name="Submit" value="キャンセル"><BR>

                        <br>
                        <font size="+1" color="#FF3333"><b><?php echo $msg ?></b></font><BR>            
                    </div>
                </td>
            </tr>
        </table>


        <?php } else if ( $prmPhase==) { ?>
        <!-- ■■■■ マップ編集:パスワード変更 -->

        <table border="0" width="90%">
            <tr>
                <td>


                    <div align="left"><font size="+2">● パスワード変更</font><br>
                        <br>
                         パスワードを変更します。(確認のため同じパスワードを2つ入力してください)<br>
                        <br>
                    </div>
                    <div align="center">
                        <table border="0" width="442">
                            
                            <tr>
                                <td bgcolor="#666666"><div align="right">マップ名</div></td>
                                <td bgcolor="#333333"><?php echo $prmMapfile?></td>
                            </tr>
                            <tr>                        
                                <td bgcolor="#666666"><div align="right">作者名</div></td>
                                <td bgcolor="#333333"><?php echo dbmfetch($dbmid,"auther"); ?></td>
                            </tr>
                            <tr>
                                <td bgcolor="#666666"><div align="right">現在のパスワード</div></td>
                                <td bgcolor="#333333"><input type="password" name="txtPasswdNow"></td>
                            </tr>
                            <tr>
                                <td bgcolor="#666666"><div align="right">変更後のパスワード</div></td>
                                <td bgcolor="#333333"><input type="password" name="txtPasswd"></td>
                            </tr>
                            <tr>
                                <td bgcolor="#666666"><div align="right">変更後のパスワード(確認)</div></td>
                                <td bgcolor="#333333"><input type="password" name="txtPasswd2"></td>
                            </tr>
                        
                        </table>
                        <br>
                        <input type="submit" name="Submit" value="決定"> <input type="submit" name="Submit" value="キャンセル"><BR>

                        <br>
                        <font size="+1" color="#FF3333"><b><?php echo $msg ?></b></font><BR>            
                    </div>
                </td>
            </tr>
        </table>


        <?php } else if ( $prmPhase==) { ?>
        <!-- ■■■■ マップ編集:データエクスポート -->

        <table border="0" width="90%">
            
      <tr align="left"> 
        <td> <font size="+2">● データエクスポート</font><br>
          <br>
           <b>マップファイル:<a <?php echo "href=\"$basedir$prmMapfile\""?>  ><?php echo $prmMapfile?></a></b><br>
          <br>
           <b>関連ファイル </b>(直接ダウンロード出来ます)<br>
              <font color="#FF3333"><b><?php if ($chkMakeFile==1) echo " 新規ファイル" substr$prmMapfile 0,strlen($prmMapfile)-) . $expsrcext  "を作成しました。"?></b></font><BR>
          <br>
          <?php    // マップ関連ファイル一覧
                
$d dir$basedir );
                while(
$entry=$d->read()) {
                    if ( 
substr$entry 0,strlen($prmMapfile)-) == substr$prmMapfile 0,strlen($prmMapfile)-)  ) {
            
?>   ファイル名:<a <?php echo "href=\"$basedir$entry\""?>  ><b><?php echo $entry?></b></a> 
            (サイズ:<?php echo filesize($basedir $entry); ?>Byte 更新日付:<?php $tm=filemtime($basedir $entry); echo date("Y/m/d H:i:s",$tm); ?>)<br>
                        
            <?php
                    
}
                }
            
?>


          <br>
          <br>
           <b>マップデータをもとにソースを作成します。</b><br>
          <br>
               データ形式 : 
          <select name="select">
            <option value="1" <?php if ($select==1) echo "selected"?> >CSV</option>
            <option value="2" <?php if ($select==2) echo "selected"?> >C言語ソース</option>
            <option value="3" <?php if ($select==3) echo "selected"?> >BASICソース(DATA文)</option>
            <option value="4" <?php if ($select==4) echo "selected"?> >アセンブラソース (Z80的)</option>
            <option value="5" <?php if ($select==5) echo "selected"?> >16進数</option>
            <option value="6" <?php if ($select==6) echo "selected"?> >DEFCHR(HuBASIC風)</option>
          </select>
          <input type="submit" name="Submit" value="データ作成">
          <input type="checkbox" name="chkMakeFile" value="1"  <?php if ($chkMakeFile==1) echo "checked"?>>ファイルも作成<br>
          <br>
    <div align="center">
            <textarea name="textfield" cols="80" rows="40"><?php echo $expsrc?></textarea>
    </div>
            
    <div align="right">
          <input type="submit" name="Submit" value="キャンセル">
    </div>
          <BR>
          <br>
          <font size="+1" color="#FF3333"><b><?php echo $msg ?></b></font><BR>
        
            
        </table>




        <?php } else if ( $prmPhase==) { ?>
        <!-- ■■■■ マップ編集 -->

            <font size="+1" color="#FF3333"><b><?php echo $msg ?></b></font>            

            <!-- ▼ マップ情報 -->
            <table width="90%" border="0">
                <tr>
                    <td  bgcolor="#666666" ><font size="-1">マップ名</font></td>
                    <td  bgcolor="#333333"><font size="-1"><?php echo $prmMapfile?></font></td>
                    <td  bgcolor="#666666" ><font size="-1">サイズ</font></td>
                    <td  bgcolor="#333333" ><font size="-1">幅
                        <input type="text" name="txtWidth" size="4" <?php echo "value=$mapw"?> >ブロック × 高さ
                        <input type="text" name="txtHeight" size="4" <?php echo "value=$maph"?> >ブロック 
                        <input type="submit" name="Submit" value="サイズ変更">
                        </font>
                    </td>
                </tr>
            </table>

            <!-- ▼ 表示設定 -->
            <table width="90%" border="0">
                <tr>
                    <td  bgcolor="#666666" ><font size="-1">表示設定</font></td>
                    <td  bgcolor="#333333" ><font size="-1">表示サイズ 幅
                        <input type="text" name="prmW" size="4" <?php echo "value=$prmW"?> >
            ブロック × 高さ
                        <input type="text" name="prmH" size="4" <?php echo "value=$prmH"?> >
            ブロック /  
                        <input type="checkbox" name="prmMulti" value="1"  <?php if ($prmMulti==1) echo "checked"?> >
            複数選択  
                        <input type="submit" name="Submit" value="適用">
            </font></td>
                </tr>
            </table>
            <br>

            <!-- ▼ マップ -->
            <table border="1" cellpadding="0" bordercolorlight="#666666" bordercolordark="#333333">
                <tr align="center" bgcolor="#333333">
                    <td height="2"><font size="-1"><b>マップ</b></font></td>
                </tr>
                <tr align="center" bgcolor="#000000">
                    <!-- 座標 -->
                    <td height="119">
                        <font size="-1">座標(X: 
                        <input type="text" name="prmX" size="4" <?php echo "value=$prmX"?> >
                        , Y: 
                        <input type="text" name="prmY" size="4"  <?php echo "value=$prmY"?> >
                        <input type="submit" name="Submit" value="移動">
                         ) 
                        <input type="submit" name="Submit" value="左">
                        <input type="submit" name="Submit" value="右">
                        <input type="submit" name="Submit" value="上">
                        <input type="submit" name="Submit" value="下">
                         移動量<input type="text" name="prmDst" size="4" <?php echo "value=$prmDst"?> >

                        <!-- マップ表示テーブル -->
                        </font>
                        <table border="0" cellpadding="0" cellspacing="0">

                            <!-- Xゲージ -->
                            <tr bgcolor="#333333">
                                <td align="center" valign="middle"><font size="-2">\</font></td>
                                <?php 
                                    
for ( $x=0$x $prmW$x++ ) { 
                                
?>
                                    <td width="32" align="center" valign="middle"><font size="-3" <?php if ( $x+$prmX>=$mapw ) echo "color=#777777"?> ><?php echo $x+$prmX?></font></td>
                                <?php ?>
                            </tr>

                            <!-- マップ本体 -->
                            <?php for ($y=0$y<$prmH$y++) { ?>
                                <tr>
                                    <td height="32" align="center" valign="middle" bgcolor="#333333" ><font size="-3" <?php if ( $y+$prmY>=$maph ) echo "color=#777777"?> ><?php echo $y+$prmY?></font></td>
                                    <?php for ($x=0$x<$prmW$x++) { ?>
                                        <td width="32" height="32"  <?php echo "background=" $basedir $blk[ (int) dbmfetch($dbmid,   MapKey($x $prmX,$y $prmY))  ]; ?> >
                                            <?php if ( $prmMulti == "1" ) { ?>
                                            <input type="checkbox"  <?php echo "name=chkmap" MapKey($x,$y); ?>  value="1">
                                            <?php } else { ?>
                                            <input type="image" border="0"  <?php echo "name=map" MapKey($x,$y); ?> src="space.gif" width="24" height="24">
                                            <?php }  ?>
                                        </td>
                                    <?php ?>
                                </tr>
                                <?php if ( $prmXXXX == "1" ) { ?>
                                    <tr>
                                        <td align="center" valign="middle" bgcolor="#333333"></td>
                                            <?php for ($x=0$x<$prmW$x++) { ?>
                                            <td width="32">
                                                <input type="checkbox"  <?php echo "name=chkmap" MapKey($x,$y); ?>  value="1">
                                            </td>
                                            <?php ?>
                                    </tr>
                                <?php ?>
                            <?php ?>

                        </table>
                        
                    </td>
                </tr>
            </table>
            <br>

            <!-- ▼ ブロック配置ボタン -->
            <?php if ($prmMulti==1) { ?>
                <font size="-2">パレットからブロックを選択してマップ上の配置したい場所にチェックを付けて、[一括指定]ボタンを押してください。<BR>
                <input type="submit" name="Submit" value="一括指定">
                (<input type="checkbox" name="prmBoxsel" value="1"  <?php if ($prmBoxsel==1) echo "checked"?> > 矩形選択)
                 <input type="submit" name="Submit" value="指定範囲をコピー">
                </font>
            <?php }else{ ?>
                <font size="-2">パレットからブロックを選択してマップ上の配置したい場所をクリックしてください。</font><br>
            <?php ?>        
            <br><br>

            <!-- ▼ ブロックパレット -->
            <table border="1" bordercolorlight="#666666" bordercolordark="#333333">
                <tr bgcolor="#333333" align="center">
                    <td><b><font size="-1">パレット</font></b></td>
                </tr>
                <tr>
                    <td>
                        <table border="1" bgcolor="#333333" bordercolorlight="#000000" bordercolordark="#000000" cellspacing="0" bordercolor="#000000" cellpadding="0">

                            <tr>
                                <?php 
                                    reset
$blk );
                                    while( list( 
$key$value ) = each$blk ) ) {
                                
?>
                                    <td width="32">
                                        <p><?php echo $key?></p>
                                    </td>
                                <?php ?>
                            </tr>
                            <tr>
                                <?php 
                                    reset
$blk );
                                    while( list( 
$key$value ) = each$blk ) ) {
                                
?>
                                    <td width="32" height="32" <?php echo "background=$basedir$value"?>> </td>
                                <?php ?>
                            </tr>
                            <tr>
                                <?php 
                                    reset
$blk );
                                    while( list( 
$key$value ) = each$blk ) ) {
                                
?>
                                    <td width="32">
                                        <input type="radio" name="putchar"  <?php echo "value=$key";  if ($key==$putchar) echo " checked";   ?>>
                                    </td>
                                <?php ?>
                            </tr>
                        </table>
                        <table border="1" bgcolor="#333333" bordercolorlight="#000000" bordercolordark="#000000" cellspacing="0" bordercolor="#000000" cellpadding="0">
                            <tr><td>
                                <?php if ( !empty($prmCopyXmin) )  { ?>
                                    <input type="radio" name="putchar"  <?php echo "value=paste";  if ($putchar=="paste") echo " checked";   ?>> コピーしたブロックをペースト 
                                    <font size="-2">    コピー元範囲 <?php echo "($prmCopyXmin,$prmCopyYmin)-($prmCopyXmax,$prmCopyYmax)"?></font><BR>
                                <?php ?>
                            </td></tr>
                        </table>

                    </td>
                </tr>
            </table>
            
            
        <br>
        <!-- <input type="submit" name="Submit" value="マップ情報変更"> -->
        <input type="submit" name="Submit" value="パスワード変更"> 
        <input type="submit" name="Submit" value="データエクスポート"> 
          <input type="submit" name="Submit" value="マップ選択">
        <br>
        <br>
                
            
        <input type="hidden" name="prmCopyXmin" <?php echo "value=$prmCopyXmin"?> >
        <input type="hidden" name="prmCopyXmax" <?php echo "value=$prmCopyXmax"?> >
        <input type="hidden" name="prmCopyYmin" <?php echo "value=$prmCopyYmin"?> >
        <input type="hidden" name="prmCopyYmax" <?php echo "value=$prmCopyYmax"?> >
            <br>
        
            <?php } else if ( $prmPhase==99 ) { ?>
        <?php ?>



        <input type="hidden" name="prmPhase" <?php echo "value=$prmPhase"?> >
        <input type="hidden" name="prmMapfile" <?php echo "value=$prmMapfile"?> >

        <input type="hidden" name="debug" <?php echo "value=$debug"?> >

    </form>



    <!-- ● その他処理 -->

    <?php 
        
if ( $debug prtvars();
        if ( 
$src ) {
            echo 
"phps作成 結果:" copy"mapedit.php3" "mapedit.phps" );
        } 
        
        echo 
"<!-- last submit= $Submit -->";
    
?> 


    <!-- ● フッター -->

    <table align="center" background="bgCir01.gif" width="90%" border="0" cellspacing="0" >
        <tr>
              <td height="3" bgcolor="#ff0000" ></td>
        </tr>
        <tr> 
              <td align="right" > <font size="-1" color="#ff0000"> <a href="http://www.dokokano.com/ftlabo/"><img src="linkFTLabo01.gif" align="right" height="31" width="88" hspace="0" vspace="0" border="0"></a> 
        PHP TEST#04 : MapEditor [2000/10/xx]  <BR>
        Programmed by FUKAYA Takashi(F/T)  <BR>
        <BR>
        </font> </td>
        </tr>
    </table>
    <div align="right"> 
        <SCRIPT Language="JavaScript">
            <!--
            document.write("<img src='http://www.dokokano.com/cgi-bin/ftcount.cgi?dokokanoFTLaboTest04:"+document.referrer+"' height='1' width='32'");
            // -->
            </SCRIPT>
  </div>
</div>


</body>
</html>

<?php
    
// ==================== PHP TARMINATE CODE ====================
    
dbmclose ($dbmid);
    


?>