using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Bludiště { public partial class Editor : Form { char[,] bludiste; Point start, cil; int rozliseni; public Editor() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { bludiste = new char[(int)sirka.Value, (int)vyska.Value]; for (int i = 0; i < sirka.Value; i++) //vsechno prazdne { for (int j = 0; j < vyska.Value; j++) { bludiste[i, j] = '.'; } } bludiste[0, 0] = '&'; start = new Point(0, 0); bludiste[(int)sirka.Value - 1, (int)vyska.Value - 1] = '#'; cil = new Point((int)sirka.Value - 1, (int)vyska.Value - 1); this.Refresh(); } private void button2_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() != DialogResult.OK) return; StreamReader soubor = new StreamReader(openFileDialog1.FileName); string radek = null; radek = soubor.ReadLine(); string[] hodnoty = radek.Split(' '); //velikost pole sirka.Value = Convert.ToInt32(hodnoty[0]); vyska.Value = Convert.ToInt32(hodnoty[1]); bludiste = new char[(int)sirka.Value, (int)vyska.Value]; for (int i = 0; i < sirka.Value; i++) { radek = soubor.ReadLine(); int j = 0; for (int c = 0; c < radek.Length; c++) //zapsat kazdy radek { if ((radek[c]=='.')||(radek[c]=='X')||(radek[c]=='&')||(radek[c]=='#')) { bludiste[j, i] = radek[c]; if (radek[c] == '&') { start = new Point(i, j); } else if (radek[c] == '#') { cil = new Point(i, j); } j++; } } } soubor.Close(); this.Refresh(); } private void button3_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() != DialogResult.OK) return; StreamWriter soubor = new StreamWriter(saveFileDialog1.FileName, false); soubor.WriteLine(sirka.Value.ToString() + " " + vyska.Value.ToString()); string radek = null; for (int i = 0; i < vyska.Value; i++) { radek = null; for (int j = 0; j < sirka.Value; j++) { radek += bludiste[j, i]; } soubor.WriteLine(radek); } soubor.Close(); } private void Editor_Paint(object sender, PaintEventArgs e) { if (bludiste == null) //pokud neni bludiste return; Graphics kp = e.Graphics; for (int i = 0; i < sirka.Value; i++) { for (int j = 0; j < vyska.Value; j++) { if (sirka.Value > vyska.Value) rozliseni = 500 / (int)sirka.Value; else rozliseni = 500 / (int)vyska.Value; Rectangle ctverec = new Rectangle(rozliseni * i + 16, rozliseni * j + 16, rozliseni, rozliseni); switch (bludiste[i, j]) { case '.': //volno kp.FillRectangle(Brushes.White, ctverec); break; case 'X': //stena kp.FillRectangle(Brushes.DarkBlue, ctverec); break; case '&': //bila pani kp.FillRectangle(Brushes.White, ctverec); kp.FillEllipse(Brushes.Yellow, ctverec); break; case '#': //televize kp.FillRectangle(Brushes.White, ctverec); kp.FillEllipse(Brushes.Green, ctverec); break; } } } } private void Editor_MouseDown(object sender, MouseEventArgs e) { if (bludiste == null) return; Point souradnice = new Point(e.X / rozliseni, e.Y / rozliseni); //steny if (radioButton1.Checked) { try { if (bludiste[souradnice.X, souradnice.Y] == '.') { bludiste[souradnice.X, souradnice.Y] = 'X'; } else if (bludiste[souradnice.X, souradnice.Y] == 'X') { bludiste[souradnice.X, souradnice.Y] = '.'; } this.Refresh(); } catch { } } //hracc else if (radioButton2.Checked) { try { if ((souradnice == cil) || (souradnice == start)) return; bludiste[souradnice.X, souradnice.Y] = '&'; } finally { bludiste[start.X, start.Y] = '.'; start = souradnice; this.Refresh(); } } //dort else if (radioButton3.Checked) { try { if ((souradnice == start) || (souradnice == cil)) return; bludiste[souradnice.X, souradnice.Y] = '#'; bludiste[cil.X, cil.Y] = '.'; } finally { cil = souradnice; this.Refresh(); } } } } }