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 _10Viergewinnt { public partial class Form1 : Form { Graphics gObject; SolidBrush brush; //2dim Array für Felder int[,] feld = new int[7, 6]; //1.. gelb, 2...rot, 10 ... leer //1dim Array für Anzahl der belegten Plätze in bestimmter Spalte int[] spalte = new int[7]; bool rot = true; // ob Rot dran ist, wenn false --> gelb bool vorbei = false; int anzahlwuerfe = 0; public Form1() { InitializeComponent(); gObject = canvas.CreateGraphics(); brush = new SolidBrush(Color.White); } public void neustart() //wird bei Spielbeginn { vorbei = false; anzahlwuerfe = 0; gObject.Clear(Color.Blue); brush.Color = Color.White; rot = true; //Rot ist zu Beginn dran. for(int i=0; i<7; i++) { spalte[i] = 0; //Initialisierung der Spaltenbelegung for(int j=0; j<6;j++) { //Zeichnen der Kreise gObject.FillEllipse(brush, i*100+10, j*100+10, 80, 80); feld[i, j] = 10; //Initialisieren der Felder: 10 ... leer } } } public void pruefefeld() { int summe = 0; string gewinner = ""; //Prüfe senkrecht for(int x=0;x<7;x++) //Gehe Spalten durch { for(int y=0;y<3;y++) //Einzelne Spalte { //Summenprüfung summe = feld[x, y] + feld[x, y + 1] + feld[x, y + 2] + feld[x, y + 3]; if (summe==4) //Gelb hat gewonnen { gewinner = "Gelb"; } if (summe==8) //Rot hat gewonnen { gewinner = "Rot"; } } } //Prüfe waagrecht for(int x=0;x<4;x++) { for(int y=0;y<6;y++) { //Summenprüfung summe = feld[x, y] + feld[x+1, y] + feld[x+2, y] + feld[x+3, y]; if (summe == 4) //Gelb hat gewonnen { gewinner = "Gelb"; } if (summe == 8) //Rot hat gewonnen { gewinner = "Rot"; } } } //Prüfe diagonal for(int x=0;x<4;x++) { for(int y=0;y<3;y++) { summe = feld[x, y] + feld[x + 1, y + 1] + feld[x + 2, y + 2] + feld[x + 3, y + 3]; if (summe == 4) gewinner = "Gelb"; if (summe == 8) gewinner = "Rot"; summe = feld[x, y + 3] + feld[x + 1, y + 2] + feld[x + 2, y + 1] + feld[x + 3, y]; if (summe == 4) gewinner = "Gelb"; if (summe == 8) gewinner = "Rot"; } } if(anzahlwuerfe==42&&gewinner=="") { MessageBox.Show("Unentschieden!"); vorbei = true; } else if(gewinner!="") { MessageBox.Show(gewinner + " hat gewonnen!"); vorbei = true; //Spiel vorbei } } private void canvas_Paint(object sender, PaintEventArgs e) { neustart(); } private void canvas_MouseMove(object sender, MouseEventArgs e) { label1.Text = e.X.ToString(); label2.Text = e.Y.ToString(); label3.Text = (e.X / 100).ToString(); label4.Text = (e.Y / 100).ToString(); } private void canvas_MouseDown(object sender, MouseEventArgs e) { int x = e.X / 100; //angeklickte Spalte if (!vorbei) //Prüfe nur, wenn Spiel noch nicht vorbei! { if (spalte[x] < 6) //wenn noch Platz frei ist.... { //Zeichnen der richtigen Farbe ins richtige Feld //Ist rot dran? if (rot) { //Rot zeichnen und ins feld für rot ... 2 reinschreiben brush.Color = Color.Red; feld[x, spalte[x]] = 2; } else //gelb ist dran { //gelb zeichnen und ins feld für gelb ... 1 reinschreiben brush.Color = Color.Yellow; feld[x, spalte[x]] = 1; } gObject.FillEllipse(brush, x * 100 + 10, (5 - spalte[x]) * 100 + 10, 80, 80); spalte[x]++; anzahlwuerfe++; rot = !rot; } else { MessageBox.Show("Spalte schon voll!"); } pruefefeld(); } } private void button1_Click(object sender, EventArgs e) { neustart(); } } }