Меняющаяся рандомная матрица: сохранить текущее состояние, и следующий запуск начать с него - 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();
            }
        }
 
 
    }
}

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы