Przychodzę do was z problemem aplikacji typu Memory. Mam tablice obrazów: obrazy[] oraz fragment kodu:
if (obrazy[numer_pierwszego] == obrazy[numer_drugiego]) { ... }
jednak po odpaleniu aplikacji i odkryciu dwóch takich samych "kart" nadal mi wyskakuje komunikat "Niestety, spróbuj ponownie". Próbowałem także opcji:
obrazy[numer_pierwszego].Equals(obrazy[numer_drugiego]));
jednak taka zmiana nic nie zmieniła :/
Wiecie co może być problemem? Z góry dziękuję za pomoc
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.Threading;
namespace Memory
{
public partial class Form1 : Form
{
bool[] czy_przyciski_maja_obraz = new bool[17];
Image[] obrazy = new Image[17];
bool[] zakryte = new bool[17];
bool czy_pierwszy_klik = true;
int numer_pierwszego = 0, numer_drugiego = 0;
int ruchy = 0;
public Form1()
{
InitializeComponent();
losuj_przycisk(Memory.Properties.Resources.m1);
losuj_przycisk(Memory.Properties.Resources.m1);
losuj_przycisk(Memory.Properties.Resources.m2);
losuj_przycisk(Memory.Properties.Resources.m2);
losuj_przycisk(Memory.Properties.Resources.m3);
losuj_przycisk(Memory.Properties.Resources.m3);
losuj_przycisk(Memory.Properties.Resources.m4);
losuj_przycisk(Memory.Properties.Resources.m4);
losuj_przycisk(Memory.Properties.Resources.m5);
losuj_przycisk(Memory.Properties.Resources.m5);
losuj_przycisk(Memory.Properties.Resources.m6);
losuj_przycisk(Memory.Properties.Resources.m6);
losuj_przycisk(Memory.Properties.Resources.m7);
losuj_przycisk(Memory.Properties.Resources.m7);
losuj_przycisk(Memory.Properties.Resources.m8);
losuj_przycisk(Memory.Properties.Resources.m8);
for (int i = 1; i < 17; i++)
{
zakryte[i] = true;
}
}
private void Button1_Click(object sender, EventArgs e)
{
if (button1.BackgroundImage != obrazy[1])
{
button1.BackgroundImage = obrazy[1];
if (czy_pierwszy_klik == true)
{
numer_pierwszego = 1;
czy_pierwszy_klik = false;
}
else
{
numer_drugiego = 1;
czy_pierwszy_klik = true;
sprawdz();
zobrazuj_przyciski();
}
}
}
// ... pozostałe 14 przycisków ...
private void Button16_Click(object sender, EventArgs e)
{
if (button16.BackgroundImage != obrazy[16])
{
button16.BackgroundImage = obrazy[16];
if (czy_pierwszy_klik == true)
{
numer_pierwszego = 16;
czy_pierwszy_klik = false;
}
else
{
numer_drugiego = 16;
czy_pierwszy_klik = true;
sprawdz();
zobrazuj_przyciski();
}
}
}
private void losuj_przycisk(Image obraz)
{
Random gen = new Random();
int numer_pola = gen.Next(1, 17);
while (czy_przyciski_maja_obraz[numer_pola] == true)
{
numer_pola = gen.Next(1, 17);
}
czy_przyciski_maja_obraz[numer_pola] = true;
obrazy[numer_pola] = obraz;
}
private void zobrazuj_przyciski()
{
if (zakryte[1] == false) { button1.BackgroundImage = obrazy[1]; } else { button1.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[2] == false) { button2.BackgroundImage = obrazy[2]; } else { button2.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[3] == false) { button3.BackgroundImage = obrazy[3]; } else { button3.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[4] == false) { button4.BackgroundImage = obrazy[4]; } else { button4.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[5] == false) { button5.BackgroundImage = obrazy[5]; } else { button5.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[6] == false) { button6.BackgroundImage = obrazy[6]; } else { button6.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[7] == false) { button7.BackgroundImage = obrazy[7]; } else { button7.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[8] == false) { button8.BackgroundImage = obrazy[8]; } else { button8.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[9] == false) { button9.BackgroundImage = obrazy[9]; } else { button9.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[10] == false) { button10.BackgroundImage = obrazy[10]; } else { button10.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[11] == false) { button11.BackgroundImage = obrazy[11]; } else { button11.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[12] == false) { button12.BackgroundImage = obrazy[12]; } else { button12.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[13] == false) { button13.BackgroundImage = obrazy[13]; } else { button13.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[14] == false) { button14.BackgroundImage = obrazy[14]; } else { button14.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[15] == false) { button15.BackgroundImage = obrazy[15]; } else { button15.BackgroundImage = Memory.Properties.Resources.back; }
if (zakryte[16] == false) { button16.BackgroundImage = obrazy[16]; } else { button16.BackgroundImage = Memory.Properties.Resources.back; }
}
private void sprawdz()
{
ruchy += 1;
if (obrazy[numer_pierwszego] == obrazy[numer_drugiego])
{
MessageBox.Show("Brawo! Para odgadnieta!");
zakryte[numer_pierwszego] = false;
zakryte[numer_drugiego] = false;
}
else
{
MessageBox.Show("Niestety, probuj dalej!");
}
int odkryte = 0;
for (int i = 1; i < 17; i++)
{
if (zakryte[i] == false)
{
odkryte++;
}
}
if (odkryte == 16) { MessageBox.Show("Koniec gry! Gratulacje! Twoje ruchy: " + ruchy); }
}
}
}