Kod :
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;
using System.Collections;
namespace oczko
{
public partial class Form1 : Form
{
Random los = new Random();
List<int> list = new List<int>();
int score = 0;
int escore = 0;
int counter = 3;
public Form1()
{
InitializeComponent();
button2.Enabled = false;
button3.Enabled = false;
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e) // <--- NOWA GRA
{
int score = 0;
int escore = 0;
int counter = 3;
button2.Enabled = true;
button3.Enabled = true;
string[] card = new string[24];
int[] value = new int[24];
card[0] = "9 trefl";
card[1] = "9 karo";
card[2] = "9 pik";
card[3] = "9 kier";
card[4] = "10 trefl";
card[5] = "10 karo";
card[6] = "10 pik";
card[7] = "10 kier";
card[8] = "Walet trefl";
card[9] = "Walet karo";
card[10] = "Walet pik";
card[11] = "Walet kier";
card[12] = "Dama trefl";
card[13] = "Dama karo";
card[14] = "Dama pik";
card[15] = "Dama kier";
card[16] = "Krol trefl";
card[17] = "Krol karo";
card[18] = "Krol pik";
card[19] = "Krol kier";
card[20] = "As trefl";
card[21] = "As karo";
card[22] = "As pik";
card[23] = "As kier";
value[0] = 0;
value[1] = 0;
value[2] = 0;
value[3] = 0;
value[4] = 10;
value[5] = 10;
value[6] = 10;
value[7] = 10;
value[8] = 2;
value[9] = 2;
value[10] = 2;
value[11] = 2;
value[12] = 3;
value[13] = 3;
value[14] = 3;
value[15] = 3;
value[16] = 4;
value[17] = 4;
value[18] = 4;
value[19] = 4;
value[20] = 11;
value[21] = 11;
value[22] = 11;
value[23] = 11;
listBox1.Items.Clear();
listBox2.Items.Clear();
list.Clear();
//losowanie 4 kart (po 2 na gracza)
while(list.Count != 4)
{
int i = los.Next(0, 23);
if (list.Contains(i))
continue;
else
list.Add(i);
}
listBox1.Items.Add(card[list[0]]);
listBox1.Items.Add(card[list[1]]);
score = value[list[0]] + value[list[1]];
textBox1.Text = score.ToString();
//przeciwnik
escore = value[list[2]] + value[list[3]];
while (escore < 15)
{
counter++;
while (list.Count != counter + 1)
{
listBox2.Items.Clear();
int i = los.Next(0, 23);
if (list.Contains(i))
continue;
else
list.Add(i);
escore += value[list[counter]];
for (int j = 2; j < counter + 1; j++)
{
listBox2.Items.Add(card[list[j]]);
}
}
}
textBox2.Text = escore.ToString();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e) // <--- DOBIERANIE KARTY
{
counter++;
string[] card = new string[24];
int[] value = new int[24];
card[0] = "9 trefl";
card[1] = "9 karo";
card[2] = "9 pik";
card[3] = "9 kier";
card[4] = "10 trefl";
card[5] = "10 karo";
card[6] = "10 pik";
card[7] = "10 kier";
card[8] = "Walet trefl";
card[9] = "Walet karo";
card[10] = "Walet pik";
card[11] = "Walet kier";
card[12] = "Dama trefl";
card[13] = "Dama karo";
card[14] = "Dama pik";
card[15] = "Dama kier";
card[16] = "Krol trefl";
card[17] = "Krol karo";
card[18] = "Krol pik";
card[19] = "Krol kier";
card[20] = "As trefl";
card[21] = "As karo";
card[22] = "As pik";
card[23] = "As kier";
value[0] = 0;
value[1] = 0;
value[2] = 0;
value[3] = 0;
value[4] = 10;
value[5] = 10;
value[6] = 10;
value[7] = 10;
value[8] = 2;
value[9] = 2;
value[10] = 2;
value[11] = 2;
value[12] = 3;
value[13] = 3;
value[14] = 3;
value[15] = 3;
value[16] = 4;
value[17] = 4;
value[18] = 4;
value[19] = 4;
value[20] = 11;
value[21] = 11;
value[22] = 11;
value[23] = 11;
while(list.Count != counter+1)
{
int i = los.Next(0, 23);
if (list.Contains(i))
continue;
else
list.Add(i);
}
listBox1.Items.Add(card[list[counter]]);
score += value[list[counter]];
textBox1.Text = score.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("Twoj wynik to: " + score.ToString() );
listBox1.Items.Clear();
list.Clear();
textBox1.Text = "0";
button2.Enabled = false;
button3.Enabled = false;
}
}
}
1. Program losuje 4 liczby, które następnie wpisuje do listy (sprawdza czy nie się nie powtarzają), liczby odpowiadają indeksom dwóch tabeli (string card i int value)
2. Program wyswietla na podstawie wylosowanych liczb 2 karty gracza i oblicza jego obecny wynik
3. Program sprawdza czy wynik komputera(przeciwnika) jest wiekszy od np. 15, jezeli nie to losuje jeszcze 1 liczbe, zwieksza licznik (counter) itd i na koncu wyswietla jego wynik koncowy i karty (poki co wszystko jest jawnie by miec pewnosc ze karty sie nie powtarzaja)
4. Po kliknieciu przez gracza "dobierz karte", program losuje nowa karte, wyswietla ja i dodaje do wyniku gracza oraz zwieksza licznik (counter)
5. Gdy gracz uzna ze nie chce dalej grac klika "pas" i program porownuje wynik jego i komputera.
Problem jest z owym licznikiem, z poczatku ustawiony jest on na 3, program dobrze losuje 4 karty, algorytm przeciwnika dziala (counter sie zwieksza, wyniki sie zgadzaja, karty sie nie powtarzaja). Jednak gdy gracz chce dobrac karte, licznik sie resetuje i znow ustawia na 3 (mimo ze wczesniejsze dodatkowe losowania programu go zwiekszyly) i wtedy wychodza bledy w wyniku gracza. Nie wiem gdzie powinienem umiescić ten licznik by działał poprawnie?
Druga sprawa to sposob deklaracji tych tablic card i value... nie mogę tego inaczej rozwiązać, niż deklarować te tablice w obu przyciskach ? Jeżeli dam to w innym miejscu to wyskakuja bledy, a poki co na inne rozwiazanie nie wpadlem..
Zakładki