Click here to Skip to main content
15,900,461 members
Home / Discussions / C#
   

C#

 
AnswerRe: Trying to prevent the DataGridView Default Error Dialog Pin
paas10-Nov-08 7:40
paas10-Nov-08 7:40 
QuestionUnified Session Variable Pin
k66610-Nov-08 5:56
k66610-Nov-08 5:56 
AnswerRe: Unified Session Variable Pin
Ennis Ray Lynch, Jr.10-Nov-08 7:11
Ennis Ray Lynch, Jr.10-Nov-08 7:11 
GeneralAnd Pin
Ennis Ray Lynch, Jr.10-Nov-08 7:13
Ennis Ray Lynch, Jr.10-Nov-08 7:13 
GeneralRe: And Pin
k66610-Nov-08 7:23
k66610-Nov-08 7:23 
GeneralRe: And Pin
Ennis Ray Lynch, Jr.10-Nov-08 7:27
Ennis Ray Lynch, Jr.10-Nov-08 7:27 
GeneralRe: And Pin
Wendelius10-Nov-08 7:34
mentorWendelius10-Nov-08 7:34 
QuestionSave and Load problem on game of life! Pin
b3rt10-Nov-08 5:08
b3rt10-Nov-08 5:08 
Hay,

Im new to these forums a friend recommended them!

I have created a Game Of Life in C#,

and the only thing to make it complete is a open and save secton,
the full game code is below:

[code]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{

private int SQsize = 25;
private int[,] paintSQ = new int[50, 50];
private int shape = 1;
private int gridLines = 1;
private int maxRow = 20;
private int maxCol = 20;
private int gridSize = 500;
private int speed = 100;





public Form1()
{

InitializeComponent();



}


private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{

//Paint grid

if (gridLines == 1)
{
Graphics grid = e.Graphics;
Pen myPen = new Pen(Color.Black, 1); //create a pen object
for (int a = 0; a <= this.gridSize; a += this.SQsize)
{
grid.DrawLine(myPen, 0, a, gridSize, a); //use the DrawLine Horizontal
grid.DrawLine(myPen, a, 0, a, gridSize); //use the DrawLine Vertical
}
myPen.Dispose();
}

Graphics paint = e.Graphics;
SolidBrush myBrush = new SolidBrush(colorDialog1.Color);

if (gridSize == 500 && SQsize == 10)
{
this.maxCol = 50;
this.maxRow = 50;
toolStripStatusLabel1.Text = "Grid Size: Large 50x50";
}
if (gridSize == 500 && SQsize == 25)
{
this.maxCol = 20;
this.maxRow = 20;
toolStripStatusLabel1.Text = "Grid Size: Large 20x20";
}
if (gridSize == 500 && SQsize == 50)
{
this.maxCol = 10;
this.maxRow = 10;
toolStripStatusLabel1.Text = "Grid Size: Large 10x10";
}
if (gridSize == 250 && SQsize == 10)
{
this.maxCol = 25;
this.maxRow = 25;
toolStripStatusLabel1.Text = "Grid Size: Medium 25x25";
}
if (gridSize == 250 && SQsize == 25)
{
this.maxCol = 10;
this.maxRow = 10;
toolStripStatusLabel1.Text = "Grid Size: Medium 10x10";
}
if (gridSize == 250 && SQsize == 50)
{
this.maxCol = 5;
this.maxRow = 5;
toolStripStatusLabel1.Text = "Grid Size: Medium 5x5";
}
if (gridSize == 200 && SQsize == 10)
{
this.maxCol = 20;
this.maxRow = 20;
toolStripStatusLabel1.Text = "Grid Size: Small 20x20";
}
if (gridSize == 200 && SQsize == 25)
{
this.maxCol = 8;
this.maxRow = 8;
toolStripStatusLabel1.Text = "Grid Size: Small 8x8";
}
if (gridSize == 200 && SQsize == 50)
{
this.maxCol = 4;
this.maxRow = 4;
toolStripStatusLabel1.Text = "Grid Size: Small 4x4";
}
int cellRow = 0;

while (cellRow < maxRow)
{
int cellCol = 0;

while (cellCol < maxCol)
{
if (shape == 1)
{
if (paintSQ[cellCol, cellRow] == 1)
{

paint.FillRectangle(myBrush, (cellCol * this.SQsize) + 1, (cellRow * this.SQsize) + 1, this.SQsize - 1, this.SQsize - 1);
}
}
if (shape == 0)
{

if (paintSQ[cellCol, cellRow] == 1)
{
paint.SmoothingMode = SmoothingMode.HighQuality;
paint.FillEllipse(myBrush, new Rectangle((cellCol * this.SQsize), (cellRow * this.SQsize), this.SQsize, this.SQsize));
}
}
cellCol++;
}
cellRow++;
}
myBrush.Dispose();


}


private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.X < pictureBox1.Width && e.Y < pictureBox1.Height && e.X > 0 && e.Y > 0 && e.Button == MouseButtons.Left)
{
int xMouse = 0;
int yMouse = 0;
double xMouse1 = (e.X - 1) / SQsize;
double yMouse1 = (e.Y - 1) / SQsize;
xMouse = (int)System.Math.Ceiling(xMouse1);
yMouse = (int)System.Math.Ceiling(yMouse1);
this.paintSQ[xMouse, yMouse] = 1;
pictureBox1.Refresh();
}

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.X < pictureBox1.Width && e.Y < pictureBox1.Height && e.X > 0 && e.Y > 0 && e.Button == MouseButtons.Left)
{
int xMouse = 0;
int yMouse = 0;
double xMouse1 = (e.X - 1) / SQsize;
double yMouse1 = (e.Y - 1) / SQsize;
xMouse = (int)System.Math.Ceiling(xMouse1);
yMouse = (int)System.Math.Ceiling(yMouse1);
this.paintSQ[xMouse, yMouse] = 1;
pictureBox1.Refresh();
}



}


