Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace LifeGame
- {
- public partial class Form1 : Form
- {
- //
- private Graphics graphics;
- private Pen pen;
- private int gen;
- private bool[,] board;
- private bool[,] boardNextGen;
- private System.Timers.Timer gameTimer;
- private Random rnd;
- //
- public Form1()
- {
- InitializeComponent();
- gameTimer = new System.Timers.Timer();
- gameTimer.Interval = 1000;
- gameTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer);
- board = new bool[50, 50];
- boardNextGen = new bool[50, 50];
- rnd = new Random();
- }
- void OnTimer(object sender, System.Timers.ElapsedEventArgs e)
- {
- Invalidate();
- gen++;
- drawBoard();
- //label1.Text = "Generations: " + gen;
- }
- private void button1_Click(object sender, EventArgs e)
- {
- gameTimer.Start();
- label1.Visible = true;
- button1.Visible = false;
- button3.Visible = true;
- generateGameBoard();
- drawBoard();
- }
- private void drawBoard()
- {
- graphics = this.CreateGraphics();
- pen = new Pen(Brushes.Black, 1);
- graphics.DrawRectangle(pen, 1, 1, 5, 5);
- graphics.FillRectangle(Brushes.Black, 1, 1, 5, 5);
- for (int i = 0; i < board.GetLength(0); i++)
- {
- for (int j = 0; j < board.GetLength(1); j++)
- {
- if (board[i, j])
- {
- graphics.DrawRectangle(pen, i + (i * 7), j + (j * 7), 5, 5);
- graphics.FillRectangle(Brushes.Black, i + (i * 7), j + (j * 7), 5, 5);
- }
- }
- }
- nextGen();
- board = boardNextGen;
- }
- private void generateGameBoard()
- {
- for (int i = 0; i < board.GetLength(0); i++ )
- {
- for (int j = 0; j < board.GetLength(1); j++)
- {
- board[i, j] = generateBool();
- }
- }
- }
- private bool generateBool()
- {
- return rnd.Next(0, 2) == 0;
- }
- private void nextGen()
- {
- for (int i = 0; i < 49; i++)
- {
- for (int j = 0; j < 49; j++)
- {
- #region left upper corner
- if ((i == 0) && (j == 0))
- {
- int counter = 0;
- if (board[i + 1, j])
- counter++;
- if (board[i, j + 1])
- counter++;
- if (board[i + 1, j + 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region right upper corner
- else if ((i == 0) && (j == 49))
- {
- int counter = 0;
- if (board[i, j - 1])
- counter++;
- if (board[i + 1, j - 1])
- counter++;
- if (board[i + 1, j- 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region right down corner
- else if ((i == 49) && (j == 49))
- {
- int counter = 0;
- if (board[i - 1, j])
- counter++;
- if (board[i, j - 1])
- counter++;
- if (board[i - 1, j - 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region left down corner
- else if ((i == 49) && (j == 0))
- {
- int counter = 0;
- if (board[i - 1, j + 1])
- counter++;
- if (board[i, j + 1])
- counter++;
- if (board[i - 1, j + 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region upper row
- else if ((j < 49) && (j>0) && (i == 0))
- {
- int counter = 0;
- if (board[i, j - 1])
- counter++;
- if (board[i+1, j - 1])
- counter++;
- if (board[i + 1, j ])
- counter++;
- if (board[i+1, j + 1])
- counter++;
- if (board[i, j + 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region down row
- else if ((i == 49) && (j > 0) && (j < 49))
- {
- int counter = 0;
- if (board[i, j - 1])
- counter++;
- if (board[i - 1, j - 1])
- counter++;
- if (board[i - 1, j])
- counter++;
- if (board[i - 1, j + 1])
- counter++;
- if (board[i, j + 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region left coll
- else if ((i < 49) && (i > 0) && (j == 0))
- {
- int counter = 0;
- if (board[i-1, j])
- counter++;
- if (board[i - 1, j + 1])
- counter++;
- if (board[i, j+1])
- counter++;
- if (board[i + 1, j + 1])
- counter++;
- if (board[i+1, j])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region right coll
- else if ((i>0) && (i<49) && (j==0))
- {
- int counter = 0;
- if (board[i - 1, j])
- counter++;
- if (board[i - 1, j - 1])
- counter++;
- if (board[i, j - 1])
- counter++;
- if (board[i + 1, j - 1])
- counter++;
- if (board[i + 1, j])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- #region all
- else if ((i!=0) && (i!=49) && (j!=0) && (j!=49))
- {
- int counter = 0;
- if (board[i - 1, j-1])
- counter++;
- if (board[i - 1, j])
- counter++;
- if (board[i - 1, j - 1])
- counter++;
- if (board[i, j - 1])
- counter++;
- if (board[i, j+1])
- counter++;
- if (board[i + 1, j - 1])
- counter++;
- if (board[i + 1, j])
- counter++;
- if (board[i + 1, j + 1])
- counter++;
- // live or die
- if (counter < 2)
- boardNextGen[i, j] = false;
- if (((counter == 2) || (counter == 3)) && (board[i, j]))
- boardNextGen[i, j] = true;
- if ((counter == 3) && (!board[i, j]))
- boardNextGen[i, j] = true;
- if (counter > 3)
- boardNextGen[i, j] = false;
- }
- #endregion
- }
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- gameTimer.Stop();
- graphics.Dispose();
- Invalidate();
- button1.Visible = true;
- button2.Visible = false;
- button3.Visible = false;
- }
- private void button3_Click(object sender, EventArgs e)
- {
- gameTimer.Stop();
- button1.Visible = false;
- button2.Visible = true;
- button3.Visible = true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement