Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja jest, lecz nic nie zwraca

Ostatnio zmodyfikowano 2012-07-10 12:17
Autor Wiadomość
Loodwin
Temat założony przez niniejszego użytkownika
Funkcja jest, lecz nic nie zwraca
» 2012-07-10 12:04:10
Mam taki problem. Zacząłem pisać dzisiaj jedną grę i już mam problem z pierwszą funkcją (jestem początkujący). Napisałem taki kodzik:
C/C++
#include <iostream>
#include <conio.h>
#include <stdio.h>

using namespace std;

bool bitwa( int hp, int damagea, int damageb, int damagec, int morale, int hp2, int damagea2, int damageb2, int damagec2 )
{
    int damages = damagea + damageb + damagec;
    int damages2 = damagea2 + damageb2 + damagec2;
    int losowanie;
   
    hp2 =- damages;
    hp =- damages2;
   
    if( morale / 1.8 + hp < hp2 )
    { return false; };
    if( morale / 1.8 + hp > hp2 )
    { return true; };
    if( morale / 1.8 + hp == hp2 )
    if( morale >= 80 )
    { return true; }
    else
    { losowanie = rand() % 1 + 0; }
    if( losowanie == 1 )
    { return true; }
    else
    { return false; }
   
   
}


int main()
{
    srand( time( 0 ) );
    bool wynik_walki;
    wynik_walki == bitwa( 150, 30, 25, 40, 56, 125, 25, 20, 35 );
    if( wynik_walki == true )
    { cout << "Wygrales" << endl; }
    if( wynik_walki == false )
    { cout << "Przegrales" << endl; }
   
    getch();
    return 0;
}

I po prawidłowym skompilowaniu włącza się aplikacja i nie dzieje się nic tzn. tak jakby nic nie zwracała, bo nie pisze ani "Wygrales", ani "Przegrales".
Nie wiem jak to rozwiązać. Proszę o pomoc.
P-59780
wojownik266
» 2012-07-10 12:13:51
Przy próbie kompilacji programu który zamiesciłeś wyskoczyło mi kilka błędów spowodowanych brakiem paru plików nagłowkowych (dyrektyw). Po dodaniu tych plików program działa poprawnie:

C/C++
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;

bool bitwa( int hp, int damagea, int damageb, int damagec, int morale, int hp2, int damagea2, int damageb2, int damagec2 )
{
    int damages = damagea + damageb + damagec;
    int damages2 = damagea2 + damageb2 + damagec2;
    int losowanie;
   
    hp2 =- damages;
    hp =- damages2;
   
    if( morale / 1.8 + hp < hp2 )
    { return false; };
    if( morale / 1.8 + hp > hp2 )
    { return true; };
    if( morale / 1.8 + hp == hp2 )
    if( morale >= 80 )
    { return true; }
    else
    { losowanie = rand() % 1 + 0; }
    if( losowanie == 1 )
    { return true; }
    else
    { return false; }
   
   
}


int main()
{
    srand( time( 0 ) );
    bool wynik_walki;
    wynik_walki == bitwa( 150, 30, 25, 40, 56, 125, 25, 20, 35 );
    if( wynik_walki == true )
    { cout << "Wygrales" << endl; }
    if( wynik_walki == false )
    { cout << "Przegrales" << endl; }
   
    getch();
    return 0;
}
P-59781
OSA_PL
» 2012-07-10 12:15:26
Pierwsze co widzę to zły operator
wynik_walki == bitwa( 150, 30, 25, 40, 56, 125, 25, 20, 35 );
 i te średniki przy pętlach if.
P-59782
Loodwin
Temat założony przez niniejszego użytkownika
Nadal nie działa.
» 2012-07-10 12:17:13
Mi nadal nie działa dobrze. Jest to co poprzednio.

EDIT:

@OSA_PL:
Dzięki. Teraz działa. Zamykam temat.
P-59783
« 1 »
  Strona 1 z 1