Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pierwsza gra w c++ problem


Rekomendowane odpowiedzi

Opublikowano

Od 3 dni uczę się programować i udało mi sie stworzyć pierwsza prosta gre: kamien papier i nożyce

 

 

 



#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdio.h>
 
using namespace std;
 
int wybor;
 
int pc;
 
int main()
 
 
{
        srand(time(NULL));
    pc = rand()%3+1;
    cout << "Kamien Papier I Nozyce By Blufine"<<endl;
    cout << "Witaj w grze kamien papier i nozyce" << endl;
    cout << "1-Kamien"<<endl;
    cout << "2-Nozyce"<<endl;
    cout << "3-Papier"<<endl;
    cin >> wybor;
    switch(wybor)
    {
 
case 1:
    {
        if (1==pc)
            cout << "Remis Komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
    }
break;
 
case 2:
    {
        if (1==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Wygrana komputer wybral"<<endl<< pc<<endl;
    }
break;
 
case 3:
    {
        if (1==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
    }
break;
default:
{
    cout <<"Podaj poprawna liczbe"<<endl;
}
 
    }
    getchar();getchar();
    return 0;
}


 

 

 

 

I teraz pytanie jak moge zmienic wybor komputera zamiast pisania 1 zeby bylo np kamien

Opublikowano

1. zacznij formatować kod

2. mozesz zrobic funkcje która sprawdza czy pc == 1 itd. i jezeli wybral jeden to wypisuje że wybrał kamień, albo

 zamiast wypisywać zmienną wypisz kamień/papier/nożyce

 

3. nie używaj zmiennych globalnych

4. zmień IDE na coś innego niż dev c++

5. nie używaj NULL tylko 0 (najlepiej nie używać rand, ale póki co nie musisz się tym martwić)

6. jak wybiore cos innego niż 1-3 to tylko wypisuje ale nie daje możliwości wypisania

 

sformatowany kod i lekko poprawiony (ale nie zrobiony jak chcesz)

 

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdio.h>

using namespace std;


int main()


{
    int wybor, pc;
    srand(time(NULL));
    pc = rand()%3+1;
    cout << "Kamien Papier I Nozyce By Blufine"<<endl;
    cout << "Witaj w grze kamien papier i nozyce" << endl;
    cout << "1-Kamien"<<endl;
    cout << "2-Nozyce"<<endl;
    cout << "3-Papier"<<endl;
    cin >> wybor;
    switch(wybor)
    {

    case 1:
    {
        if (1==pc)
            cout << "Remis Komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
    }
    break;

    case 2:
    {
        if (1==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Wygrana komputer wybral"<<endl<< pc<<endl;
    }
    break;

    case 3:
    {
        if (1==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
    }
    break;
    default:
    {
        cout <<"Podaj poprawna liczbe"<<endl;
    }

    }
    getchar();
    getchar();
    return 0;
}
Opublikowano

 

1. zacznij formatować kod

2. mozesz zrobic funkcje która sprawdza czy pc == 1 itd. i jezeli wybral jeden to wypisuje że wybrał kamień, albo

 zamiast wypisywać zmienną wypisz kamień/papier/nożyce

 

3. nie używaj zmiennych globalnych

4. zmień IDE na coś innego niż dev c++

5. nie używaj NULL tylko 0 (najlepiej nie używać rand, ale póki co nie musisz się tym martwić)

6. jak wybiore cos innego niż 1-3 to tylko wypisuje ale nie daje możliwości wypisania

 

sformatowany kod i lekko poprawiony (ale nie zrobiony jak chcesz)

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdio.h>

using namespace std;


int main()


{
    int wybor, pc;
    srand(time(NULL));
    pc = rand()%3+1;
    cout << "Kamien Papier I Nozyce By Blufine"<<endl;
    cout << "Witaj w grze kamien papier i nozyce" << endl;
    cout << "1-Kamien"<<endl;
    cout << "2-Nozyce"<<endl;
    cout << "3-Papier"<<endl;
    cin >> wybor;
    switch(wybor)
    {

    case 1:
    {
        if (1==pc)
            cout << "Remis Komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
    }
    break;

    case 2:
    {
        if (1==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Wygrana komputer wybral"<<endl<< pc<<endl;
    }
    break;

    case 3:
    {
        if (1==pc)
            cout << "Wygrales komputer wybral"<<endl<< pc<<endl;
        else if (2==pc)
            cout << "Przegrales komputer wybral"<<endl<< pc<<endl;
        else if (3==pc)
            cout << "Remis komputer wybral"<<endl<< pc<<endl;
    }
    break;
    default:
    {
        cout <<"Podaj poprawna liczbe"<<endl;
    }

    }
    getchar();
    getchar();
    return 0;
}

Po co mówisz by zrobił if'a, skoro switch jest wydajniejszy?

8LTfBGw.jpg

Opublikowano

Stwórz sobie tablicę

std::string nazwy[] = {"papier", "kamien", "nozyce"};

i potem tam gdzie wypisujesz pc daj nazwy[pc];

 

Po co mówisz by zrobił if'a, skoro switch jest wydajniejszy?

 

Chodziło mu to, że to co ja podałem można zrobić ifami.

 

 

Najlepiej całą tą grę oprzyj na tablicy dwuwymiarowej w której trzymasz co bije co.

Czyli

z twojego punktu widzenia

w = wygrana

p = przegrana

r = remis

gracz/komputer  kamien        papier      nozyce 

kamien                   r                 p               w

papier                    w                r                 p

nozyce                   p                w                r

wtedy zamiast twojego switcha po prostu sprawdzasz jaki jest stan dla danego ustawienia i odpowiednio dobierasz wiadomosc dla gracza

Myślę, że można to zrobić prościej na zasadzie wag (wtedy wystarczą 3 wartości, nie 9), ale nie chce mi się teraz myśleć nad tym.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...