diff --git a/App.config b/App.config
new file mode 100644
index 0000000..2018128
--- /dev/null
+++ b/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
new file mode 100644
index 0000000..ed1a268
--- /dev/null
+++ b/MainForm.Designer.cs
@@ -0,0 +1,328 @@
+
+namespace Tic_Tac_Toe
+{
+ partial class MainForm
+ {
+ ///
+ /// Erforderliche Designervariable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Verwendete Ressourcen bereinigen.
+ ///
+ /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Vom Windows Form-Designer generierter Code
+
+ ///
+ /// Erforderliche Methode für die Designerunterstützung.
+ /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+ this.tabPageGame3x3 = new System.Windows.Forms.TabPage();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.buttonField33 = new System.Windows.Forms.Button();
+ this.buttonField32 = new System.Windows.Forms.Button();
+ this.buttonField31 = new System.Windows.Forms.Button();
+ this.buttonField23 = new System.Windows.Forms.Button();
+ this.buttonField22 = new System.Windows.Forms.Button();
+ this.buttonField21 = new System.Windows.Forms.Button();
+ this.buttonField13 = new System.Windows.Forms.Button();
+ this.buttonField12 = new System.Windows.Forms.Button();
+ this.buttonField11 = new System.Windows.Forms.Button();
+ this.statusStrip = new System.Windows.Forms.StatusStrip();
+ this.toolStripContainer = new System.Windows.Forms.ToolStripContainer();
+ this.tabControlGame = new System.Windows.Forms.TabControl();
+ this.toolStrip = new System.Windows.Forms.ToolStrip();
+ this.tabPageGame3x3.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.toolStripContainer.BottomToolStripPanel.SuspendLayout();
+ this.toolStripContainer.ContentPanel.SuspendLayout();
+ this.toolStripContainer.TopToolStripPanel.SuspendLayout();
+ this.toolStripContainer.SuspendLayout();
+ this.tabControlGame.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tabPageGame3x3
+ //
+ this.tabPageGame3x3.Controls.Add(this.tableLayoutPanel1);
+ this.tabPageGame3x3.Location = new System.Drawing.Point(4, 22);
+ this.tabPageGame3x3.Name = "tabPageGame3x3";
+ this.tabPageGame3x3.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPageGame3x3.Size = new System.Drawing.Size(224, 224);
+ this.tabPageGame3x3.TabIndex = 0;
+ this.tabPageGame3x3.Text = "3x3";
+ this.toolTip.SetToolTip(this.tabPageGame3x3, "Game 3x3");
+ this.tabPageGame3x3.ToolTipText = "Game 3x3";
+ this.tabPageGame3x3.UseVisualStyleBackColor = true;
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 3;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.Controls.Add(this.buttonField33, 2, 2);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField32, 1, 2);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField31, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField23, 2, 1);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField22, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField21, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField13, 2, 0);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField12, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.buttonField11, 0, 0);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(218, 218);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // buttonField33
+ //
+ this.buttonField33.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField33.AutoEllipsis = true;
+ this.buttonField33.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField33.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField33.Location = new System.Drawing.Point(144, 144);
+ this.buttonField33.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField33.Name = "buttonField33";
+ this.buttonField33.Size = new System.Drawing.Size(74, 74);
+ this.buttonField33.TabIndex = 8;
+ this.buttonField33.TabStop = false;
+ this.buttonField33.UseVisualStyleBackColor = true;
+ this.buttonField33.Click += new System.EventHandler(this.ButtonField33_Click);
+ //
+ // buttonField32
+ //
+ this.buttonField32.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField32.AutoEllipsis = true;
+ this.buttonField32.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField32.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField32.Location = new System.Drawing.Point(72, 144);
+ this.buttonField32.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField32.Name = "buttonField32";
+ this.buttonField32.Size = new System.Drawing.Size(72, 74);
+ this.buttonField32.TabIndex = 7;
+ this.buttonField32.TabStop = false;
+ this.buttonField32.UseVisualStyleBackColor = true;
+ this.buttonField32.Click += new System.EventHandler(this.ButtonField32_Click);
+ //
+ // buttonField31
+ //
+ this.buttonField31.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField31.AutoEllipsis = true;
+ this.buttonField31.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField31.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField31.Location = new System.Drawing.Point(0, 144);
+ this.buttonField31.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField31.Name = "buttonField31";
+ this.buttonField31.Size = new System.Drawing.Size(72, 74);
+ this.buttonField31.TabIndex = 6;
+ this.buttonField31.TabStop = false;
+ this.buttonField31.UseVisualStyleBackColor = true;
+ this.buttonField31.Click += new System.EventHandler(this.ButtonField31_Click);
+ //
+ // buttonField23
+ //
+ this.buttonField23.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField23.AutoEllipsis = true;
+ this.buttonField23.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField23.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField23.Location = new System.Drawing.Point(144, 72);
+ this.buttonField23.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField23.Name = "buttonField23";
+ this.buttonField23.Size = new System.Drawing.Size(74, 72);
+ this.buttonField23.TabIndex = 5;
+ this.buttonField23.TabStop = false;
+ this.buttonField23.UseVisualStyleBackColor = true;
+ this.buttonField23.Click += new System.EventHandler(this.ButtonField23_Click);
+ //
+ // buttonField22
+ //
+ this.buttonField22.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField22.AutoEllipsis = true;
+ this.buttonField22.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField22.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField22.Location = new System.Drawing.Point(72, 72);
+ this.buttonField22.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField22.Name = "buttonField22";
+ this.buttonField22.Size = new System.Drawing.Size(72, 72);
+ this.buttonField22.TabIndex = 4;
+ this.buttonField22.TabStop = false;
+ this.buttonField22.UseVisualStyleBackColor = true;
+ this.buttonField22.Click += new System.EventHandler(this.ButtonField22_Click);
+ //
+ // buttonField21
+ //
+ this.buttonField21.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField21.AutoEllipsis = true;
+ this.buttonField21.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField21.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField21.Location = new System.Drawing.Point(0, 72);
+ this.buttonField21.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField21.Name = "buttonField21";
+ this.buttonField21.Size = new System.Drawing.Size(72, 72);
+ this.buttonField21.TabIndex = 3;
+ this.buttonField21.TabStop = false;
+ this.buttonField21.UseVisualStyleBackColor = true;
+ this.buttonField21.Click += new System.EventHandler(this.ButtonField21_Click);
+ //
+ // buttonField13
+ //
+ this.buttonField13.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField13.AutoEllipsis = true;
+ this.buttonField13.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField13.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField13.Location = new System.Drawing.Point(144, 0);
+ this.buttonField13.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField13.Name = "buttonField13";
+ this.buttonField13.Size = new System.Drawing.Size(74, 72);
+ this.buttonField13.TabIndex = 2;
+ this.buttonField13.TabStop = false;
+ this.buttonField13.UseVisualStyleBackColor = true;
+ this.buttonField13.Click += new System.EventHandler(this.ButtonField13_Click);
+ //
+ // buttonField12
+ //
+ this.buttonField12.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField12.AutoEllipsis = true;
+ this.buttonField12.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField12.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.buttonField12.Location = new System.Drawing.Point(72, 0);
+ this.buttonField12.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField12.Name = "buttonField12";
+ this.buttonField12.Size = new System.Drawing.Size(72, 72);
+ this.buttonField12.TabIndex = 1;
+ this.buttonField12.TabStop = false;
+ this.buttonField12.UseVisualStyleBackColor = true;
+ this.buttonField12.Click += new System.EventHandler(this.ButtonField12_Click);
+ //
+ // buttonField11
+ //
+ this.buttonField11.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
+ this.buttonField11.AutoSize = true;
+ this.buttonField11.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.buttonField11.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Bold);
+ this.buttonField11.Location = new System.Drawing.Point(0, 0);
+ this.buttonField11.Margin = new System.Windows.Forms.Padding(0);
+ this.buttonField11.Name = "buttonField11";
+ this.buttonField11.Size = new System.Drawing.Size(72, 72);
+ this.buttonField11.TabIndex = 0;
+ this.buttonField11.TabStop = false;
+ this.buttonField11.UseVisualStyleBackColor = true;
+ this.buttonField11.Click += new System.EventHandler(this.ButtonField11_Click);
+ //
+ // statusStrip
+ //
+ this.statusStrip.Dock = System.Windows.Forms.DockStyle.None;
+ this.statusStrip.Location = new System.Drawing.Point(0, 0);
+ this.statusStrip.Name = "statusStrip";
+ this.statusStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode;
+ this.statusStrip.Size = new System.Drawing.Size(232, 22);
+ this.statusStrip.TabIndex = 0;
+ this.statusStrip.Text = "statusStrip";
+ //
+ // toolStripContainer
+ //
+ //
+ // toolStripContainer.BottomToolStripPanel
+ //
+ this.toolStripContainer.BottomToolStripPanel.Controls.Add(this.statusStrip);
+ //
+ // toolStripContainer.ContentPanel
+ //
+ this.toolStripContainer.ContentPanel.Controls.Add(this.tabControlGame);
+ this.toolStripContainer.ContentPanel.Size = new System.Drawing.Size(232, 250);
+ this.toolStripContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.toolStripContainer.Location = new System.Drawing.Point(0, 0);
+ this.toolStripContainer.Name = "toolStripContainer";
+ this.toolStripContainer.Size = new System.Drawing.Size(232, 297);
+ this.toolStripContainer.TabIndex = 1;
+ this.toolStripContainer.Text = "toolStripContainer";
+ //
+ // toolStripContainer.TopToolStripPanel
+ //
+ this.toolStripContainer.TopToolStripPanel.Controls.Add(this.toolStrip);
+ //
+ // tabControlGame
+ //
+ this.tabControlGame.Controls.Add(this.tabPageGame3x3);
+ this.tabControlGame.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControlGame.HotTrack = true;
+ this.tabControlGame.Location = new System.Drawing.Point(0, 0);
+ this.tabControlGame.Multiline = true;
+ this.tabControlGame.Name = "tabControlGame";
+ this.tabControlGame.SelectedIndex = 0;
+ this.tabControlGame.ShowToolTips = true;
+ this.tabControlGame.Size = new System.Drawing.Size(232, 250);
+ this.tabControlGame.TabIndex = 1;
+ //
+ // toolStrip
+ //
+ this.toolStrip.Dock = System.Windows.Forms.DockStyle.None;
+ this.toolStrip.Location = new System.Drawing.Point(0, 0);
+ this.toolStrip.Name = "toolStrip";
+ this.toolStrip.Size = new System.Drawing.Size(232, 25);
+ this.toolStrip.Stretch = true;
+ this.toolStrip.TabIndex = 0;
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(232, 297);
+ this.Controls.Add(this.toolStripContainer);
+ this.Name = "MainForm";
+ this.Text = "Form1";
+ this.tabPageGame3x3.ResumeLayout(false);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.toolStripContainer.BottomToolStripPanel.ResumeLayout(false);
+ this.toolStripContainer.BottomToolStripPanel.PerformLayout();
+ this.toolStripContainer.ContentPanel.ResumeLayout(false);
+ this.toolStripContainer.TopToolStripPanel.ResumeLayout(false);
+ this.toolStripContainer.TopToolStripPanel.PerformLayout();
+ this.toolStripContainer.ResumeLayout(false);
+ this.toolStripContainer.PerformLayout();
+ this.tabControlGame.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolTip toolTip;
+ private System.Windows.Forms.StatusStrip statusStrip;
+ private System.Windows.Forms.ToolStripContainer toolStripContainer;
+ private System.Windows.Forms.TabControl tabControlGame;
+ private System.Windows.Forms.TabPage tabPageGame3x3;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Button buttonField33;
+ private System.Windows.Forms.Button buttonField32;
+ private System.Windows.Forms.Button buttonField31;
+ private System.Windows.Forms.Button buttonField23;
+ private System.Windows.Forms.Button buttonField22;
+ private System.Windows.Forms.Button buttonField21;
+ private System.Windows.Forms.Button buttonField13;
+ private System.Windows.Forms.Button buttonField12;
+ private System.Windows.Forms.Button buttonField11;
+ private System.Windows.Forms.ToolStrip toolStrip;
+ }
+}
+
diff --git a/MainForm.cs b/MainForm.cs
new file mode 100644
index 0000000..739c696
--- /dev/null
+++ b/MainForm.cs
@@ -0,0 +1,140 @@
+using System;
+using System.Windows.Forms;
+
+namespace Tic_Tac_Toe
+{
+ public partial class MainForm : Form
+ {
+ bool isPlayer1Playing = true;
+ public MainForm()
+ {
+ InitializeComponent();
+ }
+
+ private bool IsSameText(string string1, string string2, string string3) => string.Compare(string1, string2) == 0 && string.Compare(string2, string3) == 0;
+
+ private bool CheckIfSomebodyWons()
+ {
+ if (string.IsNullOrEmpty(buttonField11.Text) ||
+ string.IsNullOrEmpty(buttonField12.Text) ||
+ string.IsNullOrEmpty(buttonField13.Text) ||
+ string.IsNullOrEmpty(buttonField21.Text) ||
+ string.IsNullOrEmpty(buttonField22.Text) ||
+ string.IsNullOrEmpty(buttonField23.Text) ||
+ string.IsNullOrEmpty(buttonField31.Text) ||
+ string.IsNullOrEmpty(buttonField32.Text) ||
+ string.IsNullOrEmpty(buttonField33.Text)
+ )
+ {
+ return false;
+ }
+ return IsSameText(buttonField11.Text, buttonField12.Text, buttonField13.Text) ||
+ IsSameText(buttonField21.Text, buttonField22.Text, buttonField23.Text) ||
+ IsSameText(buttonField31.Text, buttonField32.Text, buttonField33.Text) ||
+ IsSameText(buttonField11.Text, buttonField21.Text, buttonField31.Text) ||
+ IsSameText(buttonField12.Text, buttonField22.Text, buttonField32.Text) ||
+ IsSameText(buttonField13.Text, buttonField23.Text, buttonField33.Text) ||
+ IsSameText(buttonField11.Text, buttonField22.Text, buttonField33.Text) ||
+ IsSameText(buttonField13.Text, buttonField22.Text, buttonField31.Text);
+ }
+
+ private void ButtonField11_Click(object sender, EventArgs e)
+ {
+ buttonField11.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField11.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField12_Click(object sender, EventArgs e)
+ {
+ buttonField12.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField12.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField13_Click(object sender, EventArgs e)
+ {
+ buttonField13.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField13.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField21_Click(object sender, EventArgs e)
+ {
+ buttonField21.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField21.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField22_Click(object sender, EventArgs e)
+ {
+ buttonField22.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField22.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField23_Click(object sender, EventArgs e)
+ {
+ buttonField23.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField23.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField31_Click(object sender, EventArgs e)
+ {
+ buttonField31.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField31.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField32_Click(object sender, EventArgs e)
+ {
+ buttonField32.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField32.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+
+ private void ButtonField33_Click(object sender, EventArgs e)
+ {
+ buttonField33.Text = isPlayer1Playing ? "O" : "X";
+ isPlayer1Playing = !isPlayer1Playing;
+ buttonField33.Enabled = false;
+ if (CheckIfSomebodyWons())
+ {
+ MessageBox.Show("Gewonnen");
+ }
+ }
+ }
+}
diff --git a/MainForm.resx b/MainForm.resx
new file mode 100644
index 0000000..5cd30fe
--- /dev/null
+++ b/MainForm.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 114, 17
+
+
+ 223, 17
+
+
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..d49aca2
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Tic_Tac_Toe
+{
+ static class Program
+ {
+ ///
+ /// Der Haupteinstiegspunkt für die Anwendung.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..cca8aad
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("Tic Tac Toe")]
+[assembly: AssemblyDescription("The game Tic Tac Toe")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Mijo Software")]
+[assembly: AssemblyProduct("Tic Tac Toe")]
+[assembly: AssemblyCopyright("2023 Mijo Software")]
+[assembly: AssemblyTrademark("Tic Tac Toe")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
+// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
+// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("ed14c7ef-5a78-4d5d-b564-f154fc864034")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+// Hauptversion
+// Nebenversion
+// Buildnummer
+// Revision
+//
+// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+// indem Sie "*" wie unten gezeigt eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.0.1.1")]
+[assembly: AssemblyFileVersion("0.0.1.1")]
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..e04794f
--- /dev/null
+++ b/Properties/Resources.Designer.cs
@@ -0,0 +1,70 @@
+//------------------------------------------------------------------------------
+//
+// Dieser Code wurde von einem Tool generiert.
+// Laufzeitversion: 4.0.30319.42000
+//
+// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
+// der Code neu generiert wird.
+//
+//------------------------------------------------------------------------------
+
+
+namespace Tic_Tac_Toe.Properties
+{
+ ///
+ /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ ///
+ // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
+ // über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tic_Tac_Toe.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
new file mode 100644
index 0000000..ffecec8
--- /dev/null
+++ b/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..880a4a4
--- /dev/null
+++ b/Properties/Settings.Designer.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+namespace Tic_Tac_Toe.Properties
+{
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Properties/Settings.settings b/Properties/Settings.settings
new file mode 100644
index 0000000..abf36c5
--- /dev/null
+++ b/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Resources/tic-tac-toe-512px.png b/Resources/tic-tac-toe-512px.png
new file mode 100644
index 0000000..4ebd3d3
Binary files /dev/null and b/Resources/tic-tac-toe-512px.png differ
diff --git a/Resources/tic-tac-toe_logo-32px.ico b/Resources/tic-tac-toe_logo-32px.ico
new file mode 100644
index 0000000..84fb42c
Binary files /dev/null and b/Resources/tic-tac-toe_logo-32px.ico differ
diff --git a/Resources/tic-tac-toe_logo-full.ico b/Resources/tic-tac-toe_logo-full.ico
new file mode 100644
index 0000000..85ae052
Binary files /dev/null and b/Resources/tic-tac-toe_logo-full.ico differ
diff --git a/Tic Tac Toe.csproj b/Tic Tac Toe.csproj
new file mode 100644
index 0000000..1860e90
--- /dev/null
+++ b/Tic Tac Toe.csproj
@@ -0,0 +1,144 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}
+ WinExe
+ Tic_Tac_Toe
+ Tic Tac Toe
+ v4.8.1
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ bin\Release\Tic Tac Toe.xml
+ true
+ AllRules.ruleset
+ true
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ x64
+ 7.3
+ prompt
+ true
+
+
+ bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ 7.3
+ prompt
+ true
+ bin\x64\Release\Tic Tac Toe.xml
+ true
+ AllRules.ruleset
+ true
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+ bin\x86\Release\Tic Tac Toe.xml
+ true
+ AllRules.ruleset
+ true
+
+
+ Tic_Tac_Toe.Program
+
+
+ tic-tac-toe_logo-full.ico
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ MainForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tic Tac Toe.sln b/Tic Tac Toe.sln
new file mode 100644
index 0000000..a055316
--- /dev/null
+++ b/Tic Tac Toe.sln
@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.34114.132
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tic Tac Toe", "Tic Tac Toe.csproj", "{ED14C7EF-5A78-4D5D-B564-F154FC864034}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|x64.ActiveCfg = Debug|x64
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|x64.Build.0 = Debug|x64
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|x86.ActiveCfg = Debug|x86
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Debug|x86.Build.0 = Debug|x86
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|x64.ActiveCfg = Release|x64
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|x64.Build.0 = Release|x64
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|x86.ActiveCfg = Release|x86
+ {ED14C7EF-5A78-4D5D-B564-F154FC864034}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {210F37A3-F700-4F0C-98BD-4FA154E01DA2}
+ EndGlobalSection
+EndGlobal