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();
}
}
}