maciejo Temat założony przez niniejszego użytkownika |
» 2010-07-05 18:08:23 ale jak mam to wstawic do funkcji ? Nic nie przychodzi mi do glowy |
|
ison |
» 2010-07-05 18:20:10 podstawy C++ masz źle działającą funkcję: int random( int nMin, int nMax ) { return rand() % nMax + nMin; }
i działający kawałek kodu pana Piotra odpowiedzialny za losowanie liczby z danego przedziału int wylosowano = rand() %( losujMax - losujMin + 1 ) + losujMin;
tuż po słowie return w twojej funkcji wklejasz to co jest po znaku '=' w drugim kodzie. Zamieniasz nazwy zmiennych aby się zgadzały i otrzymujesz magiczną funkcję: int random( int nMin, int nMax ) { return rand() %( nMax - nMin + 1 ) + nMin; }
|
|
maciejo Temat założony przez niniejszego użytkownika |
» 2010-07-05 19:20:52 Jeszcze jeden problem: kawalek kodu z odejmowaniem wyglada tak : cout << "Wybrales atak mieczem" << endl; opnowhp = ophp; opnowhp = opnowhp - random( 0, herofizatk ); zabrales = ophp - opnowhp; cout << "Zabrales przeciwnikowi " << zabrales << "HP." << endl; kiedy to uruchamiam , to jest czarny ekran (getch , jakby bylo system("pause") to by czekalo na klawisz z komunikatem) a jak dalem na koniec main jeszcze kilka razy funkcje odpowiadajaca za walke to pisalo , ze liczba ujemna kod: #include <cstdlib> #include <iostream> #include <ctime> #include <conio.h> #include <stdlib.h> #include <windows.h> #include <string>
using namespace std;
int wybor; string imie; int zrobic; int klasa; int heromaxhp = 70; int heronowhp = 70; int herohp; int heromaxmp = 70; int heronowmp = 70; int herofizatk; int heromagatk; int opmaxhp = 70; int opnowhp = 70; int ophp; int opmaxmp = 70; int opnowmp = 70; int opfizatk; int opmagatk; int lokacja; string op; int atak; int dostales; int zabrales;
int random( int nMin, int nMax ) { return rand() %( nMax - nMin + 1 ) + nMin; }
int walka() { do { srand( static_cast < unsigned int >( time( NULL ) ) ); cout << imie << "\t\t\t\t" << op << endl; cout << "HP\t\t\t\tHP" << endl; cout << heronowhp << "/" << heromaxhp << "\t\t\t\t" << opnowhp << "/" << opmaxhp << endl; cout << "MP\t\t\t\tMP" << endl; cout << heronowmp << "/" << heromaxmp << "\t\t\t\t" << opnowmp << "/" << opmaxmp << endl; cout << "Max. obrazenia fizyczne\t\tMax. obrazenia fizyczne" << endl; cout << herofizatk << "\t\t\t\t" << opfizatk << endl; cout << "Max. obrazenia magiczne\t\tMax. obrazenia magiczne" << endl; cout << heromagatk << "\t\t\t\t" << opmagatk << endl << endl << endl; cout << "Twoj ruch" << endl; cout << "Co robic?" << endl; cout << "1.Atak mieczem" << endl; cout << "2.Atak magiczny" << endl; cin >> atak; switch( atak ) { case 1: cout << "Wybrales atak mieczem" << endl; opnowhp = ophp; opnowhp = opnowhp - random( 0, herofizatk ); zabrales = ophp - opnowhp; cout << "Zabrales przeciwnikowi " << zabrales << "HP." << endl; break; case 2: cout << "Wybrales atak magiczny" << endl; opnowhp = ophp; opnowhp = opnowhp - random( 0, heromagatk ); zabrales = ophp - opnowhp; cout << "Zabrales przeciwnikowi " << zabrales << "HP." << endl; break; default: cout << "Nieznana opcja" << endl; break; } cout << "Ruch komputera" << endl; int akcja = rand() % 2 + 1; if( akcja == 1 ) { cout << "Komputer wybral atak mieczem" << endl; heronowhp = herohp; heronowhp = heronowhp - random( 0, opfizatk ); dostales = herohp - heronowhp; cout << "Komputer zabral ci " << dostales << "HP." << endl; } else { cout << "Komputer wybral atak magiczny" << endl; heronowhp = herohp; heronowhp = heronowhp - random( 0, opmagatk ); dostales = herohp - heronowhp; cout << "Komputer zabral ci " << dostales << "HP." << endl; } cout << "Nacisnij cos zeby kontynuowac" << endl; getch(); system( "cls" ); } while( heronowhp > 0 || opnowhp > 0 ); }
int powyborze() { cout << "Wybierz miejsce walki :" << endl; cout << "1.Las" << endl; cout << "2.Miasto" << endl; cin >> lokacja; switch( lokacja ) { case 1: system( "cls" ); cout << "Wybrales las" << endl; cout << "Twoim przeciwnikiem bedzie bandyta" << endl; op = "Bandyta"; opfizatk = 30; opmagatk = 6; walka(); break; case 2: system( "cls" ); cout << "Wybrales miasto" << endl; cout << "Twoim przeciwnikiem bedzie czarodziej" << endl; op = "Czarodziej"; opfizatk = 6; opmagatk = 30; walka(); break; default: cout << "Nieznana opcja" << endl; } }
int main( int argc, char * argv[] ) { SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 11 ); cout << "\n\n\n\t\t\tFight 0.01 by maciejo54" << endl; cout << "\n\n\t\tNacisnij dowolny klawisz aby kontynuowac"; getch(); system( "cls" ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 15 ); cout << "-----Menu-----" << endl; cout << "1.Nowa gra" << endl; cout << "2.Wyjscie" << endl; cin >> wybor; switch( wybor ) { case 1: system( "cls" ); cout << "Wpisz swoje imie" << endl; cin >> imie; system( "cls" ); cout << "Witaj " << imie << "!" << endl; cout << "Co chcesz teraz zrobic?" << endl; cout << "1.Wybrac klase\n2.Wyjsc" << endl; cin >> zrobic; switch( zrobic ) { case 1: cout << "Wolisz maga(1) , czy rycerza(2)?" << endl; cin >> klasa; switch( klasa ) { case 1: herofizatk = 6; heromagatk = 30; system( "cls" ); cout << "Jestes magiem" << endl; break; case 2: herofizatk = 30; heromagatk = 6; system( "cls" ); cout << "Jestes rycerzem" << endl; break; default: cout << "Nieznana opcja" << endl; break; } powyborze(); break; case 2: EXIT_SUCCESS; break; default: cout << "Nieznana opcja" << endl; break; } break; case 2: EXIT_SUCCESS; break; default: cout << "Nieznana opcja" << endl; } getch(); }
|
|
ison |
» 2010-07-05 19:29:51 teraz dopiero skompilowałem twój kod. To jest ta 'gra' którą widziałem na gamedev :D nie wrzucaj tam projektu póki nie skończysz swojej gry chociażby w małym stopniu bo zaśmiecasz serwis po pierwsze to zrób porządek w swoim kodzie, poczytaj o czymś takim jak programowanie obiektowe po drugie nie każdemu się chce analizować długi mało wyraziście napisany kod kiedy to uruchamiam , to jest czarny ekran (getch , jakby bylo system("pause") to by czekalo na klawisz z komunikatem) a jak dalem na koniec main jeszcze kilka razy funkcje odpowiadajaca za walke to pisalo , ze liczba ujemna
jaki czarny ekran? konsola z reguły jest czarna :p o jaką liczbę ujemną ci chodzi? jedyne co mi przychodzi na myśl to może to że funkcja getch(); nie zawsze działa na niektórych systemach. Jeśli zrozumiałem o co ci chodzi to zamiast getch(); daj _getch(); P.S. do maciejo - mówi się 'jest napisane' a nie 'pisze' |
|
maciejo Temat założony przez niniejszego użytkownika |
» 2010-07-05 19:34:35 Co do tej liczby ujemnej daj przed getch taki napis: walka(); |
|
ison |
» 2010-07-05 19:40:13 nie wiem o który getch() ci chodzi ale to jest nie istotne, najpierw sam pomyśl nad kodem a potem dopiero zgłaszaj się tu z konkretnym problemem. To jest uciążliwe analizować tak długi kod zwłaszcza że nie opisałeś dokładnie problemu. |
|
maciejo Temat założony przez niniejszego użytkownika |
» 2010-07-05 19:46:14 Chodzi mi o to ze kiedy chce wykonac dzialanie : heronowhp = heronowhp - random(0, opmagatk); kompilator jakims cudem zyskuje z tego liczbe ujemna , a przeciez startowa wartosc zmiennych z hero wynosi 70 , a opmagatk moze wynosic max 30 |
|
DejaVu |
» 2010-07-05 19:48:15 1) udowodnij, że opmagatk: max = 30. 2) udowodnij, że funkcja random(0,30) zwraca zawsze liczbę w tym przedziale. Jeżeli udowodnisz powyższe dwa punkty problem będziesz miał rozwiązany. Tak jak pisał poprzednik: posiedź, podłub i pomyśl :) /edit: Szczerze mówiąc nie dziwię się, że masz kwas: int herohp;
heronowhp = herohp;
|
|
1 « 2 » 3 |