C# :: Aufgabe #196 :: Lösung #2

3 Lösungen Lösungen öffentlich
#196

Tic Tac Toe - Den Spieleklassiker grafisch darstellen

Fortgeschrittener - C# von Kenshinaro - 18.12.2017 um 21:18 Uhr
Setze den allbekannten Klassiker Tic Tac Toe in einer Windows Form um. Es sollte Grafisch erkennbar sein, welche Felder schon belegt wurden. Am sollte ein Spieler Gewinnen so soll dies angezeigt und das Spiel anschließen neu gestartet werden. Sollten alle Felder gefüllt sein und kein Gegner feststehen, so sollte ein Unentschieden angezeigt, und anschließen das Spiel neu gestartet werden. Vorzugsweise sollte auch erkennbar sein, welcher Spieler gerade am Zug ist. Ein Computergegner ist nicht von Nöten, solltet ihr aber Lust darauf haben so könnt ihr auch das umsetzen.
#2
vote_ok
von Mexx (2370 Punkte) - 28.12.2017 um 16:20 Uhr
Form1.cs:
Quellcode ausblenden C#-Code
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Tic_Tac_Toe
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            tsText.Text = "Rot ist am Zug";
        }

        int[] spielfeld = new int[9];
        Color farbe = Color.Blue;
        private void PanelClick(object sender, EventArgs e)
        {
            tsText.Text = SpielerAmZug() + " ist am Zug";
            Panel p = (Panel)sender;
            int feld = Convert.ToInt16(p.Name.Replace("panelFeld", ""));
            feld--;
            if (spielfeld[feld] == 0)
            {
                Graphics g = p.CreateGraphics();
                if (farbe == Color.Blue)
                {
                    farbe = Color.Red;
                    g.DrawEllipse(new Pen(farbe, 10), p.DisplayRectangle);
                    spielfeld[feld] = 2;
                }
                else
                {
                    farbe = Color.Blue;
                    g.DrawLine(new Pen(farbe, 10), new Point(0, 0), new Point(p.Width, p.Height));
                    g.DrawLine(new Pen(farbe, 10), new Point(0, p.Height), new Point(p.Width, 0));
                    spielfeld[feld] = 1;
                }

                if (Prüfen())
                {                   
                    MessageBox.Show(SpielerAmZug() + " hat Gewonnen");
                }

                if (!FreiesFeld())
                {
                    MessageBox.Show("Unentschieden");
                }
            }
        }

        private bool FreiesFeld()
        {
            for (int i = 0; i < spielfeld.Length; i++)
            {
                if (spielfeld[i] == 0)
                    return true;
            }
            return false;
        }

        private string SpielerAmZug()
        {
            string spieler = "";
            if (farbe == Color.Blue)
            {
                spieler = "Blau";
            }
            else
            {
                spieler = "Rot";
            }
            return spieler;
        }

        private bool Prüfen()
        {
            if (spielfeld[0] == spielfeld[1] && spielfeld[0] == spielfeld[2] && spielfeld[0] != 0)
                return true;
            if (spielfeld[3] == spielfeld[4] && spielfeld[3] == spielfeld[5] && spielfeld[3] != 0)
                return true;
            if (spielfeld[6] == spielfeld[7] && spielfeld[6] == spielfeld[8] && spielfeld[6] != 0)
                return true;

            if (spielfeld[0] == spielfeld[3] && spielfeld[0] == spielfeld[6] && spielfeld[0] != 0)
                return true;
            if (spielfeld[1] == spielfeld[4] && spielfeld[1] == spielfeld[7] && spielfeld[1] != 0)
                return true;
            if (spielfeld[3] == spielfeld[5] && spielfeld[3] == spielfeld[8] && spielfeld[3] != 0)
                return true;

            if (spielfeld[0] == spielfeld[4] && spielfeld[0] == spielfeld[8] && spielfeld[0] != 0)
                return true;
            if (spielfeld[2] == spielfeld[4] && spielfeld[2] == spielfeld[6] && spielfeld[2] != 0)
                return true;

            return false;
        }

        private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void neustartToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Restart();
        }
    }
}


