Меняющаяся рандомная матрица: сохранить текущее состояние, и следующий запуск начать с него - C#
Формулировка задачи:
у меня есть рандомная матрица, которая меняется. я хочу что бы в любой момент при нажатии "S" она сохранялась, а при новом запуске программы я мог её запустить, и продолжить с того места на котором остановился.
Решение задачи: «Меняющаяся рандомная матрица: сохранить текущее состояние, и следующий запуск начать с него»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Pods Otvet = new Pods(); Otvet.Vuvo1(); Otvet.Podsh(); } } class Pods { public int stroka = 15; public int stolb = 79; int doom = 0; int pokolen = 0; int kollife = 0; int kolrip = 0; public int[,] Matr1 = new int[15, 79]; public int[,] Matr2 = new int[15, 79]; public Random MyRandom = new Random(); public void Vuvo1() { for (int i = 0; i < stroka; i++) for (int j = 0; j < stolb; j++) { Matr1[i, j] = MyRandom.Next(0, 2); } for (int i = 0; i < stroka; i++) { for (int j = 0; j < stolb; j++) { if (Matr1[i, j] == 1) Console.Write("*"); else Console.Write(" "); } // Console.Write(Matr1[i, j]); Console.WriteLine(); } Console.WriteLine(); Console.Write("Поколение: " + pokolen); Console.WriteLine(); Console.ReadKey(); Console.Clear(); } public void Podsh() { while (true) { pokolen = pokolen + 1; kollife = 0; kolrip = 0; bool flag = false; for (int i = 0; i < stroka; i++) for (int j = 0; j < stolb; j++) { doom = 0; flag = false; if (i == 0 && j == 0) // угол верхний левый 11 { doom = Matr1[i, j + 1] + Matr1[i + 1, j] + Matr1[i + 1, j + 1] + Matr1[i, stolb - 1] + Matr1[i + 1, stolb - 1] + Matr1[stroka - 1, j] + Matr1[stroka - 1, j + 1] + Matr1[stroka - 1, stolb - 1]; flag = true; } if (i == 0 && j != 0 && j != stolb - 1) //строка { doom = Matr1[stroka - 1, j] + Matr1[stroka - 1, j - 1] + Matr1[stroka - 1, j + 1] + Matr1[1, j - 1] + Matr1[1, j] + Matr1[1, j + 1] + Matr1[0, j - 1] + Matr1[0, j + 1]; flag = true; } if (i == 0 && j == stolb - 1) // угол верхний правый 11 { doom = Matr1[0, 0] + Matr1[1, 0] + Matr1[stroka - 1, 0] + Matr1[0, stolb - 2] + Matr1[1, stolb - 2] + Matr1[1, stolb - 1] + Matr1[stroka - 1, stolb - 1] + Matr1[stroka - 1, stolb - 2]; flag = true; } if (j == stolb - 1 && i != stroka - 1 && i != 0) //нижний столб { doom = Matr1[i + 1, 0] + Matr1[i - 1, 0] + Matr1[i, 0] + Matr1[i - 1, j - 1] + Matr1[i - 1, j] + Matr1[i, j - 1] + Matr1[i + 1, j - 1] + Matr1[i + 1, j]; flag = true; } if (i == stroka - 1 && j == stolb - 1) // угол нижний правый 11 { doom = Matr1[0, 0] + Matr1[0, stolb - 1] + Matr1[0, stolb - 2] + Matr1[stroka - 2, 0] + Matr1[stroka - 1, 0] + Matr1[stroka - 1, stolb - 2] + Matr1[stroka - 2, stolb - 2] + Matr1[stroka - 1, stolb - 1]; flag = true; } if (i == stroka - 1 && j != 0 && j != stolb - 1) // нижняя строка { doom = Matr1[0, j - 1] + Matr1[0, j] + Matr1[0, j + 1] + Matr1[stroka - 1, j - 1] + Matr1[stroka - 2, j - 1] + Matr1[stroka - 1, j] + Matr1[stroka - 1, j + 1] + Matr1[stroka - 2, j + 1]; flag = true; } if (i == stroka - 1 && j == 0) //угол нижний левый 11 { doom = Matr1[0, 0] + Matr1[0, 1] + Matr1[0, stolb - 1] + Matr1[stroka - 2, 0] + Matr1[stroka - 2, 1] + Matr1[stroka - 1, 1] + Matr1[stroka - 2, stolb - 1] + Matr1[stroka - 1, stolb - 1]; flag = true; } if (j == 0 && i != 0 && i != stroka - 1) // столоб { doom = Matr1[i, stolb - 1] + Matr1[i - 1, stolb - 1] + Matr1[i + 1, stolb - 1] + Matr1[i - 1, j + 1] + Matr1[i - 1, j] + Matr1[i, j + 1] + Matr1[i + 1, j] + Matr1[i + 1, j + 1]; flag = true; } if (!flag) { doom = Matr1[i - 1, j + 1] + Matr1[i, j + 1] + Matr1[i + 1, j + 1] + Matr1[i + 1, j] + Matr1[i + 1, j - 1] + Matr1[i, j - 1] + Matr1[i - 1, j - 1] + Matr1[i - 1, j]; } if (Matr1[i, j] == 1) { if ((doom == 2) || (doom == 3)) Matr2[i, j] = 1; else Matr2[i, j] = 0; } if (Matr1[i, j] == 0) { if (doom == 3) Matr2[i, j] = 1; else Matr2[i, j] = 0; } if (Matr1[i, j] == 1) { kollife = kollife + 1; } if (Matr1[i, j] == 0) { kolrip = kolrip + 1; } } for (int i = 0; i < stroka; i++) { for (int j = 0; j < stolb; j++) { if (Matr2[i, j] == 1) Console.Write("*"); else Console.Write(" "); Matr1[i, j] = Matr2[i, j]; } Console.WriteLine(); } Console.WriteLine(); Console.Write("Поколение: " + pokolen); Console.WriteLine(); Console.Write("life: " + kollife); Console.WriteLine(); Console.Write("Rip: " + kolrip); Console.ReadKey(); Console.Clear(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д