system walki
Ostatnio zmodyfikowano 2016-11-08 13:10
kirito1996 Temat założony przez niniejszego użytkownika |
system walki » 2016-11-04 17:27:31 cześć tak się zastanawiałem jak się robi system walki w jakieś gierce i postanowiłem napisać taki trochę prymitywny ;) ale do rzeczy, jestem na dobrej drodzę ? można coś takiego wykorzystać ? #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int walka( int t[], int rozmiar ) { srand( time( NULL ) ); int przedzial =( rand() % 3 ) + 0; t[ 0 ] =( rand() % 10 ) + 0; t[ 1 ] =( rand() % 20 ) + 11; t[ 2 ] =( rand() % 30 ) + 31; if( przedzial == 0 ) cout << "slabo "; else if( przedzial == 1 ) cout << "srednio "; else if( przedzial == 2 ) cout << "mooocno "; przedzial = t[ przedzial ]; if( przedzial == 0 ) cout << endl << endl << " potknales sie czy co 0.o " << endl << endl; cout << " uderzyles za: " << przedzial; return przedzial; }
int main() { int tablica[ 3 ]; int suma = 0; do { cout << " wpisz 1 aby zatakowac. "; int atak; cin >> atak; if( atak == 1 ) suma = suma + walka( tablica, 3 ); cout << " przeciwnikowi zostalo : " << 1100 - suma << " zycia" << endl; } while( suma < 1100 ); return 0; }
mile widziane inne przykłady xD oczywiście tego kodu nie brać poważnie chyba że na cos się nada ;D |
|
DejaVu |
» 2016-11-04 17:40:17 1. po co tablica 2. po co tyle randów 3. wystarczy zrobić: int walka( int _iNormalnaSilaCiosu ) { return(( rand() % 101 ) * _iNormalnaSilaCiosu ) / 100; } |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2016-11-04 17:46:44 o kurde ;D to jest całkiem inne niż na kursach haha return(( rand() % 101 ) do tego miejsca rozumiem ale skąd to * i na końcu / 100 ;D wklej mi tutaj kod do przeanalizowania, czy tak gwiazdeczka nie jest czasem wskaźnikiem ? xD dzięki;D a załóżmy że chce aby obrażenia były zależne od umiejętności to ten zapis też będzie ok ? chciałem właśnie żeby ciosy były podzielone na słabe średnie i mocne wtedy bym mógł zrobić jakiś cios krytyczny ;d czy coś w tym rodzaju ;D |
|
kistel66 |
» 2016-11-04 18:06:03 To jest mnożenie, kumpel. Wylosowaną liczbę pomnóż przez SileCiosu, a następnie wynik podziel przez 100. |
|
latajacaryba |
» 2016-11-05 01:49:24 Pierwszy raz komukolwiek pomagam na tym forum, mam nadzieję, że jest dobrze. Mam również nadzieję, że komentarze są czytelne. #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int odbiorcaataku( int obr, int & hp, bool kryt ); int atak( int obr_bronii, int sila ); bool czywszedl( int obr, int obr_bronii, int sila );
int main() { int hpprzeciwnika = 40; cout << "hp przeciwnika = " << hpprzeciwnika << endl; int uderzenie = atak( 5, 2 ); odbiorcaataku( uderzenie, hpprzeciwnika, czywszedl( uderzenie, 5, 2 ) ); cout << "po wszystkim przeciwnik ma " << hpprzeciwnika << endl; cout << "gdybysmy w funkcji odbiorcaataku nie uzyli znaku \"&\" (ampersand) to nadal\n program wypisywalby nam wartosc 40"; }
int atak( int obr_bronii, int sila ) { srand( time( NULL ) ); int zadaneobr =( rand() % 100 ) * obr_bronii * sila / 20; return zadaneobr; }
int odbiorcaataku( int obr, int & hp, bool kryt ) { hp -= obr; if( kryt ) cout << "cios krytyczny!\n"; cout << "przeciwnik otrzymal " << obr << " obrazen\n"; if( hp < 0 ) { hp = 0; cout << "gracz pokonal przeciwnika\n"; } }
bool czywszedl( int obr, int obr_bronii, int sila ) { if( obr >= 75 * obr_bronii * sila / 20 ) return true; else return false; }
Chociaż ta funkcja sprawdzająca czy są to obrazenia krytyczne to takie pyrrusowe zwycięstwo, mogłem zrobić to łatwiej w funkcji odbiorcaataku ale dzięki temu może dowiesz się czegoś nowego :) |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2016-11-08 13:10:41 dzięki wielkie przeanalizuje to sobie ;) nie jednemu się to przyda xD, teraz to w całości przeczytałem naprawdę dobra robota że też ci się chciało wszystko opisywać naprawdę doceniam i szanuje ;) pozdrawiam |
|
« 1 » |