WeNoN Temat założony przez niniejszego użytkownika |
While nie chce działać. » 2011-04-27 23:42:05 Witam wszystkich, jestem początkującym w dziedzinie programowania ale uważnie czytam każdą lekcję dla początkujących. Kiedy spróbowałem napisać własna gierkę to pojawił się problem z while. Po skomplikowaniu to tak jak by tej komendy nie było. Gra polega na tym by odgadnąć liczbę którą komp wylosuje. Niestety po wpisaniu jakiej kolwiek liczby to poinformuje mnie, że jest za duża bądź za mała ale na tym koniec i zamyka aplikacje. A według mnie, while powinno wrócić do ponownej możliwości odgadnięcia liczby dopóki nie zostanie odgadnięta. Kod który podaje nie jest całym kodem gry, resztę dopiszę gdy rozwiążę problem z while w pierwszej opcji (łatwy). Co ja robie nie tak?
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { int a; int x; int b; int y; int c; int z; cout << "Witaj w mojej pierwszej grze komputerowej autorstwa nie twojego XDD" << endl; cout << "Gra polega na odgadnieciu liczby ktora komputer wylosowal." << endl; cout << "\n Poziom trudnosci:" << endl; cout << "1-Latwy\n2-sredni\n3-trudny\n\nWpisz odpowiednia liczbe a nastepnie kliknij enter." << endl; int menu;
do{
cin >> menu;
switch (menu) case 1: { srand( time( NULL ) ); x = ( rand () % 10 ) + 1; cout << "Wylosowano liczby od 1 do 10, odgadnij jaka to liczba." << endl; do{ cin >> a; if (a > x) {
cout << "Wpisales za duza liczbe, sporbuj odgadnac jeszcze raz." << endl;
if (a < x) { cout << "Wpisales za mala liczbe, sprobuj odgadnac jeszcze raz." << endl; if ( a = x ) cout << "gratulacje, odgadles liczbe :) wybierz ponownie poziom trudnosci." << endl; } } }while (a > x && a < x ); } break; }while (a == x);
return 0; }
|
|
ison |
» 2011-04-27 23:48:10 jaki sens ma ta linijka? jak liczba może być jednocześnie większa i mniejsza od drugiej? :p |
|
malan |
» 2011-04-27 23:48:51 a nie może być jednocześnie większe i mniejsze od x . |
|
WeNoN Temat założony przez niniejszego użytkownika |
» 2011-04-27 23:53:19 No racja XD Już to poprawiłem, lecz pojawił się kolejny problem bo if-y mi przestały działać. Działa tylko ten informujący o tym, że liczba jest za duża. |
|
dmx81 |
» 2011-04-28 00:00:56 czesty blad poczatkujacych (i nie tylko) :) sam kiedys dluuuugo szukalem, co nie tak mialem... do tego cos z nawiasami klamrowymi w switch nie ten tego switchno i dodaj default ( co zrobic, w razie, jesli ktos wybierze inna liczbe - np informacje, zeby wybral 1 ;) pozostale zmienne bedziesz uzywal pozniej? czasem warto nadac im jakas wartosc, zeby nie trzymaly "smieci"; |
|
WeNoN Temat założony przez niniejszego użytkownika |
» 2011-04-28 00:06:10 Faktycznie, już to zmieniłem, dzieki ale dalej 2 ostatnie ify nie pokazuja komunikatu, czy odgadlem liczbe czy nie :( Jak dam za mala to nic nie pisze tylko dalej moge wpisywac kolejne liczby, a powinno pisac ze za mala, albo jak odgadne to nie pisze, "gratulacje..." tylko wychodzi z aplikacji, a powwino wlasnie zakomunikowac te gratulacje oraz wrocic do wyboru poziomu trudnosci wedlug tego ostatniego }while (a == x); Wybaczcie ze tam magluje ale jestem poczatkujacy a nie usne puki nie dowiem sie dlaczego zle wychodzi XD
Tak, pozostale beda uzywane w case 2 i case 3 czyli w poziomie trudnosci sredni i trudny. |
|
dmx81 |
» 2011-04-28 00:10:52 mam :) pierwszy if ci wszystko blokuje, tzn po if nie otwieraj nawiasow klamrowych, poniewaz w ten sposob mowisz:
jesli warunek w if spelniony, wykonaj wszystko, co znajduje sie od momentu otwrcia klamry { do momentu zamkniecia klamry } |
|
WeNoN Temat założony przez niniejszego użytkownika |
» 2011-04-28 00:17:03 YEAH! Wszystko dziala!! Dzieki wam wielkie! Teraz mogę robić spokojnie nastepne poziomy trudnosci :) Jeszcze raz dziekuje. |
|
« 1 » 2 |