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

Tracenie żyć w zgaduj zgaduli .

Object Storage Arubacloud
0 głosów
266 wizyt
pytanie zadane 26 kwietnia 2016 w C i C++ przez Nast Początkujący (270 p.)
edycja 26 kwietnia 2016 przez Nast
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int liczba , strzal , zycia=11;
int wybor;
int main()
{
    cout << "Menu Glowne" << endl;
    cout << "------------" << endl;
    cout << "Zagraj w zgaduj zgadule!" << endl;
    cout << "1. Liczby od 1 - 100 (EASY) " << endl;
    cout << "2. Liczby od 100 - 1000 (MEDIUM) " << endl;
    cout << "3. Liczby od 10000 - 100000 (HARD) " << endl;
    cout << "4. Wyjdz z gry. " << endl;
    cout << endl;
    cout << "Co wybierasz? : ";
    cin >> wybor;


switch (wybor)
{
    case 1 :
    {
        {
            system ("cls");
        }
    cout << "Pomyslalem sobie liczbe od 1...100" << endl;
    cout << "Masz 10 zyc na odgadniecie " << endl;

    srand(time(NULL));
     liczba = rand()%100+1;
     while(strzal!=liczba)
     {
         zycia--;
         cout << "Zgadnij jaka to liczba: (Jest to twoje "  << zycia << " zycie)" << endl;
         cin >> strzal;

     if (strzal==liczba)
         cout << "Trafiles!" << endl;
     else if (strzal>liczba)
        cout << "To za duzo!" << endl;
     else if (strzal<liczba)
        cout << "To za malo!" << endl;
        else if (zycia==0)
            cout << "Przegrales ! " << endl;

     }
    }
  break;

Witam !!
Jestem początkującym programistą i mam pewien problem.
Chcę aby gracz grający w moją grę miał 10 szans na odgadnięcie prawidłowej liczby.(Zastosowałem if'y)
 Komputer po straceniu 10 żyć nie pokazuje mi że przegrałem i dalsze próby naliczają życia na  minus.
W tym momencie kieruje pytanie do was czy istnieje inny sposób lub inne zastosowanie "if'ów" aby komputer normalnie kończył grę po straceniu 10 żyć?
Poniżej wklejam kod.

Pozdrawiam i z góry dziękuję za odpowiedź!

1
komentarz 26 kwietnia 2016 przez TheFeniks Gaduła (4,690 p.)
Jezu czy tak ciężko wstawić kod w przeznaczoną do tego ramkę ?

Jak to zrobić: http://forum.pasja-informatyki.pl/faq#faq1
komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)
Już to zrobiłem. Jest to mój pierwszy post na forum następnym razem już wkleję od razu przepraszam za utrudnienia.
komentarz 27 kwietnia 2016 przez criss Mędrzec (172,590 p.)
Nie wjeżdżaj tak na ludzi, jak widać 150pkt - tzn. na forum od chwili.
komentarz 27 kwietnia 2016 przez TheFeniks Gaduła (4,690 p.)
No dobra ale regulamin i FAQ jak wstawiać pytania się powinno przeczytać lub chociaż obejrzeć. :)

5 odpowiedzi

0 głosów
odpowiedź 26 kwietnia 2016 przez LislaV Bywalec (2,400 p.)
wybrane 26 kwietnia 2016 przez Nast
 
Najlepsza

Przyjrzyj się temu fragmentowi kodu:

if (strzal==liczba)
         cout << "Trafiles!" << endl;
     else if (strzal>liczba)
        cout << "To za duzo!" << endl;
     else if (strzal<liczba)
        cout << "To za malo!" << endl;
        else if (zycia==0)
            cout << "Przegrales ! " << endl;

Ostatnia instrukcja if nigdy się nie wykona, bo któraś ze wcześniejszych instrukcji zawsze musi się wykonać (bo sprawdzasz w nich wszystkie trzy opcje: strzał jest mniejszy, większy lub równy od zgadywanej liczby - któraś z tych opcji zawsze jest prawdziwa). Pomyśl w jaki sposób wstawić odpowiednio ifa ze sprawdzaniem życia, żeby miał on szansę się wykonać. I przydałoby się wyjść z pętli, jeżeli ten if zostanie spełniony - zastosuj instrukcję break.

komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)
Dziękuję za pomoc ! Pogłówkuje trochę i dam znać czy udało mi się uzyskać zamierzany efekt!
+2 głosów
odpowiedź 26 kwietnia 2016 przez AV'ger Użytkownik (790 p.)
Wstaw kod w znacznikach. :P
komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)
Chodzi o to co zrobiłem?
+1 głos
odpowiedź 26 kwietnia 2016 przez adas94 Nałogowiec (29,200 p.)
Zamiast robić ten ostatni else if daj tam po prostu

if (zycia==0) {

cout << "przegrałeś";

strzal = liczba ;  // dzięki temu wyjdzie Ci z while

}
0 głosów
odpowiedź 26 kwietnia 2016 przez Kapersky Obywatel (1,060 p.)
A nigdzie nie odejmujesz od liczby żyć, jeśli użytkownik nie zgadnie liczby.
komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)
Odejmuje. Jest zapis zycia-- i od podanej liczby 11 zmniejsza liczbę o 1 za każdym razem gdy gracz poda swój strzał.
komentarz 26 kwietnia 2016 przez Kapersky Obywatel (1,060 p.)
A faktycznie, to przerwij pętle jak warunek zostanie spełniony, tzn będzie 0 żyć.
komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)

Hmm napisałem

else if (zycia==0)
            cout << "Przegrales ! " << endl;

lecz przy życiach wynoszących 0 on zaczyna liczyć  dalej na - i nie wykonuje mojego warunku. Właśnie tutaj mam problem bo on go ignoruje i nie może zerwać pętli.

komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Haha, nigdzie nie napisałeś żadnego warunku końca pętli w przypadku zerowej ilości żyć. Napisałeś tylko że przegrałeś, a program kontynuuje pracę :)

W osobnym komentarzu napisałem rozwiązanie twojego problemu.
0 głosów
odpowiedź 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
edycja 26 kwietnia 2016 przez Konrad Nabożny

Nic dziwnego że tak się dzieje. Twoja pętla działa do momentu aż ktoś nie trafi. W else if na temat końca gry dopisz funkcję zrywającą pętlę break; 

 

PS. Nie zapomnij tez oddzielić tego else if'a od tamtych sprawdzających strzał, bo w innym wypadku nigdy nie dojdzie do sprawdzenia żyć :) 

smiley

komentarz 26 kwietnia 2016 przez Nast Początkujący (270 p.)
Dzięki za pomoc ! Już rozwiązałem ten problem.

Podobne pytania

0 głosów
2 odpowiedzi 351 wizyt
pytanie zadane 8 lutego 2019 w C# przez Oli_weirdo_ Nowicjusz (210 p.)
+1 głos
2 odpowiedzi 4,092 wizyt
pytanie zadane 11 kwietnia 2017 w C i C++ przez programistalvl0hehe Nowicjusz (240 p.)
+2 głosów
4 odpowiedzi 413 wizyt
pytanie zadane 25 listopada 2016 w Rozwój zawodowy, nauka, praca przez UNM4SKED Nowicjusz (180 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...