//---------------------------------------------------------------------------------------------- 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); } }
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(); } }
///<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); } } }