private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}

private void colourToolStripMenuItem_Click(object sender, EventArgs e)
{
colorDialog1.ShowDialog();
}

private void smallToolStripMenuItem_Click_1(object sender, EventArgs e)
{

maxRow = 10;
maxCol = 10;
gridSize = 200;
Refresh();

}



private void mediumToolStripMenuItem_Click(object sender, EventArgs e)
{
gridSize = 250;
maxRow = 25;
maxCol = 25;
Refresh();

}

private void largeToolStripMenuItem_Click(object sender, EventArgs e)
{
gridSize = 500;
maxRow = 50;
maxCol = 50;
Refresh();

}


private void exitToolStripMenuItem_Click_1(object sender, EventArgs e)
{
Close();
}

private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{

}

private void timer1_Tick(object sender, EventArgs e)
{
int[,] tempPaintSQ = new int[50, 50];
int cellRow = 0;

while (cellRow < maxRow)
{
int cellCol = 0;

while (cellCol < maxCol)
{

int cellAlive = 0;


if (cellCol - 1 >= 0 && cellRow - 1 >= 0 && cellCol - 1 < this.maxCol && cellRow - 1 < this.maxRow)
{
if (paintSQ[cellCol - 1, cellRow - 1] == 1)
{
cellAlive++;
}
}

if (cellCol - 1 >= 0 && cellRow >= 0 && cellCol - 1 < this.maxCol && cellRow < this.maxRow)
{
if (paintSQ[cellCol - 1, cellRow] == 1)
{
cellAlive++;
}
}

if (cellCol - 1 >= 0 && cellRow + 1 >= 0 && cellCol - 1 < this.maxCol && cellRow + 1 < this.maxRow)
{
if (paintSQ[cellCol - 1, cellRow + 1] == 1)
{
cellAlive++;
}
}


if (cellCol >= 0 && cellRow - 1 >= 0 && cellCol < this.maxCol && cellRow - 1 < this.maxRow)
{
if (paintSQ[cellCol, cellRow - 1] == 1)
{
cellAlive++;
}
}
if (cellCol >= 0 && cellRow + 1 >= 0 && cellCol < this.maxCol && cellRow + 1 < this.maxRow)
{
if (paintSQ[cellCol, cellRow + 1] == 1)
{
cellAlive++;
}
}

if (cellCol >= +1 && cellRow - 1 >= 0 && cellCol + 1 < this.maxCol && cellRow - 1 < this.maxRow)
{
if (paintSQ[cellCol + 1, cellRow - 1] == 1)
{
cellAlive++;
}
}
if (cellCol + 1 >= 0 && cellRow >= 0 && cellCol + 1 < this.maxCol && cellRow < this.maxRow)
{
if (paintSQ[cellCol + 1, cellRow] == 1)
{
cellAlive++;
}
}
if (cellCol + 1 >= 0 && cellRow + 1 >= 0 && cellCol + 1 < this.maxCol && cellRow + 1 < this.maxRow)
{
if (paintSQ[cellCol + 1, cellRow + 1] == 1)
{
cellAlive++;
}
}

if (paintSQ[cellCol, cellRow] == 1)
{
if (cellAlive < 2)
{

tempPaintSQ[cellCol, cellRow] = 0;
}
if (cellAlive == 2 || cellAlive == 3)
{

tempPaintSQ[cellCol, cellRow] = 1;
}

if (cellAlive > 3)
{

tempPaintSQ[cellCol, cellRow] = 0;
}
}
else
{
if (cellAlive == 3)
{ tempPaintSQ[cellCol, cellRow] = 1; }
else
{ tempPaintSQ[cellCol, cellRow] = 0; }

}


cellCol++;
}
cellRow++;



}
this.paintSQ = tempPaintSQ;
speedBarMove();
cellcountAliveDead();
pictureBox1.Refresh();

}
private void speedBarMove()
{
if (speedBar.Value == 0)
{
timer1.Interval = 400;
}
if (speedBar.Value == 1)
{
timer1.Interval = 200;
}
if (speedBar.Value == 2)
{
timer1.Interval = 100;
}
if (speedBar.Value == 3)
{
timer1.Interval = 50;
}
if (speedBar.Value == 4)
{
timer1.Interval = 5;
}
}
private void start_Click(object sender, EventArgs e)
{
timer1.Enabled = true;

}

private void stop_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}

private void Clear_Click(object sender, EventArgs e)
{
int cellRow = 0;

while (cellRow < maxRow)
{
int cellCol = 0;

while (cellCol < maxCol)
{

paintSQ[cellCol, cellRow] = 0;

cellCol++;
}
cellRow++;
}


pictureBox1.Refresh();

}

private void button1_Click(object sender, EventArgs e)
{
colorDialog1.ShowDialog();


}

private void onToolStripMenuItem_Click(object sender, EventArgs e)
{
gridLines = 1;
pictureBox1.Refresh();
}

private void squareToolStripMenuItem_Click(object sender, EventArgs e)
{
shape = 1;
pictureBox1.Refresh();
}

private void circleToolStripMenuItem_Click(object sender, EventArgs e)
{
shape = 0;
pictureBox1.Refresh();
}

private void offToolStripMenuItem_Click(object sender, EventArgs e)
{
gridLines = 0;
pictureBox1.Refresh();
}

private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
SQsize = 10;
pictureBox1.Refresh();
}

private void mediumToolStripMenuItem1_Click(object sender, EventArgs e)
{
SQsize = 25;
pictureBox1.Refresh();
}

private void largeToolStripMenuItem1_Click(object sender, EventArgs e)
{
SQsize = 50;
pictureBox1.Refresh();

}

private void slowToolStripMenuItem_Click(object sender, EventArgs e)
{
timer1.Interval = 400;
speed = 400;
if (speed == 400)
{
speedBar.Value = 0;
}
}

private void slowToolStripMenuItem1_Click(object sender, EventArgs e)
{
timer1.Interval = 200;
speed = 200;
if (speed == 200)
{
speedBar.Value = 1;
}

}

private void mediumToolStripMenuItem2_Click(object sender, EventArgs e)
{
timer1.Interval = 100;
speed = 100;
if (speed == 100)
{
speedBar.Value = 2;
}
}

private void fastToolStripMenuItem_Click(object sender, EventArgs e)
{
timer1.Interval = 50;
speed = 50;
if (speed == 50)
{
speedBar.Value = 3;
}
}

private void lightSpeedToolStripMenuItem_Click(object sender, EventArgs e)
{
timer1.Interval = 5;
speed = 5;
if (speed == 5)
{
speedBar.Value = 4;
}
}
private void cellcountAliveDead()
{
int currentAlive = 0;
int currentDead = 0;

int cellRow = 0;
while (cellRow < maxRow)
{
int cellCol = 0;

while (cellCol < maxCol)
{


if (paintSQ[cellCol, cellRow] == 1)
{
currentAlive++;
}
if (paintSQ[cellCol, cellRow] == 0)
{
currentDead++;
}
cellCol++;
}
cellRow++;
}


toolStripStatusLabel2.Text = "Cells Alive: " + currentAlive;
toolStripStatusLabel3.Text = "Dead Cells: " + currentDead;

}

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{

}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{

}


}


}


[/code]
I know there is a lot of code there sorry. Im trying to save using the following processes and open in the revers
[code]void saveMyData()
{
Stream outputStream = File.OpenWrite(@"C:\myData.dat");

for (int x = 0; x < myData.Length; x++ )
{
outputStream.WriteByte( myData[x] );
}
outputStream.Close();
}
[/code]
This is the example ive found but i cant figure out how to edit it to work with my code so it will save the current live cells and the current dead cells.

Thanks

b3rt!
AnswerCP Warning: LONG code and not using code tags Pin
leckey10-Nov-08 9:27
leckey10-Nov-08 9:27 
QuestionStrikethrough Font with Datagridview Control [modified] Pin
Paul Unsworth10-Nov-08 4:03
Paul Unsworth10-Nov-08 4:03 
AnswerRe: Strikethrough Font with Datagridview Control Pin
Wendelius10-Nov-08 6:42
mentorWendelius10-Nov-08 6:42 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Paul Unsworth10-Nov-08 21:22
Paul Unsworth10-Nov-08 21:22 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Wendelius11-Nov-08 4:08
mentorWendelius11-Nov-08 4:08 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Paul Unsworth11-Nov-08 5:15
Paul Unsworth11-Nov-08 5:15 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Wendelius11-Nov-08 5:36
mentorWendelius11-Nov-08 5:36 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Paul Unsworth12-Nov-08 2:35
Paul Unsworth12-Nov-08 2:35 
GeneralRe: Strikethrough Font with Datagridview Control Pin
Wendelius13-Nov-08 10:36
mentorWendelius13-Nov-08 10:36 
Questionfast search Pin
duta10-Nov-08 3:42
duta10-Nov-08 3:42 
AnswerRe: fast search Pin
Christian Graus10-Nov-08 3:44
protectorChristian Graus10-Nov-08 3:44 
AnswerRe: fast search Pin
Ennis Ray Lynch, Jr.10-Nov-08 4:26
Ennis Ray Lynch, Jr.10-Nov-08 4:26 
AnswerRe: fast search Pin
Wendelius10-Nov-08 6:29
mentorWendelius10-Nov-08 6:29 
AnswerRe: fast search Pin
riced10-Nov-08 7:22
riced10-Nov-08 7:22 
AnswerRe: fast search Pin
Pete O'Hanlon10-Nov-08 11:04
mvePete O'Hanlon10-Nov-08 11:04 
GeneralRe: fast search Pin
jas0n2310-Nov-08 22:23
jas0n2310-Nov-08 22:23 
AnswerRe: fast search Pin
Mark Churchill10-Nov-08 16:01
Mark Churchill10-Nov-08 16:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.