sobol3k Temat założony przez niniejszego użytkownika |
Tablice string » 2016-11-12 11:54:35 Tworze własną gre, i zauważyłem że bawiąc sie tylko w zmienne za duży śmietnik sobie zrobie. Wszystko niby się kompiluje ale program i tak się wysypuje wiem że to przez tablice ale nie wiem w czym siedzi problem.. #include <iostream> #include <windows.h> #include <conio.h> #include <fstream> #include <string>
using namespace std;
char wybierz; int wojownik_hp = 75, olbrzym_hp = 120; string wybierz_klase, nick_gracza, spacja = " ";
string pobierz_zapisz_nick( string nick_gracza ) { fstream plik; plik.open( "gracze.txt", ios::out | ios::app ); if( plik.good() == true ) { plik << nick_gracza; plik << spacja; plik << wybierz_klase << endl; } else { cout << "Error, Blad pliku!"; exit( 0 ); } plik.close(); return nick_gracza; }
void pokaz_menu() { cout << "1. Nowa gra \n"; cout << "2. Lista graczy \n"; cout << "3. Wyjdz \n\n"; cout << "Wybierz co chcesz zrobic: "; wybierz = getch(); cout << endl; while( wybierz != '1' && wybierz != '2' && wybierz != '3' ) { cout << "Nie ma takiego wyboru! Spruboj ponownie: "; cin >> wybierz; } }
void wybor_klasy() { cout << "Wojownik - "; cout << "Posiada mala ilosc HP, ale za to jest szybki i zadaje duzo obrazen" << endl; cout << "Olbrzym - "; cout << "Bardzo wytrzymaly, duza ilosc HP oraz moze atakowac beltem" << endl << endl; cout << "Wpisz nazwe klasy: "; cin >> wybierz_klase; }
int main() { string odpowiedz[ 1 ]; odpowiedz[ 0 ] = "TAK"; odpowiedz[ 1 ] = "NIE"; HANDLE hOut; hOut = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( hOut, 3 ); cout << "Mieczem i Ogniem version 1.0" << endl << endl; SetConsoleTextAttribute( hOut, 8 ); pokaz_menu(); if( wybierz == '1' ) { system( "cls" ); cout << "Do wyboru masz dwie klasy wraz z opisem podane nizej."; cout << endl; cout << endl; wybor_klasy(); while( wybierz_klase != "Wojownik" && wybierz_klase != "wojownik" && wybierz_klase != "Olbrzym" && wybierz_klase != "olbrzym" ) { cout << "Podales niepoprawna nazwe klasy! Spruboj ponownie: "; cin >> wybierz_klase; } cout << "Dobrze, teraz wypadalo by podac swoje nick: "; cin >> nick_gracza; pobierz_zapisz_nick( nick_gracza ); system( "cls" ); cout << "Znalazles sie w lesie jest ciemno i zimno, slyszysz tylko odglos zwierzat i polujacych swirow na ciebie." << endl; cout << "Jestes zdany calkowicie na siebie i tylko na siebie nie mozesz liczyc na zadna pomoc z niczyjej strony, " << endl; cout << "podczas drogi napotkasz sie na wiele niebezpieczenstw wszelakiego zagrozenia, " << endl; cout << "Twoim zadaniem jest dotrzec do celu jako zywy." << endl << endl; cout << "Czy jestes gotowy na to sie porwac?" << endl; cout << "Twoja opdowiedz (TAK/NIE): "; cin >> odpowiedz[ 1 ]; } return 0; getch(); }
|
|
mateczek |
» 2016-11-12 12:05:35 gdy się zaczyna robić bałagan w takim liniowym programowaniu trzeba przeskoczyć lewel wyżej czyli klasy !!! string odpowiedz[ 1 ]; odpowiedz[ 0 ] = "TAK"; odpowiedz[ 1 ] = "NIE";
|
|
sobol3k Temat założony przez niniejszego użytkownika |
» 2016-11-13 12:46:16 Przecież tablice sa numerowanie od zera więc rozumiałem to tak że jeśli utworze sobie załóżmy tablice int zycie[1] to moge do niej przypisać dwie wartości zycie[0] = 100 i zycie[1] = 150 ale jednak się myliłem. Dziękuje za wytłumaczenie :) Teraz mam wiekszy problem bo program wysypuje mi się kiedy pytam gracza o ruch, nwm czemu tak się dzieje pewnie w znowu coś z tablicamy.. #include <iostream> #include <windows.h> #include <conio.h> #include <fstream> #include <algorithm> #include <string>
using namespace std;
char wybierz; int level = 1; string wybierz_klase, nick_gracza, spacja = " ", atak_mieczem, atak_beltem;
string pobierz_zapisz_nick( string nick_gracza ) { fstream plik; plik.open( "gracze.txt", ios::out | ios::app ); if( plik.good() == true ) { transform( wybierz_klase.begin(), wybierz_klase.end(), wybierz_klase.begin(),::toupper ); plik << nick_gracza; plik << spacja; plik << wybierz_klase << endl; } else { cout << "Error, Blad pliku!"; exit( 0 ); } plik.close(); return nick_gracza; }
void pokaz_liste_graczy() { string gracze; fstream wczytaj_graczy; wczytaj_graczy.open( "gracze.txt", ios::in ); if( wczytaj_graczy.good() == false ) { cout << "Nie odnaleziono pliku lub jest uszkodzony!"; exit( 0 ); } else { while( !wczytaj_graczy.eof() ) { getline( wczytaj_graczy, gracze ); cout << gracze << endl; } } wczytaj_graczy.close(); }
void pokaz_menu() { cout << "1. Nowa gra \n"; cout << "2. Lista graczy \n"; cout << "3. Wyjdz \n\n"; cout << "Wybierz co chcesz zrobic: "; wybierz = getch(); cout << endl; while( wybierz != '1' && wybierz != '2' && wybierz != '3' ) { cout << "Nie ma takiego wyboru! Spruboj ponownie: "; cin >> wybierz; } }
void wybor_klasy() { cout << "Wojownik - "; cout << "Posiada mala ilosc HP, ale za to jest szybki i zadaje duzo obrazen" << endl; cout << "Olbrzym - "; cout << "Bardzo wytrzymaly, duza ilosc HP oraz moze atakowac beltem" << endl << endl; cout << "Wpisz nazwe klasy: "; cin >> wybierz_klase; }
int main() { string odpowiedz[ 2 ]; odpowiedz[ 0 ] = "TAK"; odpowiedz[ 1 ] = "NIE"; int zycie[ 2 ]; zycie[ 0 ] = 75; zycie[ 1 ] = 125; string ruch[ 3 ]; ruch[ 0 ] = "forward"; ruch[ 1 ] = "left"; ruch[ 2 ] = "right"; HANDLE hOut; hOut = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( hOut, 3 ); cout << "Mieczem i Ogniem version 1.0" << endl << endl; SetConsoleTextAttribute( hOut, 8 ); pokaz_menu(); if( wybierz == '1' ) { system( "cls" ); cout << "Do wyboru masz dwie klasy wraz z opisem podane nizej."; cout << endl; cout << endl; wybor_klasy(); while( wybierz_klase != "Wojownik" && wybierz_klase != "wojownik" && wybierz_klase != "Olbrzym" && wybierz_klase != "olbrzym" ) { cout << "Podales niepoprawna nazwe klasy! Spruboj ponownie: "; cin >> wybierz_klase; } cout << "Dobrze, teraz wypadalo by podac swoje nick: "; cin >> nick_gracza; pobierz_zapisz_nick( nick_gracza ); system( "cls" ); cout << "Znalazles sie w lesie jest ciemno i zimno, slyszysz tylko odglos zwierzat i polujacych swirow na ciebie." << endl; cout << "Jestes zdany calkowicie na siebie i tylko na siebie nie mozesz liczyc na zadna pomoc z niczyjej strony, " << endl; cout << "podczas drogi napotkasz sie na wiele niebezpieczenstw wszelakiego zagrozenia, " << endl; cout << "Twoim zadaniem jest dotrzec do celu jako zywy." << endl << endl; cout << "Czy jestes gotowy na to sie porwac?" << endl; cout << "Twoja opdowiedz (TAK/NIE): "; cin >> odpowiedz[ 2 ]; transform( odpowiedz[ 2 ].begin(), odpowiedz[ 2 ].end(), odpowiedz[ 2 ].begin(),::toupper ); if( odpowiedz[ 2 ] == "TAK" ) { cout << endl; cout << "Rozgrywka rozpocznie sie za: "; for( int i = 5; i > 0; i-- ) { cout << i; cout << spacja; Sleep( 1500 ); } } else { cout << "YYY"; } system( "cls" ); if( wybierz_klase == "Wojownik" && wybierz_klase == "wojownik" ) { cout << "Klasa: " << wybierz_klase << endl; cout << "Twoje zycie: " << zycie[ 0 ] << endl; cout << "Bron: Miecz, Szarza" << endl; cout << "Level: " << level; } else { cout << "Klasa: " << wybierz_klase << endl; cout << "Twoje zycie: " << zycie[ 1 ] << endl; cout << "Bron: Ciezkie tapniecie, atak rzygiem" << endl; cout << "Level: " << level << endl << endl; } cout << "Las, wokol wszedzie ciemno i zimno, w tle slyszysz niepokojaca cisze." << endl; cout << "We mgle widzisz wylaniajacy sie budynek, ktory ksztaltem przypomina jakies locha..." << endl; cout << "Musisz do niego dotrzec!" << endl << endl; cout << "Komendy ruchu (forward, left, right)"; cout << " Idz na przod: "; cin >> ruch[ 3 ]; if( ruch[ 3 ] == "forward" ) { cout << "Dobrze przeszedles kawalek i cel widzisz juz co raz blizej, lecz oprocz celu slyszysz straznikow budynku. Musisz ich zabic!"; } else { cout << endl; cout << "zly kierunek ruchu" << endl; while( ruch[ 3 ] != "forward" ) { cout << "Idz na przod: "; cin >> ruch[ 3 ]; } } } if( wybierz == '2' ) { system( "cls" ); pokaz_liste_graczy(); } return 0; getch(); }
Proszę o skompilowanie i zobaczenie co się dzieje. |
|
carlosmay |
» 2016-11-13 13:43:33 Teraz mam wiekszy problem bo program wysypuje mi się kiedy pytam gracza o ruch, nwm czemu tak się dzieje pewnie w znowu coś z tablicamy.. |
Błędy czasu wykonania wykrywaj debuggerem. |
|
sobol3k Temat założony przez niniejszego użytkownika |
» 2016-11-14 10:35:13 Niezbyt umiem używać debuggera, nawet nwm gdzie on jest w codeblocks. |
|
« 1 » |