アニメ『王室教師ハイネ』
美男子ばかりのアニメです。
C#でドミノエディタの続きです。編集したドミノ配置のセーブとロードの機能を作ります。
ファイル読み込みするためusing追加。
using System.IO; using System.Text;
ロードとセーブのメニューを追加します。
void menu(){ this.Menu = new MainMenu(); MenuItem item1 = new MenuItem("ファイル(&F)"); MenuItem item11 = new MenuItem("ロード(&L)"); MenuItem item12 = new MenuItem("セーブ(&S)"); item1.MenuItems.Add(item11); item1.MenuItems.Add(item12); item11.Click += new EventHandler(load); item12.Click += new EventHandler(save); this.Menu.MenuItems.Add(item1); }
セーブ機能から作ります。セーブするファイル名は固定にしています。
日本語(SJIS)も使えるようにしておきます。
void save(object sender, EventArgs e){ StreamWriter s = new StreamWriter( basedir+"savedata.txt", true,Encoding.GetEncoding("Shift_JIS")); for(int y=0;y<ylen;y++){ for(int x=0;x<xlen;x++){ s.WriteLine( "{0},{1},{2},",x,y,this.mat[x,y].state); } s.WriteLine( "\n"); } s.Close(); }
使ってみます。
適当にドミノを配置して、
実行すると、savedata.txtというファイルに、以下のようなデータが保存されます。
x座標,y座標,値(ドミノの向き),の順に各行に収まっています。
0,0,1, 1,0,2, 2,0,3, 3,0,0, 4,0,0, (省略) 0,1,2, 1,1,2, 2,1,2, 3,1,0, 4,1,0, (省略)
ロード機能です。
void load(object sender, EventArgs e){ char[] delim = {','}; string line; int x,y,state; StreamReader s = new StreamReader( basedir+"savedata.txt",Encoding.GetEncoding("Shift_JIS")); while((line = s.ReadLine()) != null){ string[] arr = line.Split(delim); if (arr.Length >= 3){ x = int.Parse(arr[0]); y = int.Parse(arr[1]); state = int.Parse(arr[2]); this.mat[x,y].state = state; if(this.mat[x,y].state>0){ this.mat[x,y].Image = Image.FromFile(basedir + img[this.mat[x,y].state]); } } } s.Close(); }
コメント