con

con


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;


namespace Reversi

{

  public static class Controller

  {

    // Обновление вида.

    public static void doUpdate()

    {

      Startup.mainForm.UpdateViews();

    }


    // Выполнение хода: если ход выполнен, он записывается в список ходов.

    public static void TryMove(Point move)

    {

      if (Model.State.PlayPiece(move))

      {

        Model.MoveList.AppendLine(standardForm(move));

        doUpdate();

      }

    }

     

    // Новая игра.

    // Очистка списка ходов.

    public static void New()

    {

      Model.State.NewGame();

      Model.MoveList.Clear();

      doUpdate();

    }


    // В файл вписывается список ходов.

    public static void ExportMoves(string fileName)

    {

      System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName);

      sw.Write(Model.MoveList);

      sw.Close();

    }


    // Открытие игры.

    public static void ImportMoves(string fileName)

    {

      System.IO.StreamReader sr = new System.IO.StreamReader(fileName);

      New();

      foreach (string line in sr.ReadToEnd().Split(new char[] { '\n' }))

      {

        if (line != "")

        {

          Point temp = pointForm(line);

          Model.State.PlayPiece(temp);

        }

      }

      sr.Close();

    }


    // Создание координат точки по координатам доски сохранённой игры.

    private static Point pointForm(string s)

    {

      Point rval = new Point();

      rval.X = ((int)s[0]) - (int)'A';

      rval.Y = (int)s[1] - (int)'0';

      return rval;

    }


    // Переводит координаты точки в формат координат доски.

    private static string standardForm(Point p)

    {

      StringBuilder rval = new StringBuilder();

      rval.Append(((char)(p.X + (int)'A')).ToString());

      rval.Append(p.Y.ToString());

      return rval.ToString();

    }


  }

}


Report Page