siemieniaka Temat założony przez niniejszego użytkownika |
Adventure Text-based game - parę problemów w kodowaniu » 2016-11-28 13:50:17 Witam. Jestem tutaj pierwszy raz, a także dopiero zaczynam uczyć się C++ (kończę pierwszy poziom kursu na tej stronie), ale zawsze byłem osobą, która teorie lubi przekuwać w praktykę już na samym początku nauki, więc zabrałem się za coś prostego z wykorzystaniem komend z pierwszego etapu, czyli biblioteki <iostream> oraz if...else. Napotkałem jednak parę problemów i błędów, które udało mi się przezwyciężyć googlowaniem i innymi takimi (szperanie na forach itd), aczkolwiek doszedłem do momentu kiedy po prostu nie wiem co zrobić, aby "wygładzić" swój projekt i nadać mu takiej "otoczki profesjonalizmu".
#include<iostream> #include <string>
int main () { using namespace std; string zapalka; cout << "Stoisz w wielkim ciemny pokoju. W reku trzymasz kawalek PAPIERU, \n a w kieszeni spoczywa pudelko ZAPALEK. Co robisz?" << endl; getline(cin, zapalka); if ( zapalka == "podpalam papier") cout << "Pokoj rozswietla sie od plomieni palacej sie kartki."; else cout << "Pomysl przez chwile. To niekoniecznie prawidlowe wyjscie." << endl; cout << " \nKoniec" << endl; return 0; }
Kod jak widać wcale nie jest długi, ponieważ staram się pisać na spokojnie i eliminować błędy na bieżąco przez co uczę się jak radzić sobie z pewnymi sytuacjami, które mam nadzieje będę mógł w przyszłości naprawić. Jakie są moje problemy z tym kodem? Wszystko działa poprawnie. Jeżeli użytkownik napisze "podpalam papier" gra idzie dalej, jeżeli nie wpisze tego czego wymagam, program wypisze linijkę alternatywną, aczkolwiek, jeżeli nacisnę Enter to program wypisze właśnie tę drugą linijkę i go zakończy (oczywiste, że zakończy), a tego nie chcę. Kiedyś pisałem to samo na drugim PC i w jakiś sposób ciągle kombinując udało mi się wyeliminować ten błąd, ale już nie pamiętam jakim cudem. Próbowałem też cin.clear i cin.sync, ale nic to nie daje. Chciałbym też poradzić się o to jak takowy program/gre po wpisaniu złej komendy i wyświetleniu alternatywnej linijki po prostu zrestartować do początku zamiast go zamykać. Ułatwi to granie, ale też testowanie błędów, które mogą się pojawić przy wpisywaniu kolejnych linijek kodu i dodawaniu nowych sytuacji w grze.
Dziękuję za otrzymaną pomoc :) I jeszcze raz witam się z wami :) |
|
DejaVu |
» 2016-11-28 14:01:55 Napotkałem jednak parę problemów i błędów, które udało mi się przezwyciężyć googlowaniem i innymi takimi (szperanie na forach itd), aczkolwiek doszedłem do momentu kiedy po prostu nie wiem co zrobić, aby "wygładzić" swój projekt i nadać mu takiej "otoczki profesjonalizmu".
|
Profesjonalizm przy 10 liniach kodu...? :) Gdzie praktycznie nie ma kodu? |
|
michal11 |
» 2016-11-28 14:05:32 |
|
siemieniaka Temat założony przez niniejszego użytkownika |
» 2016-11-28 14:40:03 #include<iostream> #include <string> using namespace std;
int main () { string podpalam = "podpalam"; string papier = "papier"; cout << "Stoisz w wielkim ciemny pokoju. W reku trzymasz kawalek PAPIERU, \n a w kieszeni spoczywa pudelko ZAPALEK. Co robisz?" << endl; cin >> podpalam >> papier; if ( podpalam == "podpalam") cout << "Pokoj rozswietla sie od plomieni palacej sie kartki."; else cout << "Pomysl przez chwile. To niekoniecznie prawidlowe wyjscie." << endl; cout << " \nKoniec" << endl; return 0; }
Zrobiłem to w taki sposób, ominąłem problem Entera oraz wymusiłem wpisanie dwóch stringów, aby poszło dalej, aczkolwiek tego drugiego nie potrafię umieścić w if. Próbowałem już różnych opcji typu
if (podpalam + papier = true) czy if (podpalam = "podpalam" + papier = "papier"), ale żadne z nich nie jest w stanie sprawdzić mi dwóch wyrazów i wykazuje błąd. |
|
Saran |
» 2016-11-28 18:52:07 |
|
siemieniaka Temat założony przez niniejszego użytkownika |
» 2016-11-28 19:58:04 Już wszystko zrobiłem także dziękuję za pomoc. |
|
michal11 |
» 2016-11-28 20:20:22 @Saran Odsyłacze wewnętrzne i z paska adresu biorę numer tutoriala/artykułu/kursu, ale widzę, że już sam ogarnąłeś ;) |
|
« 1 » |