Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Drawing.Drawing2D;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10.  
  11. namespace LifeGame
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         //
  16.         private Graphics graphics;
  17.         private Pen pen;
  18.         private int gen;
  19.         private bool[,] board;
  20.         private bool[,] boardNextGen;
  21.         private System.Timers.Timer gameTimer;
  22.         private Random rnd;
  23.  
  24.         //
  25.         public Form1()
  26.         {
  27.             InitializeComponent();
  28.             gameTimer = new System.Timers.Timer();
  29.             gameTimer.Interval = 1000;
  30.             gameTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer);
  31.             board = new bool[50, 50];
  32.             boardNextGen = new bool[50, 50];
  33.             rnd = new Random();
  34.            
  35.         }
  36.         void OnTimer(object sender, System.Timers.ElapsedEventArgs e)
  37.         {
  38.             Invalidate();
  39.             gen++;
  40.             drawBoard();
  41.             //label1.Text = "Generations: " + gen;
  42.            
  43.         }
  44.  
  45.         private void button1_Click(object sender, EventArgs e)
  46.         {
  47.             gameTimer.Start();
  48.             label1.Visible = true;
  49.             button1.Visible = false;
  50.             button3.Visible = true;
  51.             generateGameBoard();
  52.             drawBoard();
  53.         }
  54.         private void drawBoard()
  55.         {
  56.             graphics = this.CreateGraphics();
  57.             pen = new Pen(Brushes.Black, 1);
  58.             graphics.DrawRectangle(pen, 1, 1, 5, 5);
  59.             graphics.FillRectangle(Brushes.Black, 1, 1, 5, 5);
  60.             for (int i = 0; i < board.GetLength(0); i++)
  61.             {
  62.                 for (int j = 0; j < board.GetLength(1); j++)
  63.                 {
  64.                     if (board[i, j])
  65.                     {
  66.                             graphics.DrawRectangle(pen, i + (i * 7), j + (j * 7), 5, 5);
  67.                             graphics.FillRectangle(Brushes.Black, i + (i * 7), j + (j * 7), 5, 5);
  68.                        
  69.                     }
  70.                 }
  71.             }
  72.             nextGen();
  73.             board = boardNextGen;
  74.         }
  75.         private void generateGameBoard()
  76.         {
  77.             for (int i = 0; i < board.GetLength(0); i++ )
  78.             {
  79.                 for (int j = 0; j < board.GetLength(1); j++)
  80.                 {
  81.                     board[i, j] = generateBool();
  82.                 }
  83.             }
  84.         }
  85.         private bool generateBool()
  86.         {
  87.             return rnd.Next(0, 2) == 0;
  88.         }
  89.         private void nextGen()
  90.         {
  91.             for (int i = 0; i < 49; i++)
  92.             {
  93.                 for (int j = 0; j < 49; j++)
  94.                 {
  95.                     #region left upper corner
  96.                     if ((i == 0) && (j == 0))
  97.                     {
  98.                         int counter = 0;
  99.                         if (board[i + 1, j])
  100.                             counter++;
  101.                         if (board[i, j + 1])
  102.                             counter++;
  103.                         if (board[i + 1, j + 1])
  104.                             counter++;
  105.                         // live or die
  106.                         if (counter < 2)
  107.                             boardNextGen[i, j] = false;
  108.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  109.                             boardNextGen[i, j] = true;
  110.                         if ((counter == 3) && (!board[i, j]))
  111.                             boardNextGen[i, j] = true;
  112.                         if (counter > 3)
  113.                             boardNextGen[i, j] = false;
  114.                     }
  115.                     #endregion
  116.  
  117.                     #region right upper corner
  118.                     else if ((i == 0) && (j == 49))
  119.                     {
  120.                         int counter = 0;
  121.                         if (board[i, j - 1])
  122.                             counter++;
  123.                         if (board[i + 1, j - 1])
  124.                             counter++;
  125.                         if (board[i + 1, j- 1])
  126.                             counter++;
  127.                         // live or die
  128.                         if (counter < 2)
  129.                             boardNextGen[i, j] = false;
  130.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  131.                             boardNextGen[i, j] = true;
  132.                         if ((counter == 3) && (!board[i, j]))
  133.                             boardNextGen[i, j] = true;
  134.                         if (counter > 3)
  135.                             boardNextGen[i, j] = false;
  136.                     }
  137.                     #endregion
  138.  
  139.                     #region right down corner
  140.                     else if ((i == 49) && (j == 49))
  141.                     {
  142.                         int counter = 0;
  143.                         if (board[i - 1, j])
  144.                             counter++;
  145.                         if (board[i, j - 1])
  146.                             counter++;
  147.                         if (board[i - 1, j - 1])
  148.                             counter++;
  149.                         // live or die
  150.                         if (counter < 2)
  151.                             boardNextGen[i, j] = false;
  152.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  153.                             boardNextGen[i, j] = true;
  154.                         if ((counter == 3) && (!board[i, j]))
  155.                             boardNextGen[i, j] = true;
  156.                         if (counter > 3)
  157.                             boardNextGen[i, j] = false;
  158.                     }
  159.                     #endregion
  160.  
  161.                     #region left down corner
  162.                     else if ((i == 49) && (j == 0))
  163.                     {
  164.                         int counter = 0;
  165.                         if (board[i - 1, j + 1])
  166.                             counter++;
  167.                         if (board[i, j + 1])
  168.                             counter++;
  169.                         if (board[i - 1, j + 1])
  170.                             counter++;
  171.                         // live or die
  172.                         if (counter < 2)
  173.                             boardNextGen[i, j] = false;
  174.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  175.                             boardNextGen[i, j] = true;
  176.                         if ((counter == 3) && (!board[i, j]))
  177.                             boardNextGen[i, j] = true;
  178.                         if (counter > 3)
  179.                             boardNextGen[i, j] = false;
  180.                     }
  181.                     #endregion
  182.                    
  183.                     #region upper row
  184.                     else if ((j < 49) && (j>0) && (i == 0))
  185.                     {
  186.                         int counter = 0;
  187.                         if (board[i, j - 1])
  188.                             counter++;
  189.                         if (board[i+1, j - 1])
  190.                             counter++;
  191.                         if (board[i + 1, j ])
  192.                             counter++;
  193.                         if (board[i+1, j + 1])
  194.                             counter++;
  195.                         if (board[i, j + 1])
  196.                             counter++;
  197.                         // live or die
  198.                         if (counter < 2)
  199.                             boardNextGen[i, j] = false;
  200.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  201.                             boardNextGen[i, j] = true;
  202.                         if ((counter == 3) && (!board[i, j]))
  203.                             boardNextGen[i, j] = true;
  204.                         if (counter > 3)
  205.                             boardNextGen[i, j] = false;
  206.                     }
  207.                     #endregion
  208.  
  209.                     #region down row
  210.                     else if ((i == 49) && (j > 0) && (j < 49))
  211.                     {
  212.                         int counter = 0;
  213.                         if (board[i, j - 1])
  214.                             counter++;
  215.                         if (board[i - 1, j - 1])
  216.                             counter++;
  217.                         if (board[i - 1, j])
  218.                             counter++;
  219.                         if (board[i - 1, j + 1])
  220.                             counter++;
  221.                         if (board[i, j + 1])
  222.                             counter++;
  223.                         // live or die
  224.                         if (counter < 2)
  225.                             boardNextGen[i, j] = false;
  226.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  227.                             boardNextGen[i, j] = true;
  228.                         if ((counter == 3) && (!board[i, j]))
  229.                             boardNextGen[i, j] = true;
  230.                         if (counter > 3)
  231.                             boardNextGen[i, j] = false;
  232.                     }
  233.                     #endregion
  234.  
  235.                     #region left coll
  236.                     else if ((i < 49) && (i > 0) && (j == 0))
  237.                     {
  238.                         int counter = 0;
  239.                         if (board[i-1, j])
  240.                             counter++;
  241.                         if (board[i - 1, j + 1])
  242.                             counter++;
  243.                         if (board[i, j+1])
  244.                             counter++;
  245.                         if (board[i + 1, j + 1])
  246.                             counter++;
  247.                         if (board[i+1, j])
  248.                             counter++;
  249.                         // live or die
  250.                         if (counter < 2)
  251.                             boardNextGen[i, j] = false;
  252.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  253.                             boardNextGen[i, j] = true;
  254.                         if ((counter == 3) && (!board[i, j]))
  255.                             boardNextGen[i, j] = true;
  256.                         if (counter > 3)
  257.                             boardNextGen[i, j] = false;
  258.                     }
  259.                     #endregion
  260.  
  261.                     #region right coll
  262.                     else if ((i>0) && (i<49) && (j==0))
  263.                     {
  264.                         int counter = 0;
  265.                         if (board[i - 1, j])
  266.                             counter++;
  267.                         if (board[i - 1, j - 1])
  268.                             counter++;
  269.                         if (board[i, j - 1])
  270.                             counter++;
  271.                         if (board[i + 1, j - 1])
  272.                             counter++;
  273.                         if (board[i + 1, j])
  274.                             counter++;
  275.                         // live or die
  276.                         if (counter < 2)
  277.                             boardNextGen[i, j] = false;
  278.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  279.                             boardNextGen[i, j] = true;
  280.                         if ((counter == 3) && (!board[i, j]))
  281.                             boardNextGen[i, j] = true;
  282.                         if (counter > 3)
  283.                             boardNextGen[i, j] = false;
  284.                     }
  285.                     #endregion
  286.  
  287.                     #region all
  288.                     else if ((i!=0) && (i!=49) && (j!=0) && (j!=49))
  289.                     {
  290.                         int counter = 0;
  291.                         if (board[i - 1, j-1])
  292.                             counter++;
  293.                         if (board[i - 1, j])
  294.                             counter++;
  295.                         if (board[i - 1, j - 1])
  296.                             counter++;
  297.                         if (board[i, j - 1])
  298.                             counter++;
  299.                         if (board[i, j+1])
  300.                             counter++;
  301.                         if (board[i + 1, j - 1])
  302.                             counter++;
  303.                         if (board[i + 1, j])
  304.                             counter++;
  305.                         if (board[i + 1, j + 1])
  306.                             counter++;
  307.                         // live or die
  308.                         if (counter < 2)
  309.                             boardNextGen[i, j] = false;
  310.                         if (((counter == 2) || (counter == 3)) && (board[i, j]))
  311.                             boardNextGen[i, j] = true;
  312.                         if ((counter == 3) && (!board[i, j]))
  313.                             boardNextGen[i, j] = true;
  314.                         if (counter > 3)
  315.                             boardNextGen[i, j] = false;
  316.                     }
  317.                     #endregion
  318.                    
  319.                 }
  320.             }
  321.         }
  322.         private void button2_Click(object sender, EventArgs e)
  323.         {
  324.             gameTimer.Stop();
  325.             graphics.Dispose();
  326.             Invalidate();
  327.             button1.Visible = true;
  328.             button2.Visible = false;
  329.             button3.Visible = false;
  330.         }
  331.         private void button3_Click(object sender, EventArgs e)
  332.         {
  333.             gameTimer.Stop();
  334.             button1.Visible = false;
  335.             button2.Visible = true;
  336.             button3.Visible = true;
  337.         }
  338.  
  339.     }
  340. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement