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

C++ Switch/Case wybór


Rekomendowane odpowiedzi

Opublikowano

Hej, ostatnio stworzyłem taką prostą mini gierkę na ok. 150 linijek kodu, więc nie dużo, ale jednak satysfakcja jest. ;)

 

Gra polega na tym, że mamy 3 pragnienia, które musimy zaspokajać i mamy kilka opcji do wyboru

(case1/2/3/4). Po użyciu jednego z klawiszy 1-4 zaczyna się następna runda, pokazują nam się statystyki i znowu wybieramy opcję 1-4.

Wszystko jest spoko, dopóki ktoś nie kliknie czegoś innego, niż liczb z zakresu 1-4. Kliknie np. enter, 6, 7, 8 - cokolwiek innego.

Wtedy nie dzieje się nic i gra przechodzi do następnej rundy.

 

KOD - https://wklej.to/2KlXm

 

Chciałbym, żeby po kliknięciu 5,6,7, entera (czegokolwiek co nie jest 1, 2, 3, 4) wyskoczył komunikat, że gracz musi kliknąć 1/2/3/4, a program dalej czekał na naciśnięcie gracza!

O ile mogę dać "default:" i pojawić komunikat, to program nie czeka na naciśnięcie 1-4. W skrócie, chcę wymusić, żeby grać musiał nacisnąć 1-4.

 

Z góry dzięki za pomoc, bo dopiero zaczynam ;)

343731479829004887779.png

Opublikowano

@MPCTaylor

 

Dodajesz:

            default:
                system("cls");
                continue;

A to przenosisz na koniec while:

            runda++;
            jaranie = jaranie - 3;
            jedzenie = jedzenie - 2;
            zona = zona - 2;
            pieniadze = pieniadze - 2;

Tak to powinno wyglądać w całości (+ kilka ulepszeń moich): http://pastebin.com/sZXRGJkT

Opublikowano

Jasne, jeszcze jedna rzecz.

Jeśli gracz chce kupić jedzenie to potrzebuje  pieniądze >= 3

jeśli nie ma tyle pieniędzy to niech wyskoczy informacja, że nie ma tyle pieniędzy

i czeka dalej na 1-4. Próbowałem tu też dać continue; ale to nic nie daje.

 

Podaję kod:

 case '3':
            {
                if (pieniadze >= 5)
                {
                    jedzenie = jedzenie + 8;
                }
                else
                {
                    std::cout << "Nie masz tyle pieniedzy" << std::endl;
                    system("cls");
                    continue;
                }

Po prostu kończy rundę.

343731479829004887779.png

Opublikowano

http://pastebin.com/6kbiEHev - można to zrobić przykładowo tak.

 

Edit:

 

@MPCTaylor

 

Generalnie nie czepiam się tu wielu rzeczy, bo dopiero się uczysz, ale kilka uwag na start:

-Polecam omijać "using namespace std;" (już wyżej wyjaśnione czemu)

-Polecam korzystać z "cinttypes", czyli zamiast powiedzmy: int, unsigned int, short, to używać: int32_t, uint32_t, int16_t.

Istnieje ku temu wiele powodów, najlepiej trzymać się tego standardu i nie martwić się o "longi". :)

 

Cały projekt można podzielić na mniejsze funkcję, bo wiele rzeczy się powtarza i można tego uniknąć.

Jak dojdziesz do programowania objektowego to zobaczysz, że można by to zrobić jeszcze inaczej.

 

W razie pytań i problemów pisz śmiało.

Opublikowano

Tak, tylko wtedy jak gracz znowu naciśnie 3 do kupienia jedzenia jedzenia, a nie będzie miał pieniędzy to zacznie kolejną rundę.

 

#edit:

Testowałem Twój kod (zamiast int int32_t) ale to wyrzuca błąd

np. int32_t runda;

[Error] 'runda' was not declared in this scope

343731479829004887779.png

Opublikowano

Tak, tylko wtedy jak gracz znowu naciśnie 3 do kupienia jedzenia jedzenia, a nie będzie miał pieniędzy to zacznie kolejną rundę.

 

U mnie nie zaczyna to nowej rundy. :O

Wyświetla się powiadomienie o tym, że nie ma pieniędzy, wciskam dowolny przycisk i gra jest kontynuowana.

 

http://pastebin.com/3WvwNQJG

 

Edit:

 

@MPCTaylor Z jakiego kompilatora korzystasz? Korzystasz ze standardu C++11?

Upewnij się, że masz:

#include <cinttypes>

I że korzystasz ze standardu C++11.

Opublikowano

Ok, działa już z tymi pieniędzmi ;)

 

Z int32_t nie

 

Jeśli chodzi o kompilator to TDM-GCC 4.9.2 i korzystam z Dev C++, mam też codeblocks na komputerze, ale jako że zaczynam to używam Deva, w każdej chwili mogę się przestawić.

343731479829004887779.png

Opublikowano

Jeżeli korzystasz z Windows'a, to polecam Visual Studio: https://www.visualstudio.com/downloads/.

Tylko uważaj na C++/CLI, który gdzieś tam się pojawia i narzuca. Z niego nie chcesz raczej korzystać. :D

Po prostu tworzysz Empty Project C++owy, bez żadnego CLR i tak dalej i masz czystego C++ (z features ze standardu C++11).

 

Edit:

 

Ja korzystałem z MinGW (GNU GCC na Windowsie) i musiałem dodać manualnie -std=c++0x żeby mieć standard C++11 do "command line". :D

Opublikowano

Ok, poradziłem sobie w Devie z C++11 i int32_t śmiga jak należy i nie potrzebuje #include <cinttypes>.

Visual Studio mam i zaraz pobiorę sobie wszystko co potrzebne do C++ i popatrzę co i jak. Tam jeśli się orientuję mogę również stworzyć środowisko graficzne do C++?

343731479829004887779.png

Opublikowano

Jest form designer i tak dalej, ale odradzam korzystanie z tego jeżeli chodzi o C++. Do tego lepiej już użyć C#.

Opublikowano

Dlaczego odradzasz?

I swoją drogą warto brnąć na początku w C++, czy lepiej C#? Wiem, że takie laikowe pytania, ale sam wiesz z kim masz do czynenia, heh.

Dzięki za wszystkie odpowiedzi, fajnie że ktoś szybko się znalazł do pomocy. ;)

343731479829004887779.png

Opublikowano

C# to głównie aplikacje pod Windowsa (ale jest też Mono, więc nie tylko).

Dosyć przyjemny, prostszy od C++, .NET i tak dalej.

Java jest jeszcze ciekawa, sięgam po nią częściej niż po C#, a składnią do C# jest bardzo podobna, bardzo!

 

C++ to wieloplatformość, "moc", jest dosyć skomplikowany czasem.

 

Tworzenie gier, aplikacji graficznych (renderuje sam) i ogólnie - sięgam zazwyczaj po C++.

Jakieś proste aplikacje pod Windowsa okienkowe - sięgam po C#.

I generalnie jeżeli chodzi o Jave to sięgam do niej prawie do wszystkiego.

Lecz nie zawsze..

 

Jak chcesz się pobawić okienkami, to polecam C#.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...