Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

c++ reset PictureBox

Ostatnio zmodyfikowano 2016-03-19 18:48
Autor Wiadomość
qscefb
Temat założony przez niniejszego użytkownika
c++ reset PictureBox
» 2016-03-19 17:00:12
Witam, Zacząłem się bawić troche z windows form w c++ i mam pewien problem, tworze program który losuje 2 liczby i użytkownik wpisuje wynik. Liczby są losowane z przedziału 0-5, chciałbym aby po wylosowaniu liczb po wciśnięcu przycisku button2 pokazały się obrazki - tyle ile jest liczb tyle pokazuje się obrazków( z patyczkami). Problem polega na tym że po pierwszym pokazaniu obrazki się nie ksuja i w nastepnym losowaniu jesli liczba jest wieksza to obrazek zostaje oddany a jeśli mniejsza to już obrazki nie znikają. Jak zrobić aby po wciśnięciu przycisku nastąpił reset i usunięcie poprzednich obrazków? Kod pewnie mozna było zrobić lepiej ale nie wiem jak więc zrobiłem tak:

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {

if (liczba1 == 0)
{
}
if (liczba1 == 1)
{
picture11->Visible = true;
}
if (liczba1 == 2)
{
picture11->Visible = true;
picture12->Visible = true;
}
if (liczba1 == 3)
{
picture11->Visible = true;
picture12->Visible = true;
picture13->Visible = true;
}
if (liczba1 == 4)
{
picture11->Visible = true;
picture12->Visible = true;
picture13->Visible = true;
picture14->Visible = true;
}
if (liczba1 == 5)
{
picture11->Visible = true;
picture12->Visible = true;
picture13->Visible = true;
picture14->Visible = true;
picture15->Visible = true;
}
if (liczba2 == 0)
{
}
if (liczba2 == 1)
{
picture21->Visible = true;
}
if (liczba2 == 2)
{
picture21->Visible = true;
picture22->Visible = true;
}
if (liczba2 == 3)
{
picture21->Visible = true;
picture22->Visible = true;
picture23->Visible = true;
}
if (liczba2 == 4)
{
picture21->Visible = true;
picture22->Visible = true;
picture23->Visible = true;
picture24->Visible = true;
}
if (liczba2 == 5)
{
picture21->Visible = true;
picture22->Visible = true;
picture23->Visible = true;
picture24->Visible = true;
picture25->Visible = true;
}
}
Wszystkie picturebox sa ustawione na false i dopiero po wylosowaniu liczby zmieniają się na true lecz potem się nie resetują przy kolejnym losowaniu.
Jak dodać do tematu odpowiedź bo nie mogę znaleść?
P-146212
Matei
» 2016-03-19 17:09:02
Powiem szczerze że nie znam się zbytnio na bibliotekach windowsowych, ale czy nie wystarczy ustawić Visible na false?
P-146213
Matei
» 2016-03-19 17:35:08
Na dole po lewej masz "Napisz nową wiadomość" :)

Chodzi mi o coś w stylu:
-Losuje liczby
-Zmienia Visible obrazków na true
-Po wszystkim zmienia Visible obrazków na false (nijako resetuje obrazki)

Jak już mówiłem nie za bardzo się znam i mogę się mylić :)
P-146215
qscefb
Temat założony przez niniejszego użytkownika
» 2016-03-19 17:40:00
No właśnie i jak zrobić ten punkt 3 "Po wszystkim zmienia Visible obrazków na false (nijako resetuje obrazki)"?
P-146216
Matei
» 2016-03-19 17:47:04
C/C++
picture11->Visible = false;
picture12->Visible = false;
...
picture24->Visible = false;
picture25->Visible = false;

Nie wiem jak wygląda twój program, ale myślę że możesz to wpisać np. Na początku pętli wykonującej cały zabieg pokazywania obrazków.
P-146218
qscefb
Temat założony przez niniejszego użytkownika
» 2016-03-19 17:54:50
ale ja nie mam zadnej pętli, jeszcze nie doszłem do tego poziomu a cała operacaj na obrazkach zaczyna się po kliknieciu w przycisk button2 czyli to co dałem. Mam jeszcz przycisk start który losuje liczby:
private: System::Void Start_Click(System::Object^  sender, System::EventArgs^  e) {

          srand(time(NULL));
          liczba1 = rand() % 5;
          liczba2 = rand() % 5;
          label1->Text = Convert::ToString(liczba1);
          label3->Text = Convert::ToString(liczba2);

}

oraz przycisk next który losuje kolejne liczby i sprawdza wynik:
private: System::Void next_Click(System::Object^  sender, System::EventArgs^  e) {

                razem++;
                wynik = Convert::ToInt32(textBox1->Text);
                poprawne = liczba1 + liczba2;
                if (wynik == poprawne)
                {
                   ile_dobre++;
                   info->Text = "Dobrze";
                }
                else
                {
                   ile_zle++;
                   info->Text = "Źle, poprawny wynik wynosi: " + poprawne;
                }
            
            
   }
tylko za bardzo nie wiem jak dodac pętle np. while poniewaz jak pisze while(razem <5) to wyskakuje mi błąd, próbowałem tez wpisywac inne słowa zamiast razem i nawet dodałem losowanie liczb do przyciku next ale cały czas jest problem z pętlą.
P-146221
Matei
» 2016-03-19 18:06:21
Mógłbyś wstawić cały kod programu w znacznikach cpp? Ponieważ aktualnie trochę ciężko mi się zorientować jak program działa lub miałby działać. Ewentualnie mogę Ci podać mój nr. gg jeśli nie chcesz pokazywać kodu :)
P-146222
qscefb
Temat założony przez niniejszego użytkownika
» 2016-03-19 18:40:49
Ja to robie w visual studio, mam 3 formy i 4 kody cpp więc może podaj gg to podeśle bo tego troche jest.
P-146224
« 1 » 2
  Strona 1 z 2 Następna strona