예제 #1
0
        //----------------------------------------------------------------------------------------------

        private void dgwtabell_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int rad    = e.RowIndex;
            int kolumn = e.ColumnIndex;

            //MessageBox.Show(kolumn.ToString() + " " + rad.ToString());
            //MessageBox.Show((allakort[dgwtabell.ColumnCount * rad + kolumn].figuren == -1) +" "+(figur1.xposition == kolumn) + " " + (figur1.yposition == rad));
            if (allakort[dgwtabell.ColumnCount * rad + kolumn].figuren == -1 || (figur1.xposition == kolumn && figur1.yposition == rad))
            {
                MessageBox.Show("Vald ruta redan tagen");
                return;
            }
            //if (allakort[dgwtabell.ColumnCount * rad + kolumn])
            foreach (Kort k1 in allakort)
            {
                if (k1.xposition == kolumn && k1.yposition == rad)
                {
                    MessageBox.Show(k1.figuren.ToString());
                    if (val == 0)
                    {
                        figur1 = k1;
                    }
                    else
                    {
                        figur2 = k1;
                    }
                }
            }
            val++;
            checkDou();
            if (val > 1)
            {
                dgwtabell.ClearSelection();
                val = 0;
                if (spelare == 1)
                {
                    spelare = 2;
                }
                else
                {
                    spelare = 1;
                }
                figur1 = new Kort(-1, -1, -1); figur2 = new Kort(-1, -1, -1);
                MessageBox.Show("Spelare bytad till " + spelare);
            }
        }
예제 #2
0
        private void btnLaddaupp_Click(object sender, EventArgs e)
        {
            dgwtabell.ClearSelection();
            DialogResult resultat = openFileDialog1.ShowDialog();

            if (resultat == DialogResult.OK)
            {
                FileStream inStröm = new FileStream(openFileDialog1.FileName, FileMode.Open,
                                                    FileAccess.Read);
                StreamReader läsare = new StreamReader(inStröm);


                string   rad      = läsare.ReadLine();
                string[] variabel = rad.Split(' ');
                spelare       = ushort.Parse(variabel[0]);
                poangspelare1 = int.Parse(variabel[1]);
                poangspelare2 = int.Parse(variabel[2]);
                val           = int.Parse(variabel[3]);

                rad      = läsare.ReadLine();
                variabel = rad.Split(' ');
                int kolumner = int.Parse(variabel[0]);
                int rader    = int.Parse(variabel[1]);

                rad      = läsare.ReadLine();
                variabel = rad.Split(' ');
                figur1   = new Kort(int.Parse(variabel[0]), int.Parse(variabel[1]), int.Parse(variabel[2]));

                //Först tas alla nuvarande kort bort sedan läggs alla kort från filen inmattade i listan.
                allakort.Clear();
                for (int i = 0; i < (kolumner * rader); i++)
                {
                    rad      = läsare.ReadLine();
                    variabel = rad.Split(' ');
                    Kort kort = new Kort(int.Parse(variabel[0]), int.Parse(variabel[1]), int.Parse(variabel[2]));
                    allakort.Add(kort);
                }
                //Ser till att det blir rätt antal rader
                while (dgwtabell.Rows.Count != rader)
                {
                    //Läger till rader tills det är lika många på brädet som filen
                    if (dgwtabell.Rows.Count < rader)
                    {
                        dgwtabell.Rows.Add("");
                    }
                    //Om det är mer än tillräckligt många rader tar programmet bort rader tills det är lika många som det står i filen.
                    else
                    {
                        dgwtabell.Rows.Remove(dgwtabell.Rows[0]);
                    }
                }
                //Ser till att det blir rätt antal kolumner
                while (dgwtabell.Columns.Count != kolumner)
                {
                    //Ifall det är färre kolumner i applikationen än vad det står i filen lägger den tills det är lika många.
                    if (dgwtabell.Columns.Count < kolumner)
                    {
                        dgwtabell.Columns.Add("", "");
                    }
                    //Tvärtom om det är färre i filen än vad det är på spelplannen
                    else
                    {
                        dgwtabell.Columns.Remove(dgwtabell.Columns[0]);
                    }
                }
                //Alla kort som har blivit tagna innan man sparade blir röda, så man kan ha koll.
                foreach (Kort rödakort in allakort)
                {
                    if (rödakort.figuren == -1)
                    {
                        dgwtabell.Rows[rödakort.yposition].Cells[rödakort.xposition].Style.BackColor = Color.Red;
                    }
                }

                lblnuvarandeSpelare.Text = "Spelare : " + spelare;
                lblspelare1Poäng.Text    = "Spelare 1: " + poangspelare1;
                lblspelare2Poäng.Text    = "Spelare 2: " + poangspelare2;

                string filText = läsare.ReadToEnd();
                Debug.WriteLine(filText);
                läsare.Dispose();
            }
        }
