Completed
This commit is contained in:
15
Box.cs
15
Box.cs
@@ -1,15 +1,8 @@
|
|||||||
using System;
|
namespace TicTacToe
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace TicTacToe
|
|
||||||
{
|
{
|
||||||
public class Box
|
public class Box
|
||||||
{
|
{
|
||||||
public Action<int> Pressed;
|
public Action<int>? Pressed;
|
||||||
public int Index;
|
public int Index;
|
||||||
public bool BotOwned = false;
|
public bool BotOwned = false;
|
||||||
private Button _button;
|
private Button _button;
|
||||||
@@ -23,9 +16,9 @@ namespace TicTacToe
|
|||||||
_button.Text = "";
|
_button.Text = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Clicked(object sender, EventArgs e)
|
private void Clicked(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Pressed.Invoke(Index);
|
Pressed?.Invoke(Index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Destroy()
|
public void Destroy()
|
||||||
|
|||||||
16
Form1.Designer.cs
generated
16
Form1.Designer.cs
generated
@@ -28,6 +28,7 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||||
menuStrip1 = new MenuStrip();
|
menuStrip1 = new MenuStrip();
|
||||||
fileToolStripMenuItem = new ToolStripMenuItem();
|
fileToolStripMenuItem = new ToolStripMenuItem();
|
||||||
newGameToolStripMenuItem = new ToolStripMenuItem();
|
newGameToolStripMenuItem = new ToolStripMenuItem();
|
||||||
@@ -68,13 +69,13 @@
|
|||||||
// newGameToolStripMenuItem
|
// newGameToolStripMenuItem
|
||||||
//
|
//
|
||||||
newGameToolStripMenuItem.Name = "newGameToolStripMenuItem";
|
newGameToolStripMenuItem.Name = "newGameToolStripMenuItem";
|
||||||
newGameToolStripMenuItem.Size = new Size(270, 34);
|
newGameToolStripMenuItem.Size = new Size(199, 34);
|
||||||
newGameToolStripMenuItem.Text = "New game";
|
newGameToolStripMenuItem.Text = "New game";
|
||||||
//
|
//
|
||||||
// exitToolStripMenuItem
|
// exitToolStripMenuItem
|
||||||
//
|
//
|
||||||
exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||||
exitToolStripMenuItem.Size = new Size(270, 34);
|
exitToolStripMenuItem.Size = new Size(199, 34);
|
||||||
exitToolStripMenuItem.Text = "Exit";
|
exitToolStripMenuItem.Text = "Exit";
|
||||||
//
|
//
|
||||||
// helpToolStripMenuItem
|
// helpToolStripMenuItem
|
||||||
@@ -215,9 +216,10 @@
|
|||||||
Controls.Add(grid_7);
|
Controls.Add(grid_7);
|
||||||
Controls.Add(lbl_wins);
|
Controls.Add(lbl_wins);
|
||||||
Controls.Add(menuStrip1);
|
Controls.Add(menuStrip1);
|
||||||
|
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||||
MainMenuStrip = menuStrip1;
|
MainMenuStrip = menuStrip1;
|
||||||
Name = "Form1";
|
Name = "Form1";
|
||||||
Text = "Form1";
|
Text = "Tic Tac Toe";
|
||||||
menuStrip1.ResumeLayout(false);
|
menuStrip1.ResumeLayout(false);
|
||||||
menuStrip1.PerformLayout();
|
menuStrip1.PerformLayout();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
@@ -226,16 +228,9 @@
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private Button btn_restart;
|
|
||||||
private MenuStrip menuStrip1;
|
private MenuStrip menuStrip1;
|
||||||
private ToolStripMenuItem fileToolStripMenuItem;
|
private ToolStripMenuItem fileToolStripMenuItem;
|
||||||
private ToolStripMenuItem helpToolStripMenuItem;
|
private ToolStripMenuItem helpToolStripMenuItem;
|
||||||
private Label label1;
|
|
||||||
private ToolStripMenuItem aboutToolStripMenuItem;
|
|
||||||
private Button button3;
|
|
||||||
private Button button4;
|
|
||||||
private Button button5;
|
|
||||||
private Button button8;
|
|
||||||
public Button grid_7;
|
public Button grid_7;
|
||||||
public Button grid_5;
|
public Button grid_5;
|
||||||
public Button grid_8;
|
public Button grid_8;
|
||||||
@@ -249,5 +244,6 @@
|
|||||||
public ToolStripMenuItem newGameToolStripMenuItem;
|
public ToolStripMenuItem newGameToolStripMenuItem;
|
||||||
public Label lbl_loses;
|
public Label lbl_loses;
|
||||||
public ToolStripMenuItem exitToolStripMenuItem;
|
public ToolStripMenuItem exitToolStripMenuItem;
|
||||||
|
public ToolStripMenuItem aboutToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
77
Form1.resx
77
Form1.resx
@@ -120,4 +120,81 @@
|
|||||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAD/////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////+/v7/6enp/7+/v/+qqqr/tbW1/9vb
|
||||||
|
2//7+/v////////////////////////////u7u7/tbW1/9ra2v//////////////////////////////
|
||||||
|
///7+/v/xMTE/8TExP/7+/v/////////////////////////////////8/Pz/5OTk/8vLy//CgoK/wIC
|
||||||
|
Av8GBgb/Hh4e/25ubv/e3t7//////////////////////4GBgf8CAgL/MDAw/8nJyf//////////////
|
||||||
|
/////////Pz8/5aWlv8RERH/FRUV/8PDw/////////////////////////////Pz8/9ra2v/BQUF/wAA
|
||||||
|
AP8AAAD/AQEB/wAAAP8AAAD/AAAA/zo6Ov/W1tb/////////////////gICA/wAAAP8AAAD/LS0t/8nJ
|
||||||
|
yf////////////z8/P+Wlpb/Dw8P/wAAAP8TExP/w8PD////////////////////////////k5OT/wUF
|
||||||
|
Bf8AAAD/Ghoa/3Jycv+ioqL/ioqK/zQ0NP8BAQH/AAAA/1RUVP/09PT////////////s7Oz/Xl5e/wIC
|
||||||
|
Av8AAAD/LS0t/8nJyf/9/f3/lpaW/w8PD/8AAAD/Dw8P/5aWlv/8/Pz//////////////////////+jo
|
||||||
|
6P8wMDD/AAAA/xoaGv+5ubn/////////////////4eHh/0VFRf8AAAD/CgoK/7a2tv//////////////
|
||||||
|
///r6+v/XV1d/wICAv8AAAD/MDAw/3Z2dv8RERH/AAAA/w8PD/+Wlpb//Pz8////////////////////
|
||||||
|
////////v7+//wsLC/8AAAD/cnJy////////////////////////////t7e3/woKCv8AAAD/eXl5////
|
||||||
|
///////////////////r6+v/XV1d/wICAv8AAAD/AQEB/wAAAP8PDw//lZWV//z8/P//////////////
|
||||||
|
//////////////////+pqan/AgIC/wEBAf+ioqL////////////////////////////d3d3/HR0d/wAA
|
||||||
|
AP9eXl7////////////////////////////m5ub/Nzc3/wAAAP8AAAD/AAAA/3V1df/8/Pz/////////
|
||||||
|
/////////////////////////////7S0tP8GBgb/AAAA/4qKiv///////////////////////////8vL
|
||||||
|
y/8SEhL/AAAA/2xsbP///////////////////////Pz8/5aWlv8QEBD/AAAA/wAAAP8AAAD/MDAw/8rK
|
||||||
|
yv//////////////////////////////////////29vb/x4eHv8AAAD/NTU1/+Hh4f//////////////
|
||||||
|
///5+fn/cXFx/wAAAP8CAgL/n5+f//////////////////z8/P+VlZX/Dw8P/wAAAP8SEhL/ODg4/wQE
|
||||||
|
BP8AAAD/LS0t/8nJyf/////////////////////////////////8/Pz/bGxs/wAAAP8BAQH/RkZG/7m5
|
||||||
|
uf/f39//zc3N/3Fxcf8LCwv/AAAA/zAwMP/j4+P////////////8/Pz/lpaW/w8PD/8AAAD/Dw8P/5eX
|
||||||
|
l//o6Oj/XV1d/wEBAf8AAAD/LS0t/8nJyf/////////////////////////////////c3Nz/Nzc3/wAA
|
||||||
|
AP8AAAD/CwsL/x0dHf8SEhL/AQEB/wAAAP8VFRX/rq6u/////////////////6Wlpf8ODg7/AAAA/w8P
|
||||||
|
D/+VlZX//Pz8///////r6+v/XV1d/wEBAf8AAAD/MDAw/9ra2v//////////////////////////////
|
||||||
|
///V1dX/UVFR/wkJCf8AAAD/AAAA/wAAAP8CAgL/Ly8v/66urv/9/f3/////////////////a2tr/wAA
|
||||||
|
AP8PDw//lZWV//z8/P/////////////////r6+v/XV1d/wEBAf8GBgb/tbW1////////////////////
|
||||||
|
///////////////////z8/P/tra2/3h4eP9dXV3/ampq/56env/j4+P/////////////////////////
|
||||||
|
///Q0ND/aWlp/6Wlpf/7+/v////////////////////////////q6ur/f39//4GBgf/u7u7/////////
|
||||||
|
//////////////////////////////////////////////7+/v//////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////////////////////////////v7+////////////////////
|
||||||
|
///////////////////////////////////u7u7/gYGB/39/f//q6ur/////////////////////////
|
||||||
|
///7+/v/pKSk/2pqav/Q0ND////////////////////////////j4+P/np6e/2pqav9dXV3/eXl5/7e3
|
||||||
|
t//z8/P//////////////////////////////////////7W1tf8GBgb/AQEB/11dXf/r6+v/////////
|
||||||
|
/////////Pz8/5WVlf8ODg7/AAAA/2xsbP/////////////////9/f3/rKys/y4uLv8CAgL/AAAA/wAA
|
||||||
|
AP8AAAD/CQkJ/1JSUv/W1tb/////////////////////////////////2tra/zAwMP8AAAD/AQEB/11d
|
||||||
|
Xf/r6+v///////z8/P+VlZX/Dg4O/wAAAP8PDw//paWl/////////////////6ysrP8TExP/AAAA/wEB
|
||||||
|
Af8SEhL/HR0d/wsLC/8AAAD/AAAA/zk5Of/d3d3/////////////////////////////////ycnJ/y0t
|
||||||
|
Lf8AAAD/AgIC/15eXv/o6Oj/lpaW/w8PD/8AAAD/Dw8P/5aWlv/8/Pz////////////j4+P/MDAw/wAA
|
||||||
|
AP8LCwv/cXFx/87Ozv/f39//uLi4/0ZGRv8AAAD/AAAA/2xsbP/8/Pz/////////////////////////
|
||||||
|
////////ycnJ/y0tLf8AAAD/BAQE/zg4OP8SEhL/AAAA/w8PD/+Wlpb//Pz8/////////////////5+f
|
||||||
|
n/8CAgL/AAAA/3Fxcf/5+fn/////////////////4eHh/zU1Nf8AAAD/Hh4e/9vb2///////////////
|
||||||
|
////////////////////////ycnJ/zAwMP8AAAD/AAAA/wAAAP8QEBD/l5eX//z8/P//////////////
|
||||||
|
////////bGxs/wAAAP8SEhL/zMzM////////////////////////////iYmJ/wAAAP8GBgb/tbW1////
|
||||||
|
///////////////////////////////////8/Pz/dXV1/wAAAP8AAAD/AAAA/zc3N//m5ub/////////
|
||||||
|
//////////////////9eXl7/AAAA/x4eHv/e3t7///////////////////////////+goKD/AAAA/wIC
|
||||||
|
Av+rq6v//////////////////////////////////Pz8/5WVlf8PDw//AAAA/wEBAf8AAAD/AgIC/11d
|
||||||
|
Xf/r6+v//////////////////////3h4eP8AAAD/CgoK/7i4uP///////////////////////////3Fx
|
||||||
|
cf8AAAD/DAwM/8HBwf////////////////////////////z8/P+Wlpb/Dw8P/wAAAP8RERH/dnZ2/zAw
|
||||||
|
MP8AAAD/AgIC/11dXf/r6+v/////////////////tbW1/woKCv8AAAD/R0dH/+Li4v//////////////
|
||||||
|
//+5ubn/Ghoa/wAAAP8yMjL/6urq///////////////////////8/Pz/lpaW/w8PD/8AAAD/Dw8P/5aW
|
||||||
|
lv/9/f3/ycnJ/y0tLf8AAAD/AgIC/15eXv/s7Oz////////////z8/P/UlJS/wAAAP8BAQH/NjY2/4uL
|
||||||
|
i/+jo6P/c3Nz/xsbG/8AAAD/BQUF/5WVlf///////////////////////////8PDw/8SEhL/AAAA/w8P
|
||||||
|
D/+Wlpb//Pz8////////////ycnJ/y0tLf8AAAD/AAAA/4GBgf/////////////////W1tb/ODg4/wAA
|
||||||
|
AP8AAAD/AAAA/wEBAf8AAAD/AAAA/wUFBf9tbW3/9PT0////////////////////////////w8PD/xUV
|
||||||
|
Ff8RERH/lpaW//z8/P//////////////////////ycnJ/zAwMP8CAgL/goKC////////////////////
|
||||||
|
///d3d3/bGxs/x4eHv8GBgb/AgIC/woKCv8wMDD/lJSU//Pz8///////////////////////////////
|
||||||
|
///7+/v/w8PD/8TExP/7+/v/////////////////////////////////2tra/7W1tf/u7u7/////////
|
||||||
|
///////////////////7+/v/3Nzc/7W1tf+qqqr/wMDA/+np6f//////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
26
Game.cs
26
Game.cs
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
namespace TicTacToe
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Media;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Threading.Tasks.Dataflow;
|
|
||||||
|
|
||||||
namespace TicTacToe
|
|
||||||
{
|
{
|
||||||
public class Game
|
public class Game
|
||||||
{
|
{
|
||||||
@@ -114,14 +106,14 @@ namespace TicTacToe
|
|||||||
{
|
{
|
||||||
int[][] lines =
|
int[][] lines =
|
||||||
{
|
{
|
||||||
new[] {0, 1, 2},
|
[0, 1, 2],
|
||||||
new[] {3, 4, 5},
|
[3, 4, 5],
|
||||||
new[] {6, 7, 8},
|
[6, 7, 8],
|
||||||
new[] {0, 3, 6},
|
[0, 3, 6],
|
||||||
new[] {1, 4, 7},
|
[1, 4, 7],
|
||||||
new[] {2, 5, 8},
|
[2, 5, 8],
|
||||||
new[] {0, 4, 8},
|
[0, 4, 8],
|
||||||
new[] {2, 4, 6}
|
[2, 4, 6]
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var line in lines)
|
foreach (var line in lines)
|
||||||
|
|||||||
13
Program.cs
13
Program.cs
@@ -3,28 +3,33 @@ namespace TicTacToe
|
|||||||
public static class Program
|
public static class Program
|
||||||
{
|
{
|
||||||
public static Form1 form = new Form1();
|
public static Form1 form = new Form1();
|
||||||
static Game game;
|
static Game game = new Game();
|
||||||
static int wins = 0;
|
static int wins = 0;
|
||||||
static int loses = 0;
|
static int loses = 0;
|
||||||
|
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
ApplicationConfiguration.Initialize();
|
ApplicationConfiguration.Initialize();
|
||||||
game = new Game();
|
|
||||||
game.Start();
|
game.Start();
|
||||||
form.newGameToolStripMenuItem.Click += NewGame;
|
form.newGameToolStripMenuItem.Click += NewGame;
|
||||||
form.exitToolStripMenuItem.Click += Exit;
|
form.exitToolStripMenuItem.Click += Exit;
|
||||||
|
form.aboutToolStripMenuItem.Click += About;
|
||||||
Application.Run(form);
|
Application.Run(form);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NewGame(object sender, EventArgs e)
|
static void NewGame(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
game.Destroy();
|
game.Destroy();
|
||||||
game = new Game();
|
game = new Game();
|
||||||
game.Start();
|
game.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Exit(object sender, EventArgs e)
|
static void About(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Tic Tac Toe med motst<73>ndare, kodat av Max Westerlund");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Exit(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,27 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>net8.0-windows</TargetFramework>
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
|
||||||
|
<!-- standalone exe -->
|
||||||
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
|
<SelfContained>true</SelfContained>
|
||||||
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
|
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||||
|
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||||
|
|
||||||
|
<!-- optimization -->
|
||||||
|
<TrimMode>link</TrimMode>
|
||||||
|
<ReadyToRun>true</ReadyToRun>
|
||||||
|
<TieredCompilation>false</TieredCompilation>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
|
||||||
|
<!-- icon -->
|
||||||
|
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
Reference in New Issue
Block a user