wilkoo13 |
» 2014-11-12 21:18:48 Ponieważ pętla while(wyprawa) nigdy nie przestanie się wykonywać. Tak sądzę |
|
oen432 Temat założony przez niniejszego użytkownika |
» 2014-11-12 21:30:40 Przestanie, są momenty gdy się zatrzymuje. |
|
Monika90 |
» 2014-11-12 22:08:35 Jak już napisałes te wszystkie funkcje, to teraz musissz je wywołać z main, przekazując odpowiednie argumenty. postac_tab( player, 3 ); potwor_tab( enemy, 2 ); postac_info( player[ 0 ] ); walka( player[ 0 ], enemy[ 0 ], enemy[ 1 ] );
|
|
oen432 Temat założony przez niniejszego użytkownika |
» 2014-11-13 09:00:48 Po kompilacji program przestaje działać. #include <iostream> #include <windows.h>
bool wyprawa = true;
int NT_SetConsoleDisplayMode( HANDLE hOutputHandle, DWORD dwNewMode ) { typedef BOOL( WINAPI * SCDMProc_t )( HANDLE, DWORD, LPDWORD ); SCDMProc_t SetConsoleDisplayMode; HMODULE hKernel32; BOOL bFreeLib = FALSE, ret; const char KERNEL32_NAME[] = "kernel32.dll"; hKernel32 = GetModuleHandleA( KERNEL32_NAME ); if( hKernel32 == NULL ) { hKernel32 = LoadLibraryA( KERNEL32_NAME ); if( hKernel32 == NULL ) return FALSE; bFreeLib = true; } SetConsoleDisplayMode = ( SCDMProc_t ) GetProcAddress( hKernel32, "SetConsoleDisplayMode" ); if( SetConsoleDisplayMode == NULL ) { SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); ret = FALSE; } else { DWORD dummy; ret = SetConsoleDisplayMode( hOutputHandle, dwNewMode, & dummy ); } if( bFreeLib ) FreeLibrary( hKernel32 ); return ret; }
struct postac { std::string nazwa; std::string klasa; int poziom; int exp_min; int exp_max; int zycie_min; int zycie_max; int mana_min; int mana_max; int atak; int obrona; int sila; int zrecznosc; int inteligencja; int wytrzymalosc; int witalnosc; };
struct potwor { std::string nazwa; std::string opis; int zycie_min; int zycie_max; int atak; int obrona; int exp; int gold; int ilosc; };
void potwor_tab( potwor * enemy1, potwor * enemy2, int rozmiar ) { enemy1->nazwa = "Szczur"; enemy1->opis = "Gryzon"; enemy1->zycie_min = 5; enemy1->zycie_max = 5; enemy1->exp = 1; enemy1->ilosc = 5; enemy2->nazwa = "Pies"; enemy2->opis = "Piesek"; enemy2->zycie_min = 10; enemy2->zycie_max = 10; enemy2->exp = 2; enemy2->ilosc = 5; }
void postac_tab( postac * player, int rozmiar ) { player->klasa = "Test"; player->poziom = 1; player->exp_min = 0; player->exp_max = 10; player->zycie_min = 100; player->zycie_max = 100; player->mana_min = 50; player->mana_max = 50; }
void postac_info( const postac & player ) { std::cout << "====================================" << std::endl; std::cout << "Nazwa: " << player.nazwa << std::endl; std::cout << "Klasa: " << player.klasa << std::endl; std::cout << "Poziom: " << player.poziom << std::endl; std::cout << "Doswiadczenie: " << player.exp_min << "/" << player.exp_max << std::endl; std::cout << "Zdrowie: " << player.zycie_min << "/" << player.zycie_max << std::endl; std::cout << "Mana: " << player.mana_min << "/" << player.mana_max << std::endl; std::cout << "====================================" << std::endl; }
void postac_nowylvl( postac & player ) { if( player.exp_min == player.exp_max ) { int opcja; wyprawa = false; system( "cls" ); std::cout << "Awansowales na nowy poziom" << std::endl; std::cin >> opcja; switch( opcja ) { case 1: player.zycie_max += 10; player.zycie_min = player.zycie_max; wyprawa = true; break; case 2: wyprawa = true; break; } player.exp_max += player.exp_max * 2; player.exp_min = 0; } }
void walka( postac & player, potwor & enemy1, potwor & enemy2 ) { int akcja; potwor * aktualny = & enemy1; potwor * aktualny2 = & enemy2; while( wyprawa ) { while( aktualny->ilosc >= 0 ) { system( "cls" ); std::cout << "Nazwa: " << enemy1.nazwa << std::endl; std::cout << "Opis: " << enemy1.opis << std::endl; std::cout << "Zycie: " << enemy1.zycie_min << "/" << enemy1.zycie_max << std::endl; std::cout << "Ilosc: " << enemy1.ilosc << std::endl; std::cin >> akcja; switch( akcja ) { case 1: enemy1.zycie_min -= 1; break; case 2: break; } if( enemy1.zycie_min != 0 ) { enemy1.ilosc--; player.exp_min += 1; } } while( aktualny2->ilosc >= 0 ) { std::cout << "Nazwa: " << enemy2.nazwa << std::endl; std::cout << "Opis: " << enemy2.opis << std::endl; std::cout << "Zycie: " << enemy2.zycie_min << "/" << enemy2.zycie_max << std::endl; std::cout << "Ilosc: " << enemy2.ilosc << std::endl; std::cin >> akcja; switch( akcja ) { case 1: enemy2.zycie_min -= 1; break; case 2: break; } } } }
int main( postac * player, potwor * enemy1, potwor * enemy2 ) { postac_tab( player, 1 ); potwor_tab( enemy1, enemy2, 2 ); postac_info( player[ 0 ] ); walka( player[ 0 ], enemy1[ 0 ], enemy2[ 1 ] ); NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 ); system( "color 7f" ); SetConsoleTitle( TEXT( "Guthix RPG by oeN." ) ); return 0; }
||=== Build: Debug in guthix (compiler: GNU GCC Compiler) ===| F:\guthix\silnik.cpp|202|warning: first argument of 'int main(postac*, potwor*, potwor*)' should be 'int' [-Wmain]| F:\guthix\silnik.cpp|202|warning: second argument of 'int main(postac*, potwor*, potwor*)' should be 'char **' [-Wmain]| F:\guthix\silnik.cpp|202|warning: third argument of 'int main(postac*, potwor*, potwor*)' should probably be 'char **' [-Wmain]| ||=== Build finished: 0 error(s), 3 warning(s) (0 minute(s), 6 second(s)) ===| ||=== Run: Debug in guthix (compiler: GNU GCC Compiler) ===|
|
|
Monika90 |
» 2014-11-13 17:59:23 Funkcja main nie może przyjmować takich argumentów. Main dostaje argumenty przkazane z systemu operacyjnego. System operacyjny nie stworzy dla ciebie tablicy potworów i nie przekaże jej do main. Musisz te tablice sam zadeklarować. int main() { postac players[ 1 ]; potwor enemies[ 2 ]; postac_tab( players, 1 ); potwor_tab( & enemies[ 0 ], & enemies[ 1 ], 2 ); postac_info( player[ 0 ] ); walka( player[ 0 ], enemies[ 0 ], enemies[ 1 ] ); NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 ); system( "color 7f" ); SetConsoleTitle( TEXT( "Guthix RPG by oeN." ) ); return 0; }
Teraz chyba będzie OK. I widzę, że niestety nic z tego nie rozumiesz, więc kup sobie jakąś dobrą książkę o C++. |
|
oen432 Temat założony przez niniejszego użytkownika |
» 2014-11-13 21:47:48 Po prostu takie użycie zostało mi zasugerowane do potrzeb stworzenia tej gry. Fakt, nie rozumiem tego do końca bo nie jestem na tym poziomie. Dobrą książkę? Poczytałem trochę na forach i wychodzi na to że na początek dobrą opcją jest Symfonia C++.
Dziękuję za pomoc. |
|
Memento96 |
» 2014-11-14 08:30:50 Nie symfonia c++ a symfonia c++ standard jak już |
|
oen432 Temat założony przez niniejszego użytkownika |
» 2014-11-14 11:10:43 O tą mi chodziło.
Problem rozwiązany i pomoc udzielona więc temat zamykam. |
|
1 « 2 » |