예제 #3
0
        ///<summary>
        ///  Slumpa alla kort.
        ///  Denna metoden slumpar fram alla kort ifall det är ett jämt antal kort
        /// </summary>
        private void slumpa()
        {
            int kolumner  = dgwtabell.ColumnCount;
            int rader     = dgwtabell.RowCount;
            int antalkort = rader * kolumner;

            //Måste ha ett jämt antal kort
            if (antalkort % 2 != 0)
            {// Kanske inte bästa iden att ha det komma upp varje gång man klickar
                MessageBox.Show("Ha ett jämnt antal kort");
            }
            else
            {
                //Vet att det tar data kraft varje gång man klickar för att lägga till en rad/kolumn. Ha slumpa som enskild knapp innan, men jag själv tyckte det var skönare med detta. Mindre att tänka på som användare.
                allakort.Clear();
                /// <summary>
                /// Håller koll på vilka kort som inte har blivit valda änu.
                /// </summary>
                List <int> intevald = new List <int>();
                for (int j = 0; j < antalkort; j++)
                {
                    intevald.Add(j);
                    allakort.Add(new Kort(-1, -1, -1));
                }
                //Debug.WriteLine(allakort.Count);
                //Gjorde det mesta av detta i början och jag vet vad som händer... men dumt av mig att inte skriva ner vad som händer. Då jag har svårt att kunna berätta vad som händer.
                for (int i = 0; i < antalkort / 2; i++)
                {
                    while (true)
                    {
                        Random random = new Random();
                        int    i1     = random.Next(0, antalkort - (i * 2));
                        int    i2     = random.Next(0, antalkort - (i * 2));
                        int    index1 = intevald[i1];
                        int    index2 = intevald[i2];
                        //Debug.WriteLine(index1 + " " + index2);
                        if (index1 != index2 && allakort[index1].figuren == -1 && allakort[index2].figuren == -1)
                        {
                            int x = index1 % kolumner;
                            int y = index1 / kolumner;
                            allakort[index1] = new Kort(x, y, i);
                            x = index2 % kolumner;
                            y = index2 / kolumner;
                            allakort[index2] = new Kort(x, y, i);

                            if (i1 < i2)
                            {
                                intevald.RemoveAt(i1);
                                intevald.RemoveAt(i2 - 1);
                            }
                            else
                            {
                                intevald.RemoveAt(i2);
                                intevald.RemoveAt(i1 - 1);
                            }
                            int n = intevald.Count;
                            while (n > 1)
                            {
                                n--;
                                int k    = random.Next(n + 1);
                                int temp = intevald[k];
                                intevald[k] = intevald[n];
                                intevald[n] = temp;
                            }
                            break;
                        }
                    }
                    //Debug.WriteLine(i);
                }
                //Går igenom alla kort: med placering och figur
                Debug.WriteLine("Klar");
                for (int j = 0; j < antalkort; j++)
                {
                    Debug.WriteLine("x:" + allakort[j].xposition + "   y:" + allakort[j].yposition + " || " + allakort[j].figuren);
                }
            }
        }