I have run into a few issues with a program of mine. It is a school assignment and I've gotten most of the code down but I'm running into compiler errors. I am to create a tic tac toe simulator (no human players) track the game with a 2d array and then delcare a winner. I had my code running ok but then started to break things up into differnet objects and I think I've messed it up. I keep getting comiler errors that say:
Error 1 'System.Drawing.Point' does not contain a definition for 'x' and no extension method 'x' accepting a first argument of type 'System.Drawing.Point' could be found (are you missing a using directive or an assembly reference?) C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 119 23 Unit7
Error 3 'System.Drawing.Point' does not contain a definition for 'x' and no extension method 'x' accepting a first argument of type 'System.Drawing.Point' could be found (are you missing a using directive or an assembly reference?) C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 128 35Unit7
Error 2 'System.Drawing.Point' does not contain a definition for 'y' and no extension method 'y' accepting a first argument of type 'System.Drawing.Point' could be found (are you missing a using directive or an assembly reference?) C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 120 23 Unit7
Error 7 Cannot convert null to 'System.Drawing.Point' because it is a non-nullable value type C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 139 20 Unit7
Error 4 The name 'gameBoard' does not exist in the current context C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 134 21 Unit7
Error 5 The name 'y' does not exist in the current context C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 134 34 Unit7
Error 6 The name 'y' does not exist in the current context C:\Users\documents\visual studio 2013\Projects\Unit7\Unit7\Form1.cs 136 41 Unit7
The other thing I have had issues with is that I can't seem to change the size of the x's and o' so that they are bigger and more alligned than they are now, and I would like to have lines that denote the board on screen if i could too but I'm not sure I know how to do that. I searched and with no luck in a way to help this.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Kim_Johnson_Unit7
{
public partial class TTT_frm : Form
{
private Random Generated = new Random();
private Point LastMove;
private const int Board_Size = 3;
const int Squares = 9;
char[] XorO = new char[Squares];
public TTT_frm()
{
InitializeComponent();
}
private void TTT_frm_Load(object sender, EventArgs e)
{
}
private void Sim_btn_Click(object sender, EventArgs e)
{
//Erase contents of Array
for (int i = 0; i < Squares; i++)
{
XorO[i] = ' ';
}
//Erase contents of Results label
Result_lbl.Text = " ";
//Set fist and second player X's and O's
char FirstPlayer = 'O';
char SecondPlayer = 'X';
//Generate the random numbers for the grid
int[] position = new int[5];
position[0] = Generated.Next(9);
for (int i = 1; i < 5; i++)
{
int temp = Generated.Next(9);
for (int j = 0; j < i; j++)
{
if (temp == position[j])
{
i--;
break;
}
else
{
position[i] = temp;
}
}
}
//Get first players positions
for (int i = 0; i < 5; i++)
{
XorO[position[i]] = FirstPlayer;
}
for (int i = 0; i < Squares; i++)
{
if (XorO[i] != FirstPlayer)
{
XorO[i] = SecondPlayer;
}
}
//Put the X's or O's in the labels
A1_lbl.Text = XorO[0].ToString();
A2_lbl.Text = XorO[1].ToString();
A3_lbl.Text = XorO[2].ToString();
B1_lbl.Text = XorO[3].ToString();
B2_lbl.Text = XorO[4].ToString();
B3_lbl.Text = XorO[5].ToString();
C1_lbl.Text = XorO[6].ToString();
C2_lbl.Text = XorO[7].ToString();
C3_lbl.Text = XorO[8].ToString();
//See Who Won
switch(Winner())
{
case 'O':
Result_lbl.Text = "O Wins!";
break;
case 'x':
Result_lbl.Text = "x Wins!";
break;
case 'T':
Result_lbl.Text = "It Was a Tie!";
break;
}
}
private void GenerateNextStep(char playerChar, char[][] gameBoard)
{
int x;
int y;
if (LastMove ==null)
{
//Is the first move and can place anywhere
x = Generated.Next() % Board_Size;
y = Generated.Next() % Board_Size;
}
else
{
Point p = FindClosest();
x = p.x;
y = p.y;
}
gameBoard[x][y] = playerChar;
LastMove = new Point(x, y);
}
private Point FindClosest()
{
for (int x = LastMove.x - 1; x < x +1; x++)
{
if (x < 0 || x >= Board_Size)
{
continue;
}
if (gameBoard[x][y] == ' ')
{
return new Point(x, y);
}
}
return null;
}
private char Winner()
{
//Return result of game so that a determination can be made
//Returns X, O or T
char winner = ' ';
int Win_Sequence = 0;
//Columns
if (XorO[0].Equals(XorO[3]) && XorO[0].Equals(XorO[6]))
{
Win_Sequence++;
winner = XorO[0];
}
if (XorO[1].Equals(XorO[4]) && XorO[1].Equals(XorO[7]))
{
Win_Sequence++;
winner = XorO[1];
}
if (XorO[2].Equals(XorO[5]) && XorO[2].Equals(XorO[8]))
{
Win_Sequence++;
winner = XorO[2];
}
//Rows
if (XorO[0].Equals(XorO[1]) && XorO[0].Equals(XorO[2]))
{
Win_Sequence++;
winner = XorO[0];
}
if (XorO[3].Equals(XorO[4]) && XorO[3].Equals(XorO[5]))
{
Win_Sequence++;
winner = XorO[3];
}
if (XorO[6].Equals(XorO[7]) && XorO[6].Equals(XorO[8]))
{
Win_Sequence++;
winner = XorO[6];
}
//Diagonal
if (XorO[0].Equals(XorO[4]) && XorO[0].Equals(XorO[8]))
{
Win_Sequence++;
winner = XorO[0];
}
if (XorO[2].Equals(XorO[4]) && XorO[2].Equals(XorO[8]))
{
Win_Sequence++;
winner = XorO[2];
}
if (Win_Sequence == 0 || Win_Sequence > 1)
{
winner = 'T';
}
return winner;
}
private void Exit_btn_Click(object sender, EventArgs e)
{
this.Close();
}
}
}