Designer.cs:
Quellcode ausblenden C#-Code
namespace Tic_Tac_Toe
{
    partial class Form1
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Windows Form-Designer generierter Code
        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.panelFeld1 = new System.Windows.Forms.Panel();
            this.panelFeld2 = new System.Windows.Forms.Panel();
            this.panelFeld3 = new System.Windows.Forms.Panel();
            this.panelFeld4 = new System.Windows.Forms.Panel();
            this.panelFeld5 = new System.Windows.Forms.Panel();
            this.panelFeld6 = new System.Windows.Forms.Panel();
            this.panelFeld7 = new System.Windows.Forms.Panel();
            this.panelFeld8 = new System.Windows.Forms.Panel();
            this.panelFeld9 = new System.Windows.Forms.Panel();
            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
            this.menüToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.neustartToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.beendenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
            this.tsText = new System.Windows.Forms.ToolStripStatusLabel();
            this.menuStrip1.SuspendLayout();
            this.statusStrip1.SuspendLayout();
            this.SuspendLayout();
            // 
            // panelFeld1
            // 
            this.panelFeld1.BackColor = System.Drawing.Color.White;
            this.panelFeld1.Location = new System.Drawing.Point(11, 35);
            this.panelFeld1.Name = "panelFeld1";
            this.panelFeld1.Size = new System.Drawing.Size(70, 70);
            this.panelFeld1.TabIndex = 0;
            this.panelFeld1.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld2
            // 
            this.panelFeld2.BackColor = System.Drawing.Color.White;
            this.panelFeld2.Location = new System.Drawing.Point(87, 35);
            this.panelFeld2.Name = "panelFeld2";
            this.panelFeld2.Size = new System.Drawing.Size(70, 70);
            this.panelFeld2.TabIndex = 1;
            this.panelFeld2.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld3
            // 
            this.panelFeld3.BackColor = System.Drawing.Color.White;
            this.panelFeld3.Location = new System.Drawing.Point(163, 35);
            this.panelFeld3.Name = "panelFeld3";
            this.panelFeld3.Size = new System.Drawing.Size(70, 70);
            this.panelFeld3.TabIndex = 1;
            this.panelFeld3.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld4
            // 
            this.panelFeld4.BackColor = System.Drawing.Color.White;
            this.panelFeld4.Location = new System.Drawing.Point(11, 111);
            this.panelFeld4.Name = "panelFeld4";
            this.panelFeld4.Size = new System.Drawing.Size(70, 70);
            this.panelFeld4.TabIndex = 1;
            this.panelFeld4.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld5
            // 
            this.panelFeld5.BackColor = System.Drawing.Color.White;
            this.panelFeld5.Location = new System.Drawing.Point(87, 111);
            this.panelFeld5.Name = "panelFeld5";
            this.panelFeld5.Size = new System.Drawing.Size(70, 70);
            this.panelFeld5.TabIndex = 1;
            this.panelFeld5.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld6
            // 
            this.panelFeld6.BackColor = System.Drawing.Color.White;
            this.panelFeld6.Location = new System.Drawing.Point(163, 111);
            this.panelFeld6.Name = "panelFeld6";
            this.panelFeld6.Size = new System.Drawing.Size(70, 70);
            this.panelFeld6.TabIndex = 1;
            this.panelFeld6.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld7
            // 
            this.panelFeld7.BackColor = System.Drawing.Color.White;
            this.panelFeld7.Location = new System.Drawing.Point(11, 187);
            this.panelFeld7.Name = "panelFeld7";
            this.panelFeld7.Size = new System.Drawing.Size(70, 70);
            this.panelFeld7.TabIndex = 1;
            this.panelFeld7.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld8
            // 
            this.panelFeld8.BackColor = System.Drawing.Color.White;
            this.panelFeld8.Location = new System.Drawing.Point(87, 187);
            this.panelFeld8.Name = "panelFeld8";
            this.panelFeld8.Size = new System.Drawing.Size(70, 70);
            this.panelFeld8.TabIndex = 1;
            this.panelFeld8.Click += new System.EventHandler(this.PanelClick);
            // 
            // panelFeld9
            // 
            this.panelFeld9.BackColor = System.Drawing.Color.White;
            this.panelFeld9.Location = new System.Drawing.Point(163, 187);
            this.panelFeld9.Name = "panelFeld9";
            this.panelFeld9.Size = new System.Drawing.Size(70, 70);
            this.panelFeld9.TabIndex = 1;
            this.panelFeld9.Click += new System.EventHandler(this.PanelClick);
            // 
            // menuStrip1
            // 
            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.menüToolStripMenuItem});
            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
            this.menuStrip1.Name = "menuStrip1";
            this.menuStrip1.Size = new System.Drawing.Size(245, 24);
            this.menuStrip1.TabIndex = 2;
            this.menuStrip1.Text = "menuStrip1";
            // 
            // menüToolStripMenuItem
            // 
            this.menüToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.neustartToolStripMenuItem,
            this.beendenToolStripMenuItem});
            this.menüToolStripMenuItem.Name = "menüToolStripMenuItem";
            this.menüToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
            this.menüToolStripMenuItem.Text = "Menü";
            // 
            // neustartToolStripMenuItem
            // 
            this.neustartToolStripMenuItem.Name = "neustartToolStripMenuItem";
            this.neustartToolStripMenuItem.Size = new System.Drawing.Size(120, 22);
            this.neustartToolStripMenuItem.Text = "Neustart";
            this.neustartToolStripMenuItem.Click += new System.EventHandler(this.neustartToolStripMenuItem_Click);
            // 
            // beendenToolStripMenuItem
            // 
            this.beendenToolStripMenuItem.Name = "beendenToolStripMenuItem";
            this.beendenToolStripMenuItem.Size = new System.Drawing.Size(120, 22);
            this.beendenToolStripMenuItem.Text = "Beenden";
            this.beendenToolStripMenuItem.Click += new System.EventHandler(this.beendenToolStripMenuItem_Click);
            // 
            // statusStrip1
            // 
            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.tsText});
            this.statusStrip1.Location = new System.Drawing.Point(0, 271);
            this.statusStrip1.Name = "statusStrip1";
            this.statusStrip1.Size = new System.Drawing.Size(245, 22);
            this.statusStrip1.TabIndex = 3;
            this.statusStrip1.Text = "statusStrip1";
            // 
            // tsText
            // 
            this.tsText.BackColor = System.Drawing.SystemColors.Control;
            this.tsText.ForeColor = System.Drawing.SystemColors.ControlText;
            this.tsText.Name = "tsText";
            this.tsText.Size = new System.Drawing.Size(118, 17);
            this.tsText.Text = "toolStripStatusLabel1";
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.Black;
            this.ClientSize = new System.Drawing.Size(245, 293);
            this.Controls.Add(this.statusStrip1);
            this.Controls.Add(this.panelFeld9);
            this.Controls.Add(this.panelFeld8);
            this.Controls.Add(this.panelFeld7);
            this.Controls.Add(this.panelFeld6);
            this.Controls.Add(this.panelFeld5);
            this.Controls.Add(this.panelFeld4);
            this.Controls.Add(this.panelFeld3);
            this.Controls.Add(this.panelFeld2);
            this.Controls.Add(this.panelFeld1);
            this.Controls.Add(this.menuStrip1);
            this.MainMenuStrip = this.menuStrip1;
            this.Name = "Form1";
            this.Text = "Tic Tac Toe";
            this.menuStrip1.ResumeLayout(false);
            this.menuStrip1.PerformLayout();
            this.statusStrip1.ResumeLayout(false);
            this.statusStrip1.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();

        }
        #endregion

        private System.Windows.Forms.Panel panelFeld1;
        private System.Windows.Forms.Panel panelFeld2;
        private System.Windows.Forms.Panel panelFeld3;
        private System.Windows.Forms.Panel panelFeld4;
        private System.Windows.Forms.Panel panelFeld5;
        private System.Windows.Forms.Panel panelFeld6;
        private System.Windows.Forms.Panel panelFeld7;
        private System.Windows.Forms.Panel panelFeld8;
        private System.Windows.Forms.Panel panelFeld9;
        private System.Windows.Forms.MenuStrip menuStrip1;
        private System.Windows.Forms.ToolStripMenuItem menüToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem neustartToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem beendenToolStripMenuItem;
        private System.Windows.Forms.StatusStrip statusStrip1;
        private System.Windows.Forms.ToolStripStatusLabel tsText;
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben