// Knobel (von Thomas Brenninger)

// Bitte erst mal starten und Anleitung lesen!!!!!!!!


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Knobel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
            
        }

        // Bool Werte, zur Kontrolle, damit Feld nicht zweimal benutzt wird
        public bool con1=false, con2=false, con3=false, con4=false, con5=false, con6=false;
        public bool con7=false, con8=false, con9=false, con10=false, con11=false, con12=false, con13=false;
        

        // Zufallszahlen werden instanziiert
        public int zuf1, zuf2, zuf3, zuf4, zuf5;
        
        // speichert ob eine Box markiert ist 1 = nein, 2 = ja
        // markiert heißt: beim Würfeln-Button werden nur die nicht-markierten Würfel gewürfelt
        public bool init1 = false, init2 = false, init3 = false, init4 = false, init5 = false;

        // Zähler, damit man nur dreimal würfeln kann
        public int zähler=1;

        // Bonus-Sperre
        public bool bonus = false;

        // sperre, bestimmt wann ein Würfel markiert werden darf
        // markiert heißt, dass beim Würfeln die markierten nicht neu gewürfelt werden
        // true = kein Würfel kann markiert werden
        public bool sperre = true;

        // sperre2, damit in einer Runde nicht zwei Felder mit dem Würfelergenis belegt werden
        public bool sperre2 = true;

        // Endsumme
        public int Endsumme = 0;
        // Gesamtpunkte oben
        public int Gesamt = 0;
        public int Gesamtob = 0;
        // Gesamtpunkte unten
        public int Gesamtun = 0;
        
        // Würfeln-Button
        public void button1_Click(object sender, EventArgs e)
        {
            // Spiel zuende
            // Test, ob alle Felder belegt sind
            if (con1 == true && con2 == true && con3 == true && con4 == true && con5 == true && con6 == true && con7 == true)
            {
                if (con8 == true && con9 == true && con10 == true && con11 == true && con12 == true && con13 == true)
                {
                    MessageBox.Show("Spiel vorbei. Du hast " + Endsumme + " Punkte!");
                    Form3 start3 = new Form3();

                    // Einlesen der Textdatei "Highscore.txt"
                    string m = "Highscore.txt";
                    string s = Environment.CurrentDirectory.ToString();
                    m.Insert(1, s);
                    StreamReader myReader = File.OpenText(m);

                    try
                    {
                        // Eintragen in die Textboxen
                        //1.
                        start3.textBox2.Text = myReader.ReadLine();
                        start3.textBox3.Text = myReader.ReadLine();

                        //2.
                        start3.textBox7.Text = myReader.ReadLine();
                        start3.textBox5.Text = myReader.ReadLine();

                        //3.
                        start3.textBox6.Text = myReader.ReadLine();
                        start3.textBox8.Text = myReader.ReadLine();

                        //4.
                        start3.textBox9.Text = myReader.ReadLine();
                        start3.textBox11.Text = myReader.ReadLine();

                        //5.
                        start3.textBox10.Text = myReader.ReadLine();
                        start3.textBox12.Text = myReader.ReadLine();

                    }

                    finally { myReader.Close(); }

                   



                    
                    Form4 start4 = new Form4();
                    this.Hide();

                    // Falls man unter den besten 5 ist, erscheint "Neuer Highscore"
                    if (Endsumme >= Convert.ToInt32(start3.textBox12.Text))
                    {
                        MessageBox.Show("neuer Highscore");
                        
                        // Fenster "Namen eingeben" erscheint
                        if (start4.ShowDialog() == DialogResult.OK)
                        {
                           
                        }
                    }

                    // falls kein Name eingetragen wurde, wird Name=Unbekannter gesetzt
                    if (start4.textBox1.Text == "") start4.textBox1.Text = "Unbekannter";

                    // falls man nicht unter den Top 5 ist
                    if (Endsumme < Convert.ToInt32(start3.textBox12.Text))
                    {

                    }
                       
                    // falls man unter den Top 5 ist
                    else
                    {
                        StreamWriter myWriter = File.CreateText(m);

                        // Abspeichern in Textdatei "Highscore.txt"
                        try
                        {
                            // Du bist erster
                            if (Endsumme >= Convert.ToInt32(start3.textBox3.Text))
                            {
                                //1. das bin ich
                                myWriter.WriteLine(start4.textBox1.Text);
                                myWriter.WriteLine(Endsumme.ToString());
                                MessageBox.Show("Du bist 1.");

                                //2.
                                myWriter.WriteLine(start3.textBox2.Text);
                                myWriter.WriteLine(start3.textBox3.Text);

                                //3.
                                myWriter.WriteLine(start3.textBox7.Text);
                                myWriter.WriteLine(start3.textBox5.Text);

                                //4.
                                myWriter.WriteLine(start3.textBox6.Text);
                                myWriter.WriteLine(start3.textBox8.Text);

                                //5.
                                myWriter.WriteLine(start3.textBox9.Text);
                                myWriter.WriteLine(start3.textBox11.Text);

                            }


                            // Du bist zweiter
                            else if (Endsumme >= Convert.ToInt32(start3.textBox5.Text))
                            {
                                //1.
                                myWriter.WriteLine(start3.textBox2.Text);
                                myWriter.WriteLine(start3.textBox3.Text);

                                //2. das bin ich
                                myWriter.WriteLine(start4.textBox1.Text);
                                myWriter.WriteLine(Endsumme.ToString());
                                MessageBox.Show("Du bist 2.");

                                //3.
                                myWriter.WriteLine(start3.textBox7.Text);
                                myWriter.WriteLine(start3.textBox5.Text);

                                //4.
                                myWriter.WriteLine(start3.textBox6.Text);
                                myWriter.WriteLine(start3.textBox8.Text);

                                //5.
                                myWriter.WriteLine(start3.textBox9.Text);
                                myWriter.WriteLine(start3.textBox11.Text);
                            }


                            // Du bist dritter
                            else if (Endsumme >= Convert.ToInt32(start3.textBox8.Text))
                            {
                                //1.
                                myWriter.WriteLine(start3.textBox2.Text);
                                myWriter.WriteLine(start3.textBox3.Text);

                                //2.
                                myWriter.WriteLine(start3.textBox7.Text);
                                myWriter.WriteLine(start3.textBox5.Text);

                                //3. das bin ich
                                myWriter.WriteLine(start4.textBox1.Text);
                                myWriter.WriteLine(Endsumme.ToString());
                                MessageBox.Show("Du bist 3.");

                                //4.
                                myWriter.WriteLine(start3.textBox6.Text);
                                myWriter.WriteLine(start3.textBox8.Text);

                                //5.
                                myWriter.WriteLine(start3.textBox9.Text);
                                myWriter.WriteLine(start3.textBox11.Text);
                            }


                            // Du bist vierter
                            else if (Endsumme >= Convert.ToInt32(start3.textBox11.Text))
                            {
                                //1.
                                myWriter.WriteLine(start3.textBox2.Text);
                                myWriter.WriteLine(start3.textBox3.Text);

                                //2.
                                myWriter.WriteLine(start3.textBox7.Text);
                                myWriter.WriteLine(start3.textBox5.Text);

                                //3.
                                myWriter.WriteLine(start3.textBox6.Text);
                                myWriter.WriteLine(start3.textBox8.Text);

                                //4. das bin ich
                                myWriter.WriteLine(start4.textBox1.Text);
                                myWriter.WriteLine(Endsumme.ToString());
                                MessageBox.Show("Du bist 4.");

                                //5.
                                myWriter.WriteLine(start3.textBox9.Text);
                                myWriter.WriteLine(start3.textBox11.Text);
                            }

                            // Du bist fünfter
                            else if (Endsumme >= Convert.ToInt32(start3.textBox12.Text))
                            {
                                //1.
                                myWriter.WriteLine(start3.textBox2.Text);
                                myWriter.WriteLine(start3.textBox3.Text);

                                //2.
                                myWriter.WriteLine(start3.textBox7.Text);
                                myWriter.WriteLine(start3.textBox5.Text);

                                //3.
                                myWriter.WriteLine(start3.textBox6.Text);
                                myWriter.WriteLine(start3.textBox8.Text);

                                //4.
                                myWriter.WriteLine(start3.textBox9.Text);
                                myWriter.WriteLine(start3.textBox11.Text);

                                //5. das bin ich
                                myWriter.WriteLine(start4.textBox1.Text);
                                myWriter.WriteLine(Endsumme.ToString());
                                MessageBox.Show("Du bist 5.");
                            }

                            

                        }

                        finally { myWriter.Close(); }

                    }



                    // Ergebnis anzeigen:
                    // d.h. lesen aus der Textdatei "Highscore.txt" und in Textboxen eintragen
                    StreamReader my2Reader = File.OpenText(m);

                    try
                    {
                        //1.
                        start3.textBox2.Text = my2Reader.ReadLine();
                        start3.textBox3.Text = my2Reader.ReadLine();

                        //2.
                        start3.textBox7.Text = my2Reader.ReadLine();
                        start3.textBox5.Text = my2Reader.ReadLine();

                        //3.
                        start3.textBox6.Text = my2Reader.ReadLine();
                        start3.textBox8.Text = my2Reader.ReadLine();

                        //4.
                        start3.textBox9.Text = my2Reader.ReadLine();
                        start3.textBox11.Text = my2Reader.ReadLine();

                        //5.
                        start3.textBox10.Text = my2Reader.ReadLine();
                        start3.textBox12.Text = my2Reader.ReadLine();

                    }

                    finally { my2Reader.Close(); }

                    // Highscore-Fenster wird aufgerufen
                    // wenn Fenster geschlossen wird, wieder Startfenster
                    if (start3.ShowDialog() == DialogResult.OK)
                    {
                        this.DialogResult = DialogResult.OK;
                    }

                }
            }

         
            // ########################################################################################################
            // während das Spiel noch läuft

            // legt eine Bipmap an
            Bitmap box1 = new Bitmap(60, 60); 
            Bitmap box2 = new Bitmap(60, 60); 
            Bitmap box3 = new Bitmap(60, 60); 
            Bitmap box4 = new Bitmap(60, 60); 
            Bitmap box5 = new Bitmap(60, 60); 

            
            // malt weißes Hintergrund
            Graphics g1 = Graphics.FromImage(box1); // d.h. g = e.Graphics
            g1.FillRectangle(Brushes.White, new Rectangle(0, 0, box1.Width, box1.Height));
            Graphics g2 = Graphics.FromImage(box2); // d.h. g = e.Graphics
            g2.FillRectangle(Brushes.White, new Rectangle(0, 0, box2.Width, box2.Height));
            Graphics g3 = Graphics.FromImage(box3); // d.h. g = e.Graphics
            g3.FillRectangle(Brushes.White, new Rectangle(0, 0, box3.Width, box3.Height));
            Graphics g4 = Graphics.FromImage(box4); // d.h. g = e.Graphics
            g4.FillRectangle(Brushes.White, new Rectangle(0, 0, box4.Width, box4.Height));
            Graphics g5 = Graphics.FromImage(box5); // d.h. g = e.Graphics
            g5.FillRectangle(Brushes.White, new Rectangle(0, 0, box5.Width, box5.Height));

           

            // Sperren freigeben
            sperre2 = false;
            if (zähler == 1) sperre = false;


            int boxnummer1,boxnummer2, boxnummer3, boxnummer4, boxnummer5;
            

            // Zufallszahl zwischen 1 und 6

            Random zuf = new Random();

            // falls man noch nicht öfter als dreimal gewürfelt hat
            if (zähler < 4)
            {
                // Zufallszahlen werden generiert
                // wobei initi==false heißt, dass Feld i nicht markiert ist
                if (init1 == false) zuf1 = zuf.Next(1, 7);
                if (init2 == false) zuf2 = zuf.Next(1, 7);
                if (init3 == false) zuf3 = zuf.Next(1, 7);
                if (init4 == false) zuf4 = zuf.Next(1, 7);
                if (init5 == false) zuf5 = zuf.Next(1, 7);

                // in der nächsten Zeile sind die Argumente für die Methode erklärt
                // Boxennummer    (boxennummer, würfelblatt, boxenzeichnung)
                boxnummer1 = zeichnewürfel(1, zuf1, g1);
                boxnummer2 = zeichnewürfel(2, zuf2, g2);
                boxnummer3 = zeichnewürfel(3, zuf3, g3);
                boxnummer4 = zeichnewürfel(4, zuf4, g4);
                boxnummer5 = zeichnewürfel(5, zuf5, g5);
                // zeichnewürfel(...) 20 Zeilen weiter unten


                // Zeichnet die Boxen
                // Bsp(1.Zeile): boxnummer==1(also erster Würfel) wird angesprochen
                //               falls nicht markiert wurde, wird neues Bild gezeichnet
                if (boxnummer1 == 1 && init1 == false) pictureBox1.Image = box1;
                if (boxnummer2 == 2 && init2 == false) pictureBox2.Image = box2;
                if (boxnummer3 == 3 && init3 == false) pictureBox3.Image = box3;
                if (boxnummer4 == 4 && init4 == false) pictureBox4.Image = box4;
                if (boxnummer5 == 5 && init5 == false) pictureBox5.Image = box5;
            }

            // falls man schon dreimal gewürfelt hat, sperre, damit man nicht nochmal würfeln kann
            if (zähler == 3) sperre = true;
            zähler = zähler + 1;


        }
            
        // Zeichnet den Würfel
        private int zeichnewürfel(int boxnummer, int würfelblatt, Graphics gex) // i ist die picturbox nummer
        {
           
            // Würfelblöcke werden angelegt
            Pen pen = new Pen(Color.Purple, 6.0f); // legt Klasse pen mit Eigenschaften an


            if (würfelblatt == 1)
            {
                
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 27, 27, 5, 5, 0, 360);
                
            }

            if (würfelblatt == 2)
            {
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 15, 27, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 27, 5, 5, 0, 360);

            } 
            
            if (würfelblatt == 3)
            {
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 13, 13, 5, 5, 0, 360);
                gex.DrawArc(pen, 27, 27, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 40, 5, 5, 0, 360);


            }

            if (würfelblatt == 4)
            {
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 15, 15, 5, 5, 0, 360);
                gex.DrawArc(pen, 15, 40, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 15, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 40, 5, 5, 0, 360);

            }

            if (würfelblatt == 5)
            {
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 27, 27, 5, 5, 0, 360);
                gex.DrawArc(pen, 15, 15, 5, 5, 0, 360);
                gex.DrawArc(pen, 15, 40, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 15, 5, 5, 0, 360);
                gex.DrawArc(pen, 40, 40, 5, 5, 0, 360);

            }

            if (würfelblatt == 6)
            {
                gex.DrawRectangle(pen, 0, 0, 60, 60);
                gex.DrawArc(pen, 10, 10, 5, 5, 0, 360);
                gex.DrawArc(pen, 10, 27, 5, 5, 0, 360);
                gex.DrawArc(pen, 10, 45, 5, 5, 0, 360);
                gex.DrawArc(pen, 45, 10, 5, 5, 0, 360);
                gex.DrawArc(pen, 45, 27, 5, 5, 0, 360);
                gex.DrawArc(pen, 45, 45, 5, 5, 0, 360);

            }

           
            return boxnummer; 
            
           
                

        }

        private void button2_Click(object sender, EventArgs e)
        {
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }





        //Markierungs-Buttons
        // 1. Markierungs-Button wird gedrückt
        private void mark1_Click(object sender, EventArgs e)
        {
            
            Bitmap box1 = new Bitmap(60, 60);
            Graphics g1 = Graphics.FromImage(box1); 

            //Prüfe, ob man eintragen darf
            if (sperre == false)
            {
                // falls nocht nicht markiert, wird dieser markiert (also gezeichnet)
                if (init1 == false)
                {
                    g1.FillRectangle(Brushes.GreenYellow, new Rectangle(0, 0, box1.Width, box1.Height));
                    zeichnewürfel(1, zuf1, g1);
                    init1 = true;

                }
                // falls schon markiert, wird die Markierung aufgehoben
                else
                {
                    g1.FillRectangle(Brushes.White, new Rectangle(0, 0, box1.Width, box1.Height));
                    zeichnewürfel(1, zuf1, g1);
                    init1 = false;
                }

                pictureBox1.Image = box1;
            }
        }

        // analog zu mark1_Click (siehe oben)
        private void mark2_Click(object sender, EventArgs e)
        {
            
            Bitmap box2 = new Bitmap(60, 60);
            Graphics g2 = Graphics.FromImage(box2); 
            if (sperre == false)
            {
                if (init2 == false)
                {
                    g2.FillRectangle(Brushes.GreenYellow, new Rectangle(0, 0, box2.Width, box2.Height));
                    zeichnewürfel(2, zuf2, g2);
                    init2 = true;

                }
                else
                {
                    g2.FillRectangle(Brushes.White, new Rectangle(0, 0, box2.Width, box2.Height));
                    zeichnewürfel(2, zuf2, g2);
                    init2 = false;
                }
                
                pictureBox2.Image = box2;
            }

        }

        // analog zu mark1_Click (siehe oben)
        private void mark3_Click(object sender, EventArgs e)
        {
            
            Bitmap box3 = new Bitmap(60, 60);
            Graphics g3 = Graphics.FromImage(box3); 
            if (sperre == false)
            {
                if (init3 == false)
                {
                    g3.FillRectangle(Brushes.GreenYellow, new Rectangle(0, 0, box3.Width, box3.Height));
                    zeichnewürfel(3, zuf3, g3);
                    init3 = true;

                }
                else
                {
                    g3.FillRectangle(Brushes.White, new Rectangle(0, 0, box3.Width, box3.Height));
                    zeichnewürfel(3, zuf3, g3);
                    init3 = false;
                }
                
                pictureBox3.Image = box3;
            }

        }

        // analog zu mark1_Click (siehe oben)
        private void mark4_Click(object sender, EventArgs e)
        {
            
            Bitmap box4 = new Bitmap(60, 60);
            Graphics g4 = Graphics.FromImage(box4); 
            if (sperre == false)
            {
                if (init4 == false)
                {
                    g4.FillRectangle(Brushes.GreenYellow, new Rectangle(0, 0, box4.Width, box4.Height));
                    zeichnewürfel(4, zuf4, g4);
                    init4 = true;

                }
                else
                {
                    g4.FillRectangle(Brushes.White, new Rectangle(0, 0, box4.Width, box4.Height));
                    zeichnewürfel(4, zuf4, g4);
                    init4 = false;
                }
                
                pictureBox4.Image = box4;
            }

        }

        // analog zu mark1_Click (siehe oben)
        private void mark5_Click(object sender, EventArgs e)
        {
            
            Bitmap box5 = new Bitmap(60, 60);
            Graphics g5 = Graphics.FromImage(box5); 
            if (sperre == false)
            {
                if (init5 == false)
                {
                    g5.FillRectangle(Brushes.GreenYellow, new Rectangle(0, 0, box5.Width, box5.Height));
                    zeichnewürfel(5, zuf5, g5);
                    init5 = true;

                }
                else
                {
                    g5.FillRectangle(Brushes.White, new Rectangle(0, 0, box5.Width, box5.Height));
                    zeichnewürfel(5, zuf5, g5);
                    init5 = false;
                }
                
                pictureBox5.Image = box5;
            }

        }

        // Einser-Button
        private void Folge1_Click(object sender, EventArgs e)
        {
            // falls noch nichts in die Textbox der Einser eingetragen worden ist
            if (con1 == false) 
            {
                // falls man noch nicht ein anderes Feld mit Würfelergebnis belegt hat
                if (sperre2 == false)
                {
                    //Würfelsperre wieder freigeben
                    zähler = 1;
                    // Markierungen wieder abschalten
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    
                    // Methode "addieren" (siehe unten)
                    int zahl = addieren(1);
                    
                    // Würfelergebnis wird in Textbox eingetragen
                    textBox1en.Text = zahl.ToString();

                    int zahl2;
                    zahl = addieren(1);
                    zahl2 = addieren(1);
                    if (zahl != zahl2) MessageBox.Show("Fehler!"); 

                    // Gesamt... wird aktualisiert
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    //Eintrag in Textboxen
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    // Wieder alles freigeben
                    sperre = true;
                    sperre2 = true;
                    con1 = true;
                }
                
                
            }

            

        }


        // Zweier-Button
        // analog zu Folge1_Click (siehe oben)
        private void Folge2_Click(object sender, EventArgs e)
        {
            if (con2 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = addieren(2);
                    textBox2en.Text = zahl.ToString();

                    int zahl2;
                    zahl = addieren(2);
                    zahl2 = addieren(2);
                    if (zahl != zahl2) MessageBox.Show("Fehler!");
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    sperre = true;
                    sperre2 = true;
                    con2 = true;
                }
               
                
            }
           

            
            
        }

        // Dreier-Button
        // analog zu Folge1_Click (siehe oben)
        private void Folge3_Click(object sender, EventArgs e)
        {
            if (con3 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = addieren(3);
                    textBox3en.Text = zahl.ToString();
                    int zahl2;
                    zahl = addieren(3);
                    zahl2 = addieren(3);
                    if (zahl != zahl2) MessageBox.Show("Fehler!");
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    sperre = true;
                    sperre2 = true;
                    con3 = true;
                }
                
                
            
            
            }

            
           
        }


        // Vierer-Button
        // analog zu Folge1_Click (siehe oben)
        private void Folge4_Click(object sender, EventArgs e)
        {
            if (con4 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = addieren(4);
                    textBox4en.Text = zahl.ToString();
                    int zahl2;
                    zahl = addieren(4);
                    zahl2 = addieren(4);
                    if (zahl != zahl2) MessageBox.Show("Fehler!");
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    sperre = true;
                    sperre2 = true;
                    con4 = true;
                }
               
            
            
            }

            
            
        }

        // Fünfer-Button
        // analog zu Folge1_Click (siehe oben)
        private void Folge5_Click(object sender, EventArgs e)
        {
            if (con5 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = addieren(5);
                    textBox5en.Text = zahl.ToString();
                    int zahl2;
                    zahl = addieren(5);
                    zahl2 = addieren(5);
                    if (zahl != zahl2) MessageBox.Show("Fehler!");
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    sperre = true;
                    sperre2 = true;
                    con5 = true;
                }
                
            
            
            }

            
            
        }


        // Sechser-Button
        // analog zu Folge1_Click (siehe oben)
        private void Folge6_Click(object sender, EventArgs e)
        {
            if (con6 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = addieren(6);
                    textBox6en.Text = zahl.ToString();
                    int zahl2;
                    zahl = addieren(6);
                    zahl2 = addieren(6);
                    if (zahl != zahl2) MessageBox.Show("Fehler!");
                    Gesamt = Gesamt + zahl;
                    Gesamtob = Gesamtob + zahl;

                    if (bonus == false)
                    {
                        // Bonus(siehe Form1.cd[Entwurf])
                        if (Gesamtob >= 63)
                        {
                            Gesamtob = Gesamtob + 35;
                            Endsumme = Endsumme + 35;
                            textBox11.Text = "35";
                            bonus = true;
                        }
                    }
                    Endsumme = Endsumme + zahl;
                    textBoxGesamt.Text = Gesamt.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox12.Text = Gesamtob.ToString();
                    sperre = true;
                    sperre2 = true;
                    con6 = true;
                }
                
            
            
            }

            


        }


        // addiert für die felder 1en, 2en, 3en,...
        private int addieren(int i)
        {
            // Sucht, wie oft eine Würfelzahl vorkommt
            int zahl = 0;
            if (zuf1 == i) zahl = zahl + i;
            if (zuf2 == i) zahl = zahl + i;
            if (zuf3 == i) zahl = zahl + i;
            if (zuf4 == i) zahl = zahl + i;
            if (zuf5 == i) zahl = zahl + i;

            return zahl;

        }


        // Dreierpasch-Button
        // Rechenskizze: Beispiel man würfel 3,3,4,3,6
        //             - Jetzt wird jede Würfelzahl mit den anderen verglichen
        //             - falls übereinstimmt int result wird um eins erhöht
        //             - zum Schluss überprüft man result (also result >= 3)
        
        private void Dreierpasch_Click(object sender, EventArgs e)
        {
            if (con7 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;
                    int result = 0;

                    if (zuf1 == zuf2) result = result + 1;
                    if (zuf1 == zuf3) result = result + 1;
                    if (zuf1 == zuf4) result = result + 1;
                    if (zuf1 == zuf5) result = result + 1;

                    if (zuf2 == zuf3) result = result + 1;
                    if (zuf2 == zuf4) result = result + 1;
                    if (zuf2 == zuf5) result = result + 1;

                    if (zuf3 == zuf4) result = result + 1;
                    if (zuf3 == zuf5) result = result + 1;

                    if (zuf4 == zuf5) result = result + 1;

                    // wichtig: >=
                    // da auch Viererpasch, Knobel, Full House als Dreierpasch gewertet werden kann
                    // dann werden alle Würfel zusammengezählt
                    // falls man überhaupt keinen Dreierpasch hat, wird 0 Punkte eingetragen
                    if (result >= 3)
                        zahl = zuf1 + zuf2 + zuf3 + zuf4 + zuf5;
                    else zahl = 0;

                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox25.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    
                    // Sperren werden gesetzt
                    sperre = true;
                    sperre2 = true;
                    con7 = true;
                }
                
            
            
            }


        }


        //Vierpasch-Button
        // analog zu Dreipasch_Click
        // Rechenskizze: Beispiel man würfel 3,3,4,3,3
        //             - Jetzt wird jede Würfelzahl mit den anderen verglichen
        //             - falls übereinstimmt int result wird um eins erhöht
        //             - zum Schluss überprüft man result (also result >= 6)
        private void Viererpasch_Click(object sender, EventArgs e)
        {
            if (con8 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;
                    int result = 0;

                    if (zuf1 == zuf2) result = result + 1;
                    if (zuf1 == zuf3) result = result + 1;
                    if (zuf1 == zuf4) result = result + 1;
                    if (zuf1 == zuf5) result = result + 1;

                    if (zuf2 == zuf3) result = result + 1;
                    if (zuf2 == zuf4) result = result + 1;
                    if (zuf2 == zuf5) result = result + 1;

                    if (zuf3 == zuf4) result = result + 1;
                    if (zuf3 == zuf5) result = result + 1;

                    if (zuf4 == zuf5) result = result + 1;

                    if (result >= 6)
                        zahl = zuf1 + zuf2 + zuf3 + zuf4 + zuf5;
                    else zahl = 0;

                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox26.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    sperre = true;
                    sperre2 = true;
                    con8 = true;
                }
                
            
            
            }

           
            
        }


        // Full House-Button 
        // Bsp für Würfelergebnis: 3,3,2,3,2 (siehe anleitung.txt)
        // wieder völlig analog zu Dreierpasch und Viererpasch
        // einziger Unterschied result == 4 wird geprüft
        private void FullHouse_Click(object sender, EventArgs e)
        {
            if (con9 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;
                    int result = 0;

                    if (zuf1 == zuf2) result = result + 1;
                    if (zuf1 == zuf3) result = result + 1;
                    if (zuf1 == zuf4) result = result + 1;
                    if (zuf1 == zuf5) result = result + 1;

                    if (zuf2 == zuf3) result = result + 1;
                    if (zuf2 == zuf4) result = result + 1;
                    if (zuf2 == zuf5) result = result + 1;

                    if (zuf3 == zuf4) result = result + 1;
                    if (zuf3 == zuf5) result = result + 1;

                    if (zuf4 == zuf5) result = result + 1;

                    if (result == 4)
                        zahl = 25;
                    else zahl = 0;

                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox27.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    sperre = true;
                    sperre2 = true;
                    con9 = true;
                }
                
            
            
            }

            
            
        }


        // kleine Straße-Button
        // Es gibt nur drei Möglichkeiten:
        //       1,2,3,4 oder 2,3,4,5 oder 3,4,5,6 (Reihenfolge egal)
        // Wichtig: große Straße kann auch als kleine Straße gewertet werden
        private void kleineStraße_Click(object sender, EventArgs e)
        {
            // prüfe, ob Feld schon vorher mal belegt wurde
            if (con10 == false)
            {
                // prüfe, ob in dieser Runde schon ein anderer Button gedrückt wurde
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;

                    // Kontrolle ob würfel 1,2,3,4
                    if (zuf1 == 1 || zuf2 == 1 || zuf3 == 1 || zuf4 == 1 || zuf5 == 1)
                    {
                        if (zuf1 == 2 || zuf2 == 2 || zuf3 == 2 || zuf4 == 2 || zuf5 == 2)
                        {
                            if (zuf1 == 3 || zuf2 == 3 || zuf3 == 3 || zuf4 == 3 || zuf5 == 3)
                            {
                                if (zuf1 == 4 || zuf2 == 4 || zuf3 == 4 || zuf4 == 4 || zuf5 == 4)
                                {

                                    // Punkte, die man bekommt, falls man kleine Straße hat
                                    zahl = 30;


                                }
                                else zahl = 0;
                            }
                            else zahl = 0;

                        }
                        else zahl = 0;
                    }

                        // Kontrolle ob würfel 2,3,4,5

                    else if (zuf1 == 2 || zuf2 == 2 || zuf3 == 2 || zuf4 == 2 || zuf5 == 2)
                    {
                        if (zuf1 == 3 || zuf2 == 3 || zuf3 == 3 || zuf4 == 3 || zuf5 == 3)
                        {
                            if (zuf1 == 4 || zuf2 == 4 || zuf3 == 4 || zuf4 == 4 || zuf5 == 4)
                            {
                                if (zuf1 == 5 || zuf2 == 5 || zuf3 == 5 || zuf4 == 5 || zuf5 == 5)
                                {
                                    // Punkte, die man bekommt, falls man kleine Straße hat
                                    zahl = 30;

                                }
                                else zahl = 0;
                            }
                            else zahl = 0;
                        }
                        else zahl = 0;
                    }

                // Kontrolle ob würfel 3,4,5,6

                    else if (zuf1 == 3 || zuf2 == 3 || zuf3 == 3 || zuf4 == 3 || zuf5 == 3)
                    {
                        if (zuf1 == 4 || zuf2 == 4 || zuf3 == 4 || zuf4 == 4 || zuf5 == 4)
                        {
                            if (zuf1 == 5 || zuf2 == 5 || zuf3 == 5 || zuf4 == 5 || zuf5 == 5)
                            {
                                if (zuf1 == 6 || zuf2 == 6 || zuf3 == 6 || zuf4 == 6 || zuf5 == 6)
                                {
                                    // Punkte, die man bekommt, falls man kleine Straße hat
                                    zahl = 30;
                                }
                                else zahl = 0;
                            }
                            else zahl = 0;
                        }
                        else zahl = 0;

                    }


                    else zahl = 0;

                    // Gesamtpunke und Endsumme erhöhen und eintragen
                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox28.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    sperre = true;
                    sperre2 = true;
                    con10 = true;

                }

            }

        }


        // große Straße-Button
        // Es gibt nur zwei Möglichkeiten:
        //      1,2,3,4,5 oder 2,3,4,5,6 (Reihenfolge egal)
        // völlig analog zu kleinen Straße
        private void großeStraße_Click(object sender, EventArgs e)
        {
            if (con11 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;

                    // Kontrolle ob würfel 1,2,3,4,5
                    if (zuf1 == 1 || zuf2 == 1 || zuf3 == 1 || zuf4 == 1 || zuf5 == 1)
                    {
                        if (zuf1 == 2 || zuf2 == 2 || zuf3 == 2 || zuf4 == 2 || zuf5 == 2)
                        {
                            if (zuf1 == 3 || zuf2 == 3 || zuf3 == 3 || zuf4 == 3 || zuf5 == 3)
                            {
                                if (zuf1 == 4 || zuf2 == 4 || zuf3 == 4 || zuf4 == 4 || zuf5 == 4)
                                {
                                    if (zuf1 == 5 || zuf2 == 5 || zuf3 == 5 || zuf4 == 5 || zuf5 == 5)
                                    {

                                        zahl = 40;
                                    }
                                    else zahl = 0;
                                }
                                else zahl = 0;
                            }
                            else zahl = 0;

                        }
                        else zahl = 0;
                    }

                        // Kontrolle ob würfel 2,3,4,5,6
                    else if (zuf1 == 2 || zuf2 == 2 || zuf3 == 2 || zuf4 == 2 || zuf5 == 2)
                    {
                        if (zuf1 == 3 || zuf2 == 3 || zuf3 == 3 || zuf4 == 3 || zuf5 == 3)
                        {
                            if (zuf1 == 4 || zuf2 == 4 || zuf3 == 4 || zuf4 == 4 || zuf5 == 4)
                            {
                                if (zuf1 == 5 || zuf2 == 5 || zuf3 == 5 || zuf4 == 5 || zuf5 == 5)
                                {
                                    if (zuf1 == 6 || zuf2 == 6 || zuf3 == 6 || zuf4 == 6 || zuf5 == 6)
                                    {
                                        zahl = 40;
                                    }
                                    else zahl = 0;
                                }
                                else zahl = 0;
                            }
                            else zahl = 0;
                        }
                        else zahl = 0;
                    }
                    else zahl = 0;


                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox29.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    sperre = true;
                    sperre2 = true;
                    con11 = true;
                }
                
            
            
            }

            
            
        }

        // Knobel-Button (fünf gleiche Würfelzahlen)
        private void Knobel_Click(object sender, EventArgs e)
        {
            if (con12 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;

                    // falls alle Würfelzahlen gleich sind, erhält man 50 Punkte
                    if (zuf1 == zuf2 && zuf2 == zuf3 && zuf3 == zuf4 && zuf4 == zuf5)
                        zahl = 50;
                    else zahl = 0;

                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox30.Text = zahl.ToString();
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    sperre = true;
                    sperre2 = true;
                    con12 = true;
                }
               
            
           
            }

            
            
        }


        // Chance-Button (zählt einfach alle Würfel zusammen)
        private void Chance_Click(object sender, EventArgs e)
        {
            if (con13 == false)
            {
                if (sperre2 == false)
                {
                    zähler = 1;
                    init1 = false; init2 = false; init3 = false; init4 = false; init5 = false;
                    int zahl = 0;
                    zahl = zuf1 + zuf2 + zuf3 + zuf4 + zuf5;

                    Gesamtun = Gesamtun + zahl;
                    Endsumme = Endsumme + zahl;
                    textBox15.Text = Gesamtun.ToString();
                    textBox17.Text = Endsumme.ToString();
                    textBox31.Text = zahl.ToString();
                    sperre = true;
                    sperre2 = true;
                    con13 = true;
                }
                
            
            
            }

            
            
        }

        // falls man auf X ganz rechts oben drückt, wird Start-Fenster wieder geöffnet
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.DialogResult = DialogResult.OK;
        }

       

      

       

        
    }
}
