• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kółko i Krzyżyk c++, proste wywołanie funkcji-brak dostępów do zmiennych

Cloud VPS
0 głosów
817 wizyt
pytanie zadane 24 października 2017 w C i C++ przez garris Użytkownik (660 p.)

Witam. Od razu po skończeniu odcinku Pana Mirosława nt. kółka i krzyżyk w podejściu obiektowym wpadłem na pomysł, żeby dla złapania wprawy zrobić możliwość gry z komputerem(najprostsza możliwość, funkcja rand() )

Kod Pana Mirosława: (jest dosyć długi) https://pastebin.com/rnQxuHz1

I jeżeli chciałbym wpleść funkcję, która będzie wywoływana po każdym ruchu gracza, aby wykonać ruch komputera to dostaję błąd.

Przykład funkcji:

void komp()
{
srand( time( NULL ) );
int los = rand()%9+1;
        switch(los)
        {
        case 1:
        if (p1=='n')
        {
        pole1->Picture->LoadFromFile("img/x.bmp");
        p1='x';
        kto='o';
        pole1->Enabled=false;
        break;
        }
        case 2:
        if (p2=='n'){
          pole2->Picture->LoadFromFile("img/x.bmp");
        p2='x';
        kto='o';
        pole2->Enabled=false;
        break;
        }
        case 3:
        if (p3=='n'){
          pole3->Picture->LoadFromFile("img/x.bmp");
        p3='x';
        kto='o';
        pole2->Enabled=false;
        break;
        }
        case 4:
        if (p4=='n'){
          pole4->Picture->LoadFromFile("img/x.bmp");
        p4='x';
        kto='o';
        pole4->Enabled=false;
        break;
        }
        case 5:
        if (p5=='n'){
          pole5->Picture->LoadFromFile("img/x.bmp");
        p5='x';
        kto='o';
        pole2->Enabled=false;
        break;
        }
        case 6:
        if (p6=='n'){
          pole6->Picture->LoadFromFile("img/x.bmp");
        p6='x';
        kto='o';
        pole6->Enabled=false;
        break;
        }
        case 7:
        if (p7=='n'){
          pole7->Picture->LoadFromFile("img/x.bmp");
        p7='x';
        kto='o';
        pole7->Enabled=false;
        break;
        }
        case 8:
        if (p8=='n'){
          pole8->Picture->LoadFromFile("img/x.bmp");
        p8='x';
        kto='o';
        pole8->Enabled=false;
        break;
        }
        case 9:
        if (p9=='n'){
          pole9->Picture->LoadFromFile("img/x.bmp");
        p9='x';
        kto='o';
        pole9->Enabled=false;
        break;
        }
        }
}

 

Funkcja nie jest dokończona(w else chciałbym wywołać ją drugi raz, żeby jeszcze raz zalosowało zmienną). No ale funkcja jest nieważna, ważny jest błąd, o którym wspominałem:

[C++ Error] Unit1.cpp(87): E2451 Undefined symbol 'pole2'

Domyślam się, a nawet wiem o co chodzi, ale nie mam pojęcia jak to ominąć. W sensie, że chodzi pewnie o to, że funkcja nie ma dostępu do tych zmiennych. Możliwe, że całkowicie źle się za to zabieram, ale proszę o wskazówki i z góry dziękuję.

Pozdrawiam!

komentarz 25 października 2017 przez criss Mędrzec (172,570 p.)

W sensie, że chodzi pewnie o to, że funkcja nie ma dostępu do tych zmiennych.

Dokładnie.

PS:

  1. w niektórych case-ach masz odwołanie do złego pola
  2. Na pewno musisz ładować ten sam obrazek 9 razy?
  3. srand powinieneś wołać tylko raz w całej apce
komentarz 25 października 2017 przez niezalogowany
Btw kod wygląda strasznie, polecam poprawić wcięcia
komentarz 25 października 2017 przez garris Użytkownik (660 p.)
przeniesione 25 października 2017 przez criss
Poprawie, dzięki!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,109 wizyt
0 głosów
0 odpowiedzi 356 wizyt
pytanie zadane 26 stycznia 2022 w C i C++ przez kwkstein Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 941 wizyt
pytanie zadane 30 listopada 2021 w C i C++ przez niezalogowany

93,486 zapytań

142,419 odpowiedzi

322,771 komentarzy

62,900 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...