I am a beginner in C# and trying to learn how to program with OOP in mind. I am 100% that the code is not OOP-friendly at all, but the game is running and working, so if anyone could look throw the code and give me feedback on how to improve it, that would be helpful.
The game is a simple snake game with three players option. I have done two players part, but the code seems to be ugly and messy, so I didn't want to add anything more to the garbage, and I am completely ok if I have to redo everything I am doing this to learn anyways
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace snakeGame3players
{
public partial class Form1 : Form
{
private readonly List<Square> SnakeBoddy = new List<Square>();
private readonly List<Square> SnakeBoddy2 = new List<Square>();
private readonly List<Square> SnakeFoods1 = new List<Square>();
private readonly List<Square> SnakeFoods2 = new List<Square>();
private readonly List<Square> SnakeFoods3 = new List<Square>();
private readonly List<Square> SnakeFoods4 = new List<Square>();
System.Windows.Forms.Timer eventTimer = new System.Windows.Forms.Timer();
System.Windows.Forms.Timer foodTimer = new System.Windows.Forms.Timer();
System.Windows.Forms.Timer foodTimer2 = new System.Windows.Forms.Timer();
System.Windows.Forms.Timer foodTimer3 = new System.Windows.Forms.Timer();
System.Windows.Forms.Timer foodTimer4 = new System.Windows.Forms.Timer();
Random random = new Random();
bool exitFlag = false;
public Form1()
{
InitializeComponent();
choice1.Appearance = System.Windows.Forms.Appearance.Button;
choice2.Appearance = System.Windows.Forms.Appearance.Button;
choice3.Appearance = System.Windows.Forms.Appearance.Button;
choice1.Size = new Size(154, 56);
choice2.Size = new Size(154, 56);
choice3.Size = new Size(154, 56);
new Player1setting();
new Player2setting();
new FoodSetting();
GameTimer.Interval = 100;
this.KeyPreview = true;
GameTimer.Tick += UpdateScreen;
GameTimer.Start();
label3.Visible = false;
label2.Visible = false;
}
private void UpdateScreen(object sender, EventArgs e)
{
if (label1.Visible == true)
{
if (KeyInput.KeyInputs(Keys.Q))
{
Application.Restart();
Environment.Exit(0);
}
}
if (choice2.Checked && Player1setting.Gameover ==false)
{
if (KeyInput.KeyInputs(Keys.Right) && Player1setting.Movment != SnakeMovment.Left)
{
Player1setting.Movment = SnakeMovment.Right;
}
else if (KeyInput.KeyInputs(Keys.Left) && Player1setting.Movment != SnakeMovment.Right)
{
Player1setting.Movment = SnakeMovment.Left;
}
else if (KeyInput.KeyInputs(Keys.Up) && Player1setting.Movment != SnakeMovment.Down)
{
Player1setting.Movment = SnakeMovment.Up;
}
else if (KeyInput.KeyInputs(Keys.Down) && Player1setting.Movment != SnakeMovment.Up)
{
Player1setting.Movment = SnakeMovment.Down;
}
PlayerMovment();
}
pictureBox1.Invalidate();
if (choice1.Checked && Player2setting.Gameover2 == false)
{
if (KeyInput.KeyInputs(Keys.D) && Player2setting.Movment2 != SnakeMovment2.A)
{
Player2setting.Movment2 = SnakeMovment2.D;
}
else if (KeyInput.KeyInputs(Keys.A) && Player2setting.Movment2 != SnakeMovment2.D)
{
Player2setting.Movment2 = SnakeMovment2.A;
}
else if (KeyInput.KeyInputs(Keys.W) && Player2setting.Movment2 != SnakeMovment2.S)
{
Player2setting.Movment2 = SnakeMovment2.W;
}
else if (KeyInput.KeyInputs(Keys.S) && Player2setting.Movment2 != SnakeMovment2.W)
{
Player2setting.Movment2 = SnakeMovment2.S;
}
PlayerMovment2();
}
pictureBox1.Invalidate();
}
private void PlayerMovment()
{
if (choice2.Checked) {
for (int i = SnakeBoddy.Count - 1; i >= 0; i--)
{
if (i == 0)
{
switch (Player1setting.Movment)
{
case SnakeMovment.Right:
SnakeBoddy[i].X++;
break;
case SnakeMovment.Left:
SnakeBoddy[i].X--;
break;
case SnakeMovment.Up:
SnakeBoddy[i].Y--;
break;
case SnakeMovment.Down:
SnakeBoddy[i].Y++;
break;
}
int maxXPosition = pictureBox1.Size.Width / Player1setting.Width;
int maxYPosition = pictureBox1.Size.Height / Player1setting.Height;
if (
SnakeBoddy[i].X < 0 || SnakeBoddy[i].Y < 0 ||
SnakeBoddy[i].X > maxXPosition || SnakeBoddy[i].Y >= maxYPosition
)
{
Die();
}
for (int J = 1; J < SnakeBoddy.Count; J++)
{
if (SnakeBoddy[i].X == SnakeBoddy[J].X && SnakeBoddy[i].Y == SnakeBoddy[J].Y)
{
Die();
}
}
for (int g = 0; g < SnakeBoddy2.Count; g++)
{
if (SnakeBoddy[0].X == SnakeBoddy2[g].X && SnakeBoddy[0].Y == SnakeBoddy2[g].Y)
{
Player1setting.GameScore += FoodSetting.food2;
label3.Text = Player1setting.GameScore.ToString();
Die();
}
}
if (SnakeFoods1.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
EatFood();
}
if (SnakeFoods2.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
EatFood2();
}
if (SnakeFoods3.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
EatFood3();
}
if (SnakeFoods4.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
EatFood4();
}
}
else
{
SnakeBoddy[i].X = SnakeBoddy[i - 1].X;
SnakeBoddy[i].Y = SnakeBoddy[i - 1].Y;
}
}
}
}
private void PlayerMovment2()
{
if (choice1.Checked)
{
for (int x = SnakeBoddy2.Count - 1; x >= 0; x--)
{
if (x == 0)
{
switch (Player2setting.Movment2)
{
case SnakeMovment2.D:
SnakeBoddy2[x].X++;
break;
case SnakeMovment2.A:
SnakeBoddy2[x].X--;
break;
case SnakeMovment2.W:
SnakeBoddy2[x].Y--;
break;
case SnakeMovment2.S:
SnakeBoddy2[x].Y++;
break;
}
int maxXPosition2 = pictureBox1.Size.Width / Player2setting.Width2;
int maxYPosition2 = pictureBox1.Size.Height / Player2setting.Height2;
if (
SnakeBoddy2[x].X < 0 || SnakeBoddy2[x].Y < 0 ||
SnakeBoddy2[x].X > maxXPosition2 || SnakeBoddy2[x].Y >= maxYPosition2
)
{
Die2();
}
for (int h = 1; h < SnakeBoddy2.Count; h++)
{
if (SnakeBoddy2[x].X == SnakeBoddy2[h].X && SnakeBoddy2[x].Y == SnakeBoddy2[h].Y)
{
Die2();
}
}
for (int g = 0; g < SnakeBoddy.Count; g++)
{
if (SnakeBoddy2[0].X == SnakeBoddy[g].X && SnakeBoddy2[0].Y == SnakeBoddy[g].Y)
{
Player1setting.GameScore += FoodSetting.food2;
label2.Text = Player1setting.GameScore.ToString();
Die2();
}
}
if (SnakeFoods1.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
EatFood();
}
if (SnakeFoods2.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
EatFood2();
}
if (SnakeFoods3.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
EatFood3();
}
if (SnakeFoods4.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
EatFood4();
}
}
else
{
SnakeBoddy2[x].X = SnakeBoddy2[x - 1].X;
SnakeBoddy2[x].Y = SnakeBoddy2[x - 1].Y;
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Keyisup(object sender, KeyEventArgs e)
{
KeyInput.SnakeDirections(e.KeyCode, false);
}
private void Keyisdown(object sender, KeyEventArgs e)
{
KeyInput.SnakeDirections(e.KeyCode, true);
}
private void UpdateGame(object sender, PaintEventArgs e)
{
Graphics canvas = e.Graphics;
if (label1.Visible==false && Information.Visible==false)
{
foreach (Square SnakeFood in SnakeFoods1) {
canvas.FillRectangle(Brushes.Red,
new Rectangle(
SnakeFood.X * Player2setting.Width2,
SnakeFood.Y * Player2setting.Width2,
Player2setting.Width2, Player2setting.Height2
));
}
foreach (Square SnakeFoods2 in SnakeFoods2) {
canvas.FillRectangle(Brushes.Orange,
new Rectangle(
SnakeFoods2.X * Player1setting.Width,
SnakeFoods2.Y * Player1setting.Width,
Player1setting.Width, Player1setting.Height
));
}
foreach (Square SnakeFoods3 in SnakeFoods3) {
canvas.FillRectangle(Brushes.Purple,
new Rectangle(
SnakeFoods3.X * Player1setting.Width,
SnakeFoods3.Y * Player1setting.Width,
Player1setting.Width, Player1setting.Height
));
}
foreach (Square SnakeFoods4 in SnakeFoods4) {
canvas.FillRectangle(Brushes.Green,
new Rectangle(
SnakeFoods4.X * Player1setting.Width,
SnakeFoods4.Y * Player1setting.Width,
Player1setting.Width, Player1setting.Height
));
}
}
if (choice2.Checked)
{
if (Player1setting.Gameover == false)
{
Brush SnakeBoddyColor;
for (int i = 0; i < SnakeBoddy.Count; i++)
{
if (i == 0)
{
SnakeBoddyColor = Brushes.Black;
canvas.FillRectangle(SnakeBoddyColor,
new Rectangle(
SnakeBoddy[i].X * Player1setting.Width,
SnakeBoddy[i].Y * Player1setting.Width,
Player1setting.Width, Player1setting.Height
));
}
else
{
SnakeBoddyColor = Brushes.Red;
canvas.FillRectangle(SnakeBoddyColor,
new Rectangle(
SnakeBoddy[i].X * Player1setting.Width,
SnakeBoddy[i].Y * Player1setting.Width,
Player1setting.Width, Player1setting.Height
));
}
}
}
}
if (choice1.Checked)
{
if (Player2setting.Gameover2 == false)
{
Brush SnakeBoddyColor2;
for (int x = 0; x < SnakeBoddy2.Count; x++)
{
if (x == 0)
{
SnakeBoddyColor2 = Brushes.Black;
canvas.FillRectangle(SnakeBoddyColor2,
new Rectangle(
SnakeBoddy2[x].X * Player2setting.Width2,
SnakeBoddy2[x].Y * Player2setting.Width2,
Player2setting.Width2, Player2setting.Height2
));
}
else
{
SnakeBoddyColor2 = Brushes.Blue;
canvas.FillRectangle(SnakeBoddyColor2,
new Rectangle(
SnakeBoddy2[x].X * Player2setting.Width2,
SnakeBoddy2[x].Y * Player2setting.Width2,
Player2setting.Width2, Player2setting.Height2
));
}
}
}
}
if (Player2setting.GameScore2 > Player1setting.GameScore && Player2setting.Gameover2 == true)
{
string gameEnd = "Player 1 \n" + "With the score of " + Player2setting.GameScore2 + "\nPress Q to play again \n";
label1.Text = gameEnd;
label3.Visible = false;
label2.Visible = false;
label1.Visible = true;
}
if (Player2setting.GameScore2 < Player1setting.GameScore && Player1setting.Gameover == true)
{
string gameEnd = "Player 2 \n" + "With the score of " + Player1setting.GameScore + "\nPress Q to play again\n";
label1.Text = gameEnd;
label3.Visible = false;
label2.Visible = false;
label1.Visible = true;
}
if (Player2setting.GameScore2 == Player1setting.GameScore && Player1setting.Gameover == true && Player2setting.Gameover2 == true)
{
string gameEnd = "Draw \nPress Q to play again\n";
label1.Text = gameEnd;
label3.Visible = false;
label2.Visible = false;
label1.Visible = true;
}
}
private void StartGame()
{
pictureBox1.Visible = false;
Information.Visible = false;
Player1Information.Visible = false;
Player2Information.Visible = false;
Player3Information.Visible = false;
choice1.Visible = false;
choice2.Visible = false;
choice3.Visible = false;
GameStart.Visible = false;
pictureBox3.Visible = false;
pictureBox1.Visible = true;
label1.Visible = false;
new FoodSetting();
new Player1setting();
new Player2setting();
if (choice2.Checked)
{
label2.Visible = true;
SnakeBoddy.Clear();
Square SneakHead = new Square { X = 35, Y = 5 };
SnakeBoddy.Add(SneakHead);
if (choice2.Checked && !choice1.Checked)
{
Square SneakHead2 = new Square { X = 35, Y = 5 };
Player2setting.GameScore2 = -1;
SnakeBoddy2.Add(SneakHead2);
}
}
if (choice1.Checked)
{
label3.Visible = true;
SnakeBoddy2.Clear();
Square SneakHead2 = new Square { X = 10, Y = 5 };
SnakeBoddy2.Add(SneakHead2);
if (choice1.Checked && !choice2.Checked)
{
Square SneakHead = new Square { X = 10, Y = 5 };
Player1setting.GameScore = -1;
SnakeBoddy.Add(SneakHead);
}
}
label2.Text = Player1setting.GameScore.ToString();
label3.Text = Player2setting.GameScore2.ToString();
FoodEvent();
}
private void GenerateSnakeFood()
{
Square newFood = GenerateRandomFood();
while (SnakeFoods1.Any(snakeFood => snakeFood.X == newFood.X && snakeFood.Y == newFood.Y))
{
newFood = GenerateRandomFood();
}
SnakeFoods1.Add(newFood);
}
private void GenerateSnakeFood2()
{
Square newFood = GenerateRandomFood();
while (SnakeFoods2.Any(snakeFood => snakeFood.X == newFood.X && snakeFood.Y == newFood.Y))
{
newFood = GenerateRandomFood();
}
SnakeFoods2.Add(newFood);
}
private void GenerateSnakeFood3()
{
Square newFood = GenerateRandomFood();
while (SnakeFoods3.Any(snakeFood => snakeFood.X == newFood.X && snakeFood.Y == newFood.Y))
{
newFood = GenerateRandomFood();
}
SnakeFoods3.Add(newFood);
}
private void GenerateSnakeFood4()
{
Square newFood = GenerateRandomFood();
while (SnakeFoods4.Any(snakeFood => snakeFood.X == newFood.X && snakeFood.Y == newFood.Y))
{
newFood = GenerateRandomFood();
}
SnakeFoods4.Add(newFood);
}
private Square GenerateRandomFood()
{
int maxXPosition = pictureBox1.Size.Width / Player1setting.Width;
int maxYPosition = pictureBox1.Size.Height / Player1setting.Height;
return new Square { X = random.Next(0, maxXPosition), Y = random.Next(0, maxYPosition) };
}
private void EatFood()
{
if (SnakeFoods1.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
Square foodBody = new Square
{
X = SnakeBoddy[SnakeBoddy.Count - 1].X,
Y = SnakeBoddy[SnakeBoddy.Count - 1].Y
};
SnakeBoddy.Add(foodBody);
Player1setting.GameScore += FoodSetting.food1;
label2.Text = Player1setting.GameScore.ToString();
var snakePosition = SnakeBoddy[0];
SnakeFoods1.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
if (SnakeFoods1.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
Square foodBody2 = new Square
{
X = SnakeBoddy2[SnakeBoddy2.Count - 1].X,
Y = SnakeBoddy2[SnakeBoddy2.Count - 1].Y
};
SnakeBoddy2.Add(foodBody2);
Player2setting.GameScore2 += FoodSetting.food1;
label3.Text = Player2setting.GameScore2.ToString();
var snakePosition = SnakeBoddy2[0];
SnakeFoods1.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
}
private void EatFood2()
{
if (SnakeFoods2.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
Square foodBody3 = new Square
{
X = SnakeBoddy[SnakeBoddy.Count - 1].X,
Y = SnakeBoddy[SnakeBoddy.Count - 1].Y
};
SnakeBoddy.Add(foodBody3);
Square foodBody35 = new Square
{
X = SnakeBoddy[SnakeBoddy.Count - 1].X,
Y = SnakeBoddy[SnakeBoddy.Count - 1].Y
};
SnakeBoddy.Add(foodBody35);
Player1setting.GameScore += FoodSetting.food2;
label2.Text = Player1setting.GameScore.ToString();
var snakePosition = SnakeBoddy[0];
SnakeFoods2.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
if (SnakeFoods2.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
Square foodBody4 = new Square
{
X = SnakeBoddy2[SnakeBoddy2.Count - 1].X,
Y = SnakeBoddy2[SnakeBoddy2.Count - 1].Y
};
SnakeBoddy2.Add(foodBody4);
Square foodBody45 = new Square
{
X = SnakeBoddy2[SnakeBoddy2.Count - 1].X,
Y = SnakeBoddy2[SnakeBoddy2.Count - 1].Y
};
SnakeBoddy2.Add(foodBody45);
Player2setting.GameScore2 += FoodSetting.food2;
label3.Text = Player2setting.GameScore2.ToString();
var snakePosition = SnakeBoddy2[0];
SnakeFoods2.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
}
private void EatFood3()
{
if (SnakeFoods3.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
if (SnakeBoddy.Count > 1)
{
SnakeBoddy.RemoveAt(SnakeBoddy.Count - 1);
}
Player1setting.GameScore += FoodSetting.food3;
label2.Text = Player1setting.GameScore.ToString();
var snakePosition = SnakeBoddy[0];
SnakeFoods3.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
if (SnakeFoods3.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
if (SnakeBoddy2.Count > 1)
{
SnakeBoddy2.RemoveAt(SnakeBoddy2.Count - 1);
}
Player2setting.GameScore2 += FoodSetting.food3;
label3.Text = Player2setting.GameScore2.ToString();
var snakePosition = SnakeBoddy2[0];
SnakeFoods3.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
}
}
private void EatFood4()
{
if (SnakeFoods4.Any(s => s.X == SnakeBoddy[0].X && s.Y == SnakeBoddy[0].Y))
{
Player1setting.GameScore += FoodSetting.food4;
label2.Text = Player1setting.GameScore.ToString();
var snakePosition = SnakeBoddy[0];
SnakeFoods4.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
RandomEevent();
}
if (SnakeFoods4.Any(s => s.X == SnakeBoddy2[0].X && s.Y == SnakeBoddy2[0].Y))
{
Player2setting.GameScore2 += FoodSetting.food4;
label3.Text = Player2setting.GameScore2.ToString();
var snakePosition = SnakeBoddy2[0];
SnakeFoods4.RemoveAll(s => s.X == snakePosition.X && s.Y == snakePosition.Y);
RandomEevent();
}
}
private void RandomEevent()
{
var time = DateTime.Now;
eventTimer.Tick += new EventHandler(TimerEventProcessor);
eventTimer.Interval = 3000;
eventTimer.Start();
while (exitFlag == false)
{
//Application.DoEvents();
if ((DateTime.Now - time).TotalSeconds > 30)
{
eventTimer.Stop();
exitFlag = true;
}
}
}
private void TimerEventProcessor(Object sender, EventArgs e)
{
eventTimer.Enabled = true;
Player2setting.Movment2 = (SnakeMovment2)random.Next(4);
}
private void FoodEvent()
{
foodTimer.Tick += new EventHandler(FoodGenerator);
foodTimer.Interval = random.Next(1000,4000);
foodTimer.Start();
foodTimer2.Tick += new EventHandler(FoodGenerator2);
foodTimer2.Interval = random.Next(4000, 7000);
foodTimer2.Start();
foodTimer3.Tick += new EventHandler(FoodGenerator3);
foodTimer3.Interval = random.Next(5000, 10000);
foodTimer3.Start();
foodTimer4.Tick += new EventHandler(FoodGenerator4);
foodTimer4.Interval = random.Next(3000, 6000);
foodTimer4.Start();
}
private void FoodGenerator(object sender, EventArgs e)
{
foodTimer.Enabled = true;
GenerateSnakeFood();
}
private void FoodGenerator2(object sender, EventArgs e)
{
foodTimer2.Enabled = true;
GenerateSnakeFood2();
}
private void FoodGenerator3(object sender, EventArgs e)
{
foodTimer3.Enabled = true;
GenerateSnakeFood3();
}
private void FoodGenerator4(object sender, EventArgs e)
{
foodTimer4.Enabled = true;
GenerateSnakeFood4();
}
private void Die()
{
Player1setting.Gameover = true;
}
private void Die2()
{
Player2setting.Gameover2 = true;
}
private void GameStart_Click(object sender, EventArgs e)
{
if (choice1.Checked || choice2.Checked || choice3.Checked) {
StartGame();
}
}
}
}
KeyInput.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Windows.Forms;
namespace snakeGame3players
{
class KeyInput
{
private static Hashtable keyTable = new Hashtable();
public static bool KeyInputs(Keys key)
{
if (keyTable[key] == null)
{
return false;
}
return (bool)keyTable[key];
}
public static void SnakeDirections(Keys key, bool direction)
{
keyTable[key] = direction;
}
}
}
Player1setting.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace snakeGame3players
{
public enum SnakeMovment
{
Right,
Left,
Down,
Up
};
public enum SnakeMovment2
{
W,
S,
D,
A
};
class Player1setting
{
public static int Width { get; set; }
public static int Height { get; set; }
public static int GameScore { get; set; }
public static bool Gameover { get; set; }
public static SnakeMovment Movment { get; set; }
public Player1setting()
{
Height = 16;
Width = 16;
Gameover = false;
Movment = SnakeMovment.Down;
GameScore = 0;
}
}
class Player2setting
{
public static int Width2 { get; set; }
public static int Height2 { get; set; }
public static int GameScore2 { get; set; }
public static bool Gameover2 { get; set; }
public static SnakeMovment2 Movment2 { get; set; }
public Player2setting()
{
Height2 = 16;
Width2 = 16;
Gameover2 = false;
Movment2 = SnakeMovment2.S;
GameScore2 = 0;
}
}
class FoodSetting
{
public static int food1 { get; set; }
public static int food2 { get; set; }
public static int food3 { get; set; }
public static int food4 { get; set; }
public FoodSetting()
{
food1 = 1;
food2 = 5;
food3 = 1;
food4 = 1;
}
}
}
Square.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace snakeGame3players
{
class Square
{
public int X { get; set; }
public int Y { get; set; }
public Square()
{
X = 0;
Y = 0;
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace snakeGame3players
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Form1
class says you don't. \$\endgroup\$private void UpdateScreen(object sender, EventArgs e)
for an example to how I would do it if I was following OOP standards \$\endgroup\$