セーブの質問
投稿者 : ナオヤン(FKHba-35p119.ppp13.odn.ad.jp)
- 2002/08/28(Wed) 21:57
No.1554
|
|
|
|
|
セーブ機能を加えたいのですが、うまくいきません。 プログラムは↓です。
function onMouseDown(x,y,lb,rb) { //クリックしたとき save=1; //セーブ開始 }
file=new FileWriter("map1.txt"); //セーブするためのファイル「map1.text」を用意する save=0; //セーブ中のとき 1
while(1){ while(save){ vx=0; //セーブするx座標 vy=0; //セーブするy座標 for(a=0;a<27;a++){ //y座標の設定 for(b=0;b<34;b++){ //x座標の設定 drawText(100,150,"セーブ中",$clBlack,50); //セーブ中の表示 file.writeLn($map.get(vx,vy)); //マップのセーブ vx++; //x座標の変更 update(); } vx=0; //x座標の初期化 vy++; //y座標の変更 update(); } file.close(); //テキストファイルを閉じる save=0; //セーブの終了 update(); } update(); }
無駄な注釈が多いですが・・・。 これでは、テキストファイルが終了されずうまくセーブされません。 テキストファイルを終了させるにはどうすればいいのでしょうか?
|
Re: セーブの質問
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2002/08/29(Thu) 00:11
No.1562
|
|
|
|
GoGo Action のマップ保存ですね
セーブを行う際にwhlie 文は不要です。なぜならセーブは何回も繰り返す必要がないからです。 while (1) と while(save) の部分を両方とりはずしてみてください さらにいうとupdateも不要です。普通、セーブは一瞬(1フレーム)のうちに完了するものなので、1フレーム待機という動作も不要です
|
Re: セーブの質問
投稿者 : ナオヤン(FKHba-17p141.ppp13.odn.ad.jp)
- 2002/08/29(Thu) 10:14
No.1574
|
|
|
|
↓のようにすると良いのでしょうか?
file=new FileWriter("map1.txt");
vx=0; vy=0; for(a=0;a<27;a++){ for(b=0;b<34;b++){ file.writeLn($map.get(vx,vy)); vx++; } vx=0; vy++; } file.close();
しかし、これだとセーブはできるのですが始まってすぐセーブをしてしまいます。 クリックしたときセーブをするという風にしたいのですが。
|
Re: セーブの質問
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2002/08/29(Thu) 10:47
No.1576
|
|
|
|
押したときだけセーブならこうですね onMouseDown() { ... }
while (1) { save=0; while (save==0 ) { // save=1 になるまで待機 update(); } セーブ処理 }
|
Re: セーブの質問
投稿者 : ナオヤン(FKHba-17p141.ppp13.odn.ad.jp)
- 2002/08/29(Thu) 11:29
No.1578
|
|
|
|
度々すみません。セーブ処理を入れたのですが、まだセーブされていないようです。 このようなプログラムです。
function onMouseDown(x,y,lb,rb) { save=1; }
while (1) { save=0; while (save==0) { // save=1 になるまで待機 update(); } file=new FileWriter("map1.txt"); vx=0; vy=0; for(a=0;a<27;a++){ for(b=0;b<34;b++){ file.writeLn($map.get(vx,vy)); vx++; } vx=0; vy++; } file.close(); }
|
Re: セーブの質問
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2002/08/29(Thu) 11:43
No.1580
|
|
|
|
セーブしたファイルはfiles フォルダ内に map1.txt という名前で保存されますので確認してください
他の原因としてはonMouseDown を受け付けていない可能性があります。オブジェクトの種類はなんでしょうか
while (save==0) { // save=1 になるまで待機 update(); } の直後に print ("saving"); といれて、コンソールウィンドウの出力を確認してみてください
|
Re: セーブの質問
投稿者 : ナオヤン(FKHba-17p141.ppp13.odn.ad.jp)
- 2002/08/29(Thu) 12:00
No.1581
|
|
|
|
何とかできるようになりました。 ありがとうございます。
|
|