Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 28.07 KB | None | 0 0
  1. sing System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using System.Windows.Resources;
  17. using System.Windows.Shapes;
  18. using System;
  19. using System.IO;
  20. using System.Windows;
  21. using Microsoft.Win32;
  22. using System.Runtime.Serialization.Formatters.Binary;
  23. using System.Media;
  24. namespace CheckersBoard
  25. {
  26.     [Serializable]
  27.     class Elems
  28.     {
  29.         public int r, c;
  30.         public string color;
  31.         public Elems(int r, int c,string color) { this.r = r; this.c = c; this.color = color; }
  32.     }
  33.     /// <summary>
  34.     /// Interaction logic for MainWindow.xaml
  35.     /// </summary>
  36.     [Serializable()]
  37.     public partial class MainWindow : Window
  38.     {
  39.         private Move currentMove;
  40.         private String winner;
  41.         private String turn;
  42.  
  43.         public MainWindow()
  44.         {
  45.             InitializeComponent();
  46.             this.Title = "Checkers! Blacks turn!";
  47.             currentMove = null;
  48.             winner = null;
  49.             turn = "Black";
  50.             MakeBoard();
  51.         }
  52.  
  53.         private void ClearBoard()
  54.         {
  55.             for (int r = 1; r < 9; r++)
  56.             {
  57.                 for (int c = 0; c < 8; c++)
  58.                 {
  59.                     StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  60.                     CheckersGrid.Children.Remove(stackPanel);
  61.                 }
  62.             }
  63.         }
  64.         //заповнення дошки білими і чорними клітинками
  65.         private void MakeBoard()
  66.         {
  67.             for (int r = 1; r < 9; r++)
  68.             {
  69.                 for (int c = 0; c < 8; c++)
  70.                 {
  71.                     StackPanel stackPanel = new StackPanel();
  72.                     if (r % 2 == 1)
  73.                     {
  74.                         if (c % 2 == 0)
  75.                             stackPanel.Background = Brushes.White;
  76.                         else
  77.                             stackPanel.Background = Brushes.Black;
  78.                     }
  79.                     else
  80.                     {
  81.                         if (c % 2 == 0)
  82.                             stackPanel.Background = Brushes.Black;
  83.                         else
  84.                             stackPanel.Background = Brushes.White;
  85.                     }
  86.                     Grid.SetRow(stackPanel, r);
  87.                     Grid.SetColumn(stackPanel, c);
  88.                     CheckersGrid.Children.Add(stackPanel);
  89.                 }
  90.             }
  91.  
  92.           // MakeButtons();
  93.         }
  94.  
  95.         private void MakeButtons()
  96.         {
  97.             for (int r = 1; r < 9; r++)
  98.             {
  99.                 for (int c = 0; c < 8; c++)
  100.                 {
  101.                     StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  102.                     Button button = new Button();
  103.                     button.Click += new RoutedEventHandler(button_Click);
  104.                     button.Height = 60;
  105.                     button.Width = 60;
  106.                     button.HorizontalAlignment = HorizontalAlignment.Center;
  107.                     button.VerticalAlignment = VerticalAlignment.Center;
  108.                     var redBrush = new ImageBrush();
  109.                     redBrush.ImageSource = new BitmapImage(new Uri("Resources/red60p.png", UriKind.Relative));
  110.                     var blackBrush = new ImageBrush();
  111.                     blackBrush.ImageSource = new BitmapImage(new Uri("Resources/black60p.png", UriKind.Relative));
  112.                     switch (r)
  113.                     {
  114.                         case 1:
  115.                             if (c % 2 == 1)
  116.                             {
  117.  
  118.                                 button.Background = redBrush;
  119.                                 button.Name = "buttonRed" + r + c;
  120.                                 stackPanel.Children.Add(button);
  121.                             }
  122.                             break;
  123.                         case 2:
  124.                             if (c % 2 == 0)
  125.                             {
  126.                                 button.Background = redBrush;
  127.                                 button.Name = "buttonRed" + r + c;
  128.                                 stackPanel.Children.Add(button);
  129.                             }
  130.                             break;
  131.                         case 3:
  132.                             if (c % 2 == 1)
  133.                             {
  134.                                 button.Background = redBrush;
  135.                                 button.Name = "buttonRed" + r + c;
  136.                                 stackPanel.Children.Add(button);
  137.                             }
  138.                             break;
  139.                         case 4:
  140.                             if (c % 2 == 0)
  141.                             {
  142.                                 button.Background = Brushes.Black;
  143.                                 button.Name = "button" + r + c;
  144.                                 stackPanel.Children.Add(button);
  145.                             }
  146.                             break;
  147.                         case 5:
  148.                             if (c % 2 == 1)
  149.                             {
  150.                                 button.Background = Brushes.Black;
  151.                                 button.Name = "button" + r + c;
  152.                                 stackPanel.Children.Add(button);
  153.                             }
  154.                             break;
  155.                         case 6:
  156.                             if (c % 2 == 0)
  157.                             {
  158.                                 button.Background = blackBrush;
  159.                                 button.Name = "buttonBlack" + r + c;
  160.                                 stackPanel.Children.Add(button);
  161.                             }
  162.                             break;
  163.                         case 7:
  164.                             if (c % 2 == 1)
  165.                             {
  166.                                 button.Background = blackBrush;
  167.                                 button.Name = "buttonBlack" + r + c;
  168.                                 stackPanel.Children.Add(button);
  169.                             }
  170.                             break;
  171.                         case 8:
  172.                             if (c % 2 == 0)
  173.                             {
  174.                                 button.Background = blackBrush;
  175.                                 button.Name = "buttonBlack" + r + c;
  176.                                 stackPanel.Children.Add(button);
  177.                             }
  178.                             break;
  179.                         default:
  180.                             break;
  181.                     }
  182.                 }
  183.             }
  184.         }
  185.  
  186.         UIElement GetGridElement(Grid g, int r, int c)
  187.         {
  188.             for (int i = 0; i < g.Children.Count; i++)
  189.             {
  190.                 UIElement e = g.Children[i];
  191.                 if (Grid.GetRow(e) == r && Grid.GetColumn(e) == c)
  192.                     return e;
  193.             }
  194.             return null;
  195.         }
  196.  
  197.         public void button_Click(Object sender, RoutedEventArgs e)
  198.         {
  199.             Button button = (Button)sender;
  200.             StackPanel stackPanel = (StackPanel)button.Parent;
  201.             int row = Grid.GetRow(stackPanel);
  202.             int col = Grid.GetColumn(stackPanel);
  203.             Console.WriteLine("Row: " + row + " Column: " + col);
  204.            // MessageBox.Show("Row: " + row + " Column: " + col, "Winner", MessageBoxButton.YesNo);
  205.             if (currentMove == null)
  206.                 currentMove = new Move();
  207.             if (currentMove.piece1 == null)
  208.             {
  209.                 currentMove.piece1 = new Piece(row, col);
  210.                 stackPanel.Background = Brushes.Green;
  211.             }
  212.             else
  213.             {
  214.                 currentMove.piece2 = new Piece(row, col);
  215.                 stackPanel.Background = Brushes.Green;
  216.             }
  217.             if ((currentMove.piece1 != null) && (currentMove.piece2 != null))
  218.             {
  219.                 if (CheckMove())
  220.                 {
  221.                     MakeMove();
  222.                    // aiMakeMove();
  223.                 }
  224.             }
  225.         }
  226.         //перевірка чи ходиш тим яким слід
  227.         private Boolean CheckMove()
  228.         {
  229.             StackPanel stackPanel1 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece1.Row, currentMove.piece1.Column);
  230.             StackPanel stackPanel2 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece2.Row, currentMove.piece2.Column);
  231.             Button button1 = (Button) stackPanel1.Children[0];
  232.             Button button2 = (Button) stackPanel2.Children[0];
  233.             stackPanel1.Background = Brushes.Black;
  234.             stackPanel2.Background = Brushes.Black;
  235.  
  236.             if ((turn == "Black") && (button1.Name.Contains("Red")))
  237.             {
  238.                 currentMove.piece1 = null;
  239.                 currentMove.piece2 = null;
  240.                 displayError("It is blacks turn.");
  241.                 return false;
  242.             }
  243.             if ((turn == "Red") && (button1.Name.Contains("Black")))
  244.             {
  245.                 currentMove.piece1 = null;
  246.                 currentMove.piece2 = null;
  247.                 displayError("It is reds turn.");
  248.                 return false;
  249.             }
  250.             if (button1.Equals(button2))
  251.             {
  252.                 currentMove.piece1 = null;
  253.                 currentMove.piece2 = null;
  254.                 return false;
  255.             }
  256.             if(button1.Name.Contains("Black"))
  257.             {
  258.                 return CheckMoveBlack(button1, button2);
  259.             }
  260.             else if (button1.Name.Contains("Red"))
  261.             {
  262.                 return CheckMoveRed(button1, button2);
  263.             }
  264.             else
  265.             {
  266.                 currentMove.piece1 = null;
  267.                 currentMove.piece2 = null;
  268.                 Console.WriteLine("False");
  269.                 return false;
  270.             }
  271.         }
  272.         //перевірка чи дана шашка може ходити
  273.  
  274.         private bool CheckMoveRed(Button button1, Button button2)
  275.         {
  276.             CheckerBoard currentBoard = GetCurrentBoard();
  277.             List<Move> jumpMoves = currentBoard.checkJumps("Red");
  278.  
  279.             if (jumpMoves.Count > 0)
  280.             {
  281.                 bool invalid = true;
  282.                 foreach (Move move in jumpMoves)
  283.                 {
  284.                     if (currentMove.Equals(move))
  285.                         invalid = false;
  286.                 }
  287.                 if (invalid)
  288.                 {
  289.                     displayError("Jump must be taken");
  290.                     currentMove.piece1 = null;
  291.                     currentMove.piece2 = null;
  292.                     Console.WriteLine("False");
  293.                     return false;
  294.                 }
  295.             }
  296.  
  297.             if (button1.Name.Contains("Red"))
  298.             {
  299.                 if (button1.Name.Contains("King"))
  300.                 {
  301.                     if ((currentMove.isAdjacent("King")) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  302.                         return true;
  303.                     Piece middlePiece = currentMove.checkJump("King");
  304.                     if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  305.                     {
  306.                         StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
  307.                         Button middleButton = (Button)middleStackPanel.Children[0];
  308.                         if (middleButton.Name.Contains("Black"))
  309.                         {
  310.                             CheckersGrid.Children.Remove(middleStackPanel);
  311.                             addBlackButton(middlePiece);
  312.                             return true;
  313.                         }
  314.                     }
  315.                 }
  316.                 else
  317.                 {
  318.                     if ((currentMove.isAdjacent("Red")) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  319.                         return true;
  320.                     Piece middlePiece = currentMove.checkJump("Red");
  321.                     if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  322.                     {
  323.                         StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
  324.                         Button middleButton = (Button)middleStackPanel.Children[0];
  325.                         if (middleButton.Name.Contains("Black"))
  326.                         {
  327.                             CheckersGrid.Children.Remove(middleStackPanel);
  328.                             addBlackButton(middlePiece);
  329.                             return true;
  330.                         }
  331.                     }
  332.                 }
  333.             }
  334.             currentMove = null;
  335.             displayError("Invalid Move. Try Again.");
  336.             return false;
  337.         }
  338.  
  339.         private bool CheckMoveBlack(Button button1, Button button2)
  340.         {
  341.             CheckerBoard currentBoard = GetCurrentBoard();
  342.             List<Move> jumpMoves = currentBoard.checkJumps("Black");
  343.  
  344.             if (jumpMoves.Count > 0)
  345.             {
  346.                 bool invalid = true;
  347.                 foreach (Move move in jumpMoves)
  348.                 {
  349.                     if (currentMove.Equals(move))
  350.                         invalid = false;
  351.                 }
  352.                 if (invalid)
  353.                 {
  354.                     displayError("Jump must be taken");
  355.                     currentMove.piece1 = null;
  356.                     currentMove.piece2 = null;
  357.                     Console.WriteLine("False");
  358.                     return false;
  359.                 }
  360.             }
  361.  
  362.             if (button1.Name.Contains("Black"))
  363.             {
  364.                 if (button1.Name.Contains("King"))
  365.                 {
  366.                     if ((currentMove.isAdjacent("King")) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  367.                         return true;
  368.                     Piece middlePiece = currentMove.checkJump("King");
  369.                     if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  370.                     {
  371.                         StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
  372.                         Button middleButton = (Button)middleStackPanel.Children[0];
  373.                         if (middleButton.Name.Contains("Red"))
  374.                         {
  375.                             CheckersGrid.Children.Remove(middleStackPanel);
  376.                             addBlackButton(middlePiece);
  377.                             return true;
  378.                         }
  379.                     }
  380.                 }
  381.                 else
  382.                 {
  383.                     if ((currentMove.isAdjacent("Black")) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  384.                         return true;
  385.                     Piece middlePiece = currentMove.checkJump("Black");
  386.                     if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
  387.                     {
  388.                         StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
  389.                         Button middleButton = (Button)middleStackPanel.Children[0];
  390.                         if (middleButton.Name.Contains("Red"))
  391.                         {
  392.                             CheckersGrid.Children.Remove(middleStackPanel);
  393.                             addBlackButton(middlePiece);
  394.                             return true;
  395.                         }
  396.                     }
  397.                 }
  398.             }
  399.             currentMove = null;
  400.             displayError("Invalid Move. Try Again.");
  401.             return false;
  402.        }
  403.  
  404.         private void MakeMove()
  405.         {
  406.             if ((currentMove.piece1 != null) && (currentMove.piece2 != null))
  407.             {
  408.                 Console.WriteLine("Piece1 " + currentMove.piece1.Row + ", " + currentMove.piece1.Column);
  409.                 Console.WriteLine("Piece2 " + currentMove.piece2.Row + ", " + currentMove.piece2.Column);
  410.                 StackPanel stackPanel1 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece1.Row, currentMove.piece1.Column);
  411.                 StackPanel stackPanel2 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece2.Row, currentMove.piece2.Column);
  412.                 CheckersGrid.Children.Remove(stackPanel1);
  413.                 CheckersGrid.Children.Remove(stackPanel2);
  414.                 Grid.SetRow(stackPanel1, currentMove.piece2.Row);
  415.                 Grid.SetColumn(stackPanel1, currentMove.piece2.Column);
  416.                 CheckersGrid.Children.Add(stackPanel1);
  417.                 Grid.SetRow(stackPanel2, currentMove.piece1.Row);
  418.                 Grid.SetColumn(stackPanel2, currentMove.piece1.Column);
  419.                 CheckersGrid.Children.Add(stackPanel2);
  420.                 checkKing(currentMove.piece2);
  421.                 currentMove = null;
  422.                 if (turn == "Black")
  423.                 {
  424.                     this.Title = "Checkers! Reds turn!";
  425.                     turn = "Red";
  426.                 }
  427.                 else if (turn == "Red")
  428.                 {
  429.                     this.Title = "Checkers! Blacks turn!";
  430.                     turn = "Black";
  431.                 }
  432.                 SoundPlayer s = new SoundPlayer("C:/Users/Acer/Desktop/ПЗ/Semester5/KPZ/lab5/checkers-master/Checkers/Resources/12250.wav");
  433.                 s.Play();
  434.                 checkWin();
  435.             }
  436.         }
  437.  
  438.         private void aiMakeMove()
  439.         {
  440.             currentMove = CheckersAI.GetMove(GetCurrentBoard());
  441.             if (currentMove != null)
  442.             {
  443.                 if (CheckMove())
  444.                 {
  445.                     MakeMove();
  446.                 }
  447.             }
  448.         }
  449.  
  450.         //отримання даної позиції
  451.         private CheckerBoard GetCurrentBoard()
  452.         {
  453.             CheckerBoard board = new CheckerBoard();
  454.             for (int r = 1; r < 9; r++)
  455.             {
  456.                 for (int c = 0; c < 8; c++)
  457.                 {
  458.                     StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  459.                     if (stackPanel.Children.Count > 0)
  460.                     {
  461.                         Button button = (Button)stackPanel.Children[0];
  462.                         if (button.Name.Contains("Red"))
  463.                         {
  464.                             if (button.Name.Contains("King"))
  465.                                 board.SetState(r - 1, c, 3);
  466.                             else
  467.                                 board.SetState(r - 1, c, 1);
  468.                         }
  469.                         else if (button.Name.Contains("Black"))
  470.                         {
  471.                             if (button.Name.Contains("King"))
  472.                                 board.SetState(r - 1, c, 4);
  473.                             else
  474.                                 board.SetState(r - 1, c, 2);
  475.                         }
  476.                         else
  477.                             board.SetState(r - 1, c, 0);
  478.  
  479.                     }
  480.                     else
  481.                     {
  482.                         board.SetState(r - 1, c, -1);
  483.                     }
  484.  
  485.                 }
  486.             }
  487.             return board;
  488.         }
  489.  
  490.         private void checkKing(Piece tmpPiece)
  491.         {
  492.             StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, tmpPiece.Row, tmpPiece.Column);
  493.             if (stackPanel.Children.Count > 0)
  494.             {
  495.                 Button button = (Button)stackPanel.Children[0];
  496.                 var redBrush = new ImageBrush();
  497.                 redBrush.ImageSource = new BitmapImage(new Uri("Resources/red60p_king.png", UriKind.Relative));
  498.                 var blackBrush = new ImageBrush();
  499.                 blackBrush.ImageSource = new BitmapImage(new Uri("Resources/black60p_king.png", UriKind.Relative));
  500.                 if ((button.Name.Contains("Black")) && (!button.Name.Contains("King")))
  501.                 {
  502.                     if (tmpPiece.Row == 1)
  503.                     {
  504.                         button.Name = "button" + "Black" + "King" + tmpPiece.Row + tmpPiece.Column;
  505.                         button.Background = blackBrush;
  506.                     }
  507.                 }
  508.                 else if ((button.Name.Contains("Red")) && (!button.Name.Contains("King")))
  509.                 {
  510.                     if (tmpPiece.Row == 8)
  511.                     {
  512.                         button.Name = "button" + "Red" + "King" + tmpPiece.Row + tmpPiece.Column;
  513.                         button.Background = redBrush;
  514.                     }
  515.                 }
  516.             }
  517.         }
  518.        
  519.         private void addBlackButton(Piece middleMove)
  520.         {
  521.             StackPanel stackPanel = new StackPanel();
  522.             stackPanel.Background = Brushes.Black;
  523.             Button button = new Button();
  524.             button.Click += new RoutedEventHandler(button_Click);
  525.             button.Height = 60;
  526.             button.Width = 60;
  527.             button.HorizontalAlignment = HorizontalAlignment.Center;
  528.             button.VerticalAlignment = VerticalAlignment.Center;
  529.             button.Background = Brushes.Black;
  530.             button.Name = "button" + middleMove.Row + middleMove.Column;
  531.             stackPanel.Children.Add(button);
  532.             Grid.SetColumn(stackPanel, middleMove.Column);
  533.             Grid.SetRow(stackPanel, middleMove.Row);
  534.             CheckersGrid.Children.Add(stackPanel);
  535.         }
  536.  
  537.         //перевірка чи є переможець
  538.         private void checkWin()
  539.         {
  540.             int totalBlack = 0, totalRed = 0;
  541.             for (int r = 1; r < 9; r++)
  542.             {
  543.                 for (int c = 0; c < 8; c++)
  544.                 {
  545.                     StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  546.                     if (stackPanel.Children.Count > 0)
  547.                     {
  548.                         Button button = (Button)stackPanel.Children[0];
  549.                         if (button.Name.Contains("Red"))
  550.                             totalRed++;
  551.                         if (button.Name.Contains("Black"))
  552.                             totalBlack++;
  553.                     }
  554.                 }
  555.             }
  556.             if (totalBlack == 0)
  557.                 winner = "Red";
  558.             if (totalRed == 0)
  559.                 winner = "Black";
  560.             if (winner != null)
  561.             {
  562.                 for (int r = 1; r < 9; r++)
  563.                 {
  564.                     for (int c = 0; c < 8; c++)
  565.                     {
  566.                         StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  567.                         if (stackPanel.Children.Count > 0)
  568.                         {
  569.                             Button button = (Button)stackPanel.Children[0];
  570.                             button.Click -= new RoutedEventHandler(button_Click);
  571.                         }
  572.                     }
  573.                 }
  574.                 MessageBoxResult result = MessageBox.Show(winner + " is the winner! Would you like to play another?", "Winner", MessageBoxButton.YesNo);
  575.                 if (result == MessageBoxResult.Yes)
  576.                     newGame();
  577.             }
  578.         }
  579.         //загрузка серіалізованих даних
  580.         private void LoadGame()
  581.         {
  582.         }
  583.         private void newGame()
  584.         {
  585.             currentMove = null;
  586.             winner = null;
  587.             this.Title = "Checkers! Blacks turn!";
  588.             turn = "Black";
  589.             ClearBoard();
  590.             MakeBoard();
  591.             MakeButtons();
  592.         }
  593.  
  594.         private void displayError(string error)
  595.         {
  596.             MessageBox.Show(error, "Invalid Move", MessageBoxButton.OK);
  597.         }
  598.  
  599.         private void newGame_Click(object sender, RoutedEventArgs e)
  600.         {
  601.             newGame();
  602.         }
  603.  
  604.         private void exit_Click(object sender, RoutedEventArgs e)
  605.         {
  606.             Close();
  607.         }
  608.  
  609.         private void saveGame_Click(object sender, RoutedEventArgs e)
  610.         {
  611.             var ToSave = new List<Elems>();
  612.             for (int r = 1; r < 9; r++)
  613.             {
  614.                 for (int c = 0; c < 8; c++)
  615.                 {
  616.                     StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, r, c);
  617.                     if (stackPanel.Children.Count > 0)
  618.                     {
  619.                         Button button = (Button)stackPanel.Children[0];
  620.                         ToSave.Add(new Elems(r,c,button.Name));            
  621.                     }
  622.  
  623.                 }
  624.             }
  625.             DateTime now = DateTime.Now;
  626.             BinaryFormatter formatter = new BinaryFormatter();
  627.             FileStream fs = new FileStream("gameLogFor"+ now.ToString("hh_mm_ss") + ".dat", FileMode.OpenOrCreate);
  628.             formatter.Serialize(fs, ToSave);
  629.  
  630.             /* ClearBoard();
  631.              MakeBoard();*/
  632.             /*   BinaryFormatter formatter = new BinaryFormatter();
  633.                FileStream fs = new FileStream("game.dat", FileMode.OpenOrCreate);
  634.                formatter.Serialize(fs, CheckersGrid);
  635.  
  636.  
  637.              ClearBoard();*/
  638.         }
  639.  
  640.         private void loadGame_Click(object sender, RoutedEventArgs e)
  641.         {
  642.            /* OpenFileDialog openFileDialog = new OpenFileDialog();
  643.             openFileDialog.Multiselect = true;
  644.             openFileDialog.Filter = "Text files (*.dat)|*.dat|All files (*.*)|*.*";
  645.             openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
  646.             string fileLOG = "";
  647.             if (openFileDialog.ShowDialog() == true)
  648.             {
  649.                 fileLOG = openFileDialog.FileName;
  650.              
  651.                     MessageBox.Show(fileLOG, "Saved game loading");
  652.             }
  653.          /*   DateTime now = DateTime.Now;
  654.             Console.WriteLine(now.ToString("hh:mm:ss"));
  655.             Console.WriteLine(now.ToString("dd.MM.yyyy hh:mm:ss"));
  656.             MessageBox.Show(now.ToString("dd.MM.yyyyhh:mm:ss"), "Saved game loading");*/
  657.             BinaryFormatter formatter = new BinaryFormatter();
  658.                  FileStream fs = new FileStream("game.dat", FileMode.OpenOrCreate);
  659.                  var CheckersData = (List<Elems>)formatter.Deserialize(fs);
  660.  
  661.                  ClearBoard();
  662.                  MakeBoard();
  663.                  init(CheckersData);
  664.         }
  665.         private void init(List<Elems> elems)
  666.         {
  667.             foreach(var elem in elems)
  668.             {
  669.                 StackPanel stackPanel = (StackPanel)GetGridElement(CheckersGrid, elem.r, elem.c);
  670.                 Button button = new Button();
  671.                 button.Click += new RoutedEventHandler(button_Click);
  672.                 button.Height = 60;
  673.                 button.Width = 60;
  674.                 button.HorizontalAlignment = HorizontalAlignment.Center;
  675.                 button.VerticalAlignment = VerticalAlignment.Center;
  676.                 var redBrush = new ImageBrush();
  677.                 redBrush.ImageSource = new BitmapImage(new Uri("Resources/red60p.png", UriKind.Relative));
  678.                 var blackBrush = new ImageBrush();
  679.                 blackBrush.ImageSource = new BitmapImage(new Uri("Resources/black60p.png", UriKind.Relative));
  680.                 if (elem.color.Contains("Red"))
  681.                 {
  682.                     button.Background = redBrush;
  683.                     button.Name = elem.color;
  684.                     stackPanel.Children.Add(button);
  685.                 }
  686.                 if (elem.color.Contains("Black"))
  687.                 {
  688.                     button.Background = blackBrush;
  689.                     button.Name = elem.color;
  690.                     stackPanel.Children.Add(button);
  691.                 }
  692.             }
  693.            
  694.            
  695.         }
  696.     }
  697. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement