Gra memory

0

Hej, pracuję nad kodem do gry memory w aplikacji okienkowej c#, ale średnio mi to idzie :c kod nie chce działać i nie bardzo wiem co mam zrobić. To mój 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;

namespace Memory
{
    public partial class Form1 : Form
    {
        public partial class Form1 : Form
        {
            bool[] czy_przyciski_maja_kolor = new bool[17];
            Color[] kolory = new Color[17];
            bool[] zakryte = new bool[17];
            bool czy_pierwszy_klik = true;
            int ruchy = 0;
            int numer_pierwszego = 0;
            int numer_drugiego = 0;
        }
        public Form1()
        {
            InitializeComponent();
            losuj_przycisk(Color.Red);
            losuj_przycisk(Color.Red);
            losuj_przycisk(Color.Blue);
            losuj_przycisk(Color.Blue);
            losuj_przycisk(Color.Pink);
            losuj_przycisk(Color.Pink);
            losuj_przycisk(Color.Green);
            losuj_przycisk(Color.Green);
            losuj_przycisk(Color.LightCoral);
            losuj_przycisk(Color.LightCoral);
            losuj_przycisk(Color.Gold);
            losuj_przycisk(Color.Gold);
            losuj_przycisk(Color.Khaki);
            losuj_przycisk(Color.Khaki);
            losuj_przycisk(Color.White);
            losuj_przycisk(Color.White);

            for (int i = 1; i < 17; i++)
            {
                zakryte[i] = true; //jeśli damy false i uruchomimy metode koloruj_przyciski() to wszystkie będą pokolorowane po uruchomieniu apki
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.BackColor != kolory[1])
            {
                button1.BackColor = kolory[1];
                if (czy_pierwszy_klik == true)
                    }
                {
                numer_pierwszego = 1;
                czy_pierwszy_klik = false;
            }
            else
            {
                numer_drugiego = 1;
                czy_pierwszy_klik = true;
                sprawdz();
                koloruj_przyciski();
            }
        }
        private void losuj_przycisk(Color kolor)
        {
            Random gen = new Random();
            int numer_pola = gen.Next(1, 17);
            while (czy_przyciski_maja_kolor[numer_pola] == true)
            {
                numer_pola = gen.Next(1, 17);
            }
            czy_przyciski_maja_kolor[numer_pola] = true;
            kolory[numer_pola] = kolor;
            
        }
        private void koloruj_przycisk()
        {
            if (zakryte[1] == false) { button1.BackColor = kolory[1]; } else { button1.BackColor = Color.Gray; }
            if (zakryte[2] == false) { button2.BackColor = kolory[2]; } else { button2.BackColor = Color.Gray; }
            if (zakryte[3] == false) { button3.BackColor = kolory[3]; } else { button3.BackColor = Color.Gray; }
            if (zakryte[4] == false) { button4.BackColor = kolory[4]; } else { button4.BackColor = Color.Gray; }
            if (zakryte[5] == false) { button5.BackColor = kolory[5];} else { button5.BackColor = Color.Gray; }
            if (zakryte[6] == false) { button6.BackColor = kolory[6];} else { button6.BackColor = Color.Gray; }
            if (zakryte[7] == false) { button7.BackColor = kolory[7];} else { button7.BackColor = Color.Gray; }
            if (zakryte[8] == false) { button8.BackColor = kolory[8];} else { button8.BackColor = Color.Gray; }
            if (zakryte[9] == false) { button9.BackColor = kolory[9];} else { button9.BackColor = Color.Gray; }
            if (zakryte[10] == false) { button10.BackColor = kolory[10]; } else { button10.BackColor = Color.Gray; }
            if (zakryte[11] == false) { button11.BackColor = kolory[11]; } else { button11.BackColor = Color.Gray; }
            if (zakryte[12] == false) { button12.BackColor = kolory[12]; } else { button12.BackColor = Color.Gray; }
            if (zakryte[13] == false) { button13.BackColor = kolory[13]; } else { button13.BackColor = Color.Gray; }
            if (zakryte[14] == false) { button14.BackColor = kolory[14]; } else { button14.BackColor = Color.Gray; }
            if (zakryte[15] == false) { button15.BackColor = kolory[15]; } else { button15.BackColor = Color.Gray; }
            if (zakryte[16] == false) { button16.BackColor = kolory[16]; } else { button16.BackColor = Color.Gray; }
        }
    }
}
private void sprawdz()
{
    ruchy = ruchy = 1;
    if (kolory[numer_pierwszego] == kolory[numer_drugiego])
    {
        MessageBox.Show("Brawo! Para odgadnięta! Liczba ruchów: " + ruchy);
        zakryte[numer_pierwszego] = false;
        zakryte[numer_drugiego] = false;
    }
    else
    {
        MessageBox.Show("Niestety, próbuj dalej");
    }

    int odkryte = 0;
    for (int g = 1; g < 17; g++)
    {
        if (zakryte[g] == false)
        {
            odkryte++;
        }
    }
    if (odkryte == 16) { MessageBox.Show("Odkryto wszystkie pary, Gratulacje!"); }
}```

0

57 błędów np. Nazwa "numer_drugiego" nie istnieje w bieżącym kontekście. i tak ze wszystkim.

0

Masz pokićkane klamry, to dlatego. tutaj poprawione: https://4programmers.net/Pastebin/11252
No ale tak czy siak to nie ma prawa za bardzo działać chyba? To Twój kod? Zauważ, że przy clicku sprawdzasz TYLKO JEDEN KONKRETNY przycisk.
Ja bym bardziej poszedł w dynamiczne tworzenie tych kontrolek zamiast się bawić ręcznie (googlaj: "How to create Dynamic Controls in C# ?", i myk z tym do tablicy).

0

Tu masz działające: https://4programmers.net/Pastebin/11253
Zmiana w button1_Click, żeby brało przycisk który faktycznie został kliknięty, a nie button1,
i metoda GetButtonIndex, żeby z nazwy buttona wyciągnąć indeks którego używasz w tablicach.

0
Boski napisał(a):

Tu masz działające: https://4programmers.net/Pastebin/11253
Zmiana w button1_Click, żeby brało przycisk który faktycznie został kliknięty, a nie button1,
i metoda GetButtonIndex, żeby z nazwy buttona wyciągnąć indeks którego używasz w tablicach.

Dzięki za pomoc!

Kod faktycznie zaczyna działać, ale nadal jest problem z przyciskami. Działa cały czas tylko pierwszy i nie można go nawet kliknąć ponownie ani nic, więc gra utyka na jednym odkrytym polu.

0

U mnie działa. Tylko podepnij button1_Click pod wszystkie widoczne przyciski

0
Boski napisał(a):

U mnie działa. Tylko podepnij button1_Click pod wszystkie widoczne przyciski

No tak faktycznie, zapomniałem podpiąć reszte przycisków xD teraz wszystko działa! Dzięki wielkie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1