From e2cc5dc3aad162a571f2402db277dc534f45161e Mon Sep 17 00:00:00 2001 From: 2 <2@S6305-14> Date: Sat, 10 Oct 2026 13:54:16 +0700 Subject: [PATCH] serialeable --- ClassLib000/Chess/ChessFileSerializer.cs | 27 ++++++++++++++++++++++++ ClassLib000/Chess/ChessGame.cs | 13 ++++++++++++ ClassLib000/Chess/Figure.cs | 11 ++++++++++ ClassLib000/Chess/Player.cs | 18 ++++++++++++++++ ClassLib000/Chess/description.txt | 2 +- 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 ClassLib000/Chess/ChessFileSerializer.cs diff --git a/ClassLib000/Chess/ChessFileSerializer.cs b/ClassLib000/Chess/ChessFileSerializer.cs new file mode 100644 index 0000000..1fd58ca --- /dev/null +++ b/ClassLib000/Chess/ChessFileSerializer.cs @@ -0,0 +1,27 @@ +using System; +using System.Text; + +namespace ClassLib000.Chess +{ + class ChessFileSerializer + { + public static void ChessSaveToFile(string filename, ChessGame game) + { + string content = game.AsTextString(); + System.IO.File.WriteAllText(filename, content, Encoding.UTF8); + } + + public static ChessGame ChessLoadFromFile(string filename) + { + ChessGame game = new ChessGame(); + string content = System.IO.File.ReadAllText(filename, Encoding.UTF8); + game.FromTextString(content); + return game; + } + + private static string ChessDrawFigures(Player player) + { + return player.AsString(); + } + } +} diff --git a/ClassLib000/Chess/ChessGame.cs b/ClassLib000/Chess/ChessGame.cs index ddc9042..96c765d 100644 --- a/ClassLib000/Chess/ChessGame.cs +++ b/ClassLib000/Chess/ChessGame.cs @@ -1,4 +1,5 @@ using System; +using System.Text; namespace ClassLib000.Chess { @@ -29,6 +30,18 @@ namespace ClassLib000.Chess BlackPlayer.Init(EColor.Black); } + + + public void FromTextString(string fileContent) { + // ... + } + + public string AsTextString() { + StringBuilder fileStringBuilder = new StringBuilder(); + fileStringBuilder.AppendLine(WhitePlayer.AsString()); + fileStringBuilder.AppendLine(BlackPlayer.AsString()); + return fileStringBuilder.ToString(); + } #endregion } } diff --git a/ClassLib000/Chess/Figure.cs b/ClassLib000/Chess/Figure.cs index 8574ca9..4be6510 100644 --- a/ClassLib000/Chess/Figure.cs +++ b/ClassLib000/Chess/Figure.cs @@ -37,5 +37,16 @@ this.Y = y; } + + public string AsTextString() + { + int x = this.X; + int y = this.Y; + EColor figureColor = this.Color; + EFigureType ft = this.Type; + // TODO: .. Console.SetCursorPosition(posx, posy); + return $"{x};{y};{figureColor};{(int)ft}"; + } + } } diff --git a/ClassLib000/Chess/Player.cs b/ClassLib000/Chess/Player.cs index 4e2ce52..660b5fc 100644 --- a/ClassLib000/Chess/Player.cs +++ b/ClassLib000/Chess/Player.cs @@ -21,6 +21,24 @@ namespace ClassLib000.Chess public Figure Ладья2; public Figure Конь1; + public void FromString(string fileContent) { + // ... + } + + public string AsString() { + StringBuilder lineStringBuilder = new StringBuilder(); + lineStringBuilder.AppendFormat("{0}|", Пешка1.AsTextString()); + lineStringBuilder.AppendFormat("{0}|", Пешка2.AsTextString()); + lineStringBuilder.AppendFormat("{0}|", Пешка3.AsTextString()); + lineStringBuilder.AppendFormat("{0}|", Пешка4.AsTextString()); + // .. + return lineStringBuilder.ToString(); + } + + + + + public Figure[] GetBrokenFigures() { // TODO: diff --git a/ClassLib000/Chess/description.txt b/ClassLib000/Chess/description.txt index 3b6d39f..2bc5079 100644 --- a/ClassLib000/Chess/description.txt +++ b/ClassLib000/Chess/description.txt @@ -31,7 +31,7 @@ - отобразить время на таймерах - добавить ход: откуда, куда - убрать фигуру (срубить): где - +- сформировать информацию о текущем состоянии доски ## Вариант 2 Отображение шахматной доски