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

Losowanie i typ wyliczeniowy.

Ostatnio zmodyfikowano 2017-03-19 11:53
Autor Wiadomość
MoravenTolo
Temat założony przez niniejszego użytkownika
Losowanie i typ wyliczeniowy.
» 2017-03-14 16:42:26
Mam taki problem, otóż musze stworzyć metodę, która będzie generowała losowe potwory. Przykładowo z wylosowaniem poziomu nie ma problemu, ale jak mam wylosować typ potwora, który jest w typie wyliczeniowym enum, a rand() losuje liczby. I jeszcze dodatkowe pytanie jaka jest różnica między "enum", a "enum class"?
C/C++
#include "stdafx.h"
#include<string>
#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

enum Potwory { P1, P2, P3 };

struct TPotwor
{
    string nazwa;
    Potwory typ;
    int poziom;
};

string pobierzTyp( const Potwory & typ )
{
    switch( typ )
    {
    case Potwory::P1:
        return "p1";
    case Potwory::P2:
        return "p2";
    case Potwory::P3:
        return "p3";
    default:
        return "nieznany";
    }
}

void wyswietl( const TPotwor & potwor )
{
    cout << "Potwor: " << potwor.nazwa << endl;
    cout << "Typ: " << pobierzTyp( potwor.typ ) << endl;
    cout << "Atak: " << potwor.poziom << endl;
}

TPotwor * stworzPotwora( string nazwa )
{
    srand( time( NULL ) );
    TPotwor * p = new TPotwor();
    ( * p ).nazwa = nazwa;
    //(*p).typ =
    ( * p ).poziom =( rand() % 50 );
   
    return p;
}

int main()
{
    wyswietl( * stworzPotwora( "nazwa" ) );
}
P-158977
maly7
» 2017-03-14 18:58:38
Metody to są funkcje w jakiejś klasie, ty nie masz klasy więc będzie to po prostu funkcja.
Typ wyliczeniowy to po prostu liczby numerowane kolejno:
enum Potwory { P1 = 0, P2, P3 };
P1 = 0, P2 = 1, P3 = 2;
P-158984
MoravenTolo
Temat założony przez niniejszego użytkownika
» 2017-03-14 20:58:03
to jak mam wylosować, któryś z tych typów skoro Potwory to mój zdefiniowany typ a rand() działa na zmiennych int i pojawia się błąd: cannot convert from 'int' to 'Potwory'?
P-159001
czaffik
» 2017-03-14 21:26:17
C/C++
( * p ).typ = static_cast < Potwory >( rand() % 2 );
P-159003
MoravenTolo
Temat założony przez niniejszego użytkownika
» 2017-03-14 23:04:47
O to chodziło. Dzięki wielki:)
P-159007
MoravenTolo
Temat założony przez niniejszego użytkownika
» 2017-03-17 12:42:26
Mam jeszcze jedno pytanie. Jak zrobić, aby funkcja stwórz potwora za każdym razem, gdy jest wywoływana, generowała innego potwora?
P-159061
carlosmay
» 2017-03-17 18:29:50
Przenieś
srand
 do
main
.
P-159072
MoravenTolo
Temat założony przez niniejszego użytkownika
» 2017-03-19 11:53:39
Mam ostatni problem co do tego zadania. Mam jeszcze stworzyć tablicę o rozmiarze zadawanym przez użytkownika, która zawieta wygenerowane potwory i wypisać informację na temat każdego potwora. Wydaje mi się, że dobrze zrobiłem tą tablicę, ale nie wiem jak mam teraz wypisać te potwory?
C/C++
int main()
{
    int rozmiar;
    cout << "podaj ile potworow stworzyc: ";
    cin >> rozmiar;
    TPotwor * tab = new TPotwor[ rozmiar ]();
   
    for( int i = 0; i < rozmiar; i++ )
    {
        tab[ i ] = * stworzPotwora( "jacek" );
    }
}
P-159148
« 1 »
  Strona 1 z 1