Hej jag läser för tillfället en grundläggande spelprogrammeringskurs i C++, för att lära mig mer om spelprogrammering samt friska upp mina riktigt rostiga c++ kunskaper (läst några grundläggande kurser för några år sedan).
Håller just nu på med den första uppgiften och i den får vi inte använda std::string eller liknande utan ska träna på att använda char-pekare och liknande.
I uppgiften ska namn på olika saker genereras genom att kombinera 1 del från 3 olika arrayer dynamiskt. För att sedan dynamiskt alkolera en char-pekare och retunera denna från funktionen.
Jag har löst den delen utav uppgiften på följande sätt. Vilket fungerar (även om det säkert inte är optimal kod).
Däremot så vill jag döpa flera olika typer av objekt där part1, part2 och part3 kan variera mellan olika saker. Jag försöker då skapa en fristående funktion som tar de tre olika part1, part2 och part3 som parametrar. Det är här mitt problem kommer in. Jag har försökt flera olika möjligheter men det närmaste jag har kommit just nu är nedanstående kod. Men den fungerar inte helt som den ska eftersom storleken på delarna inte räknas ut som de ska.
Någon som kan hjälpa mig? vilket är det rätta sättet att skicka part1, part2 och part3 som funktionen och sedan dynamiskt avgöra storleken och slumpa fram en del?
Blev lite luddigt beskrivet men hoppas att någon van C-programmerare kan hjälpa mig.
MVH
Håller just nu på med den första uppgiften och i den får vi inte använda std::string eller liknande utan ska träna på att använda char-pekare och liknande.
I uppgiften ska namn på olika saker genereras genom att kombinera 1 del från 3 olika arrayer dynamiskt. För att sedan dynamiskt alkolera en char-pekare och retunera denna från funktionen.
Jag har löst den delen utav uppgiften på följande sätt. Vilket fungerar (även om det säkert inte är optimal kod).
Kod:
char* generateThingName() { const char* part1[] = { "Divine ", "Broken ", "Godfull ", "Powerfull ", "Spiked ", "Shiny " }; const char* part2[] = { "Blade ", "Axe ", "Knife ", "Bow ", "Club ", "Spear " }; const char* part3[] = { "of Doom ", "of the Wind ", "of the Fire ", "of the Dark ", "of the Light ", "of the trigh ", "of the Lies " }; char buf[100]; strcpy(buf, part1[rand() % (sizeof(part1) / sizeof(char*))]); strcat(buf, part2[rand() % (sizeof(part2) / sizeof(char*))]); strcat(buf, part3[rand() % (sizeof(part3) / sizeof(char*))]); char* name = new char[strlen(buf) + 1]; strcpy(name, buf); return name; }
Däremot så vill jag döpa flera olika typer av objekt där part1, part2 och part3 kan variera mellan olika saker. Jag försöker då skapa en fristående funktion som tar de tre olika part1, part2 och part3 som parametrar. Det är här mitt problem kommer in. Jag har försökt flera olika möjligheter men det närmaste jag har kommit just nu är nedanstående kod. Men den fungerar inte helt som den ska eftersom storleken på delarna inte räknas ut som de ska.
Någon som kan hjälpa mig? vilket är det rätta sättet att skicka part1, part2 och part3 som funktionen och sedan dynamiskt avgöra storleken och slumpa fram en del?
Kod:
char* generateThingName(const char* part1[], const char* part2[], const char* part3[]) { char buf[100]; strcpy(buf, part1[rand() % (sizeof(part1) / sizeof(char*))]); strcat(buf, part2[rand() % (sizeof(part2) / sizeof(char*))]); strcat(buf, part3[rand() % (sizeof(part3) / sizeof(char*))]); char* name = new char[strlen(buf) + 1]; strcpy(name, buf); return name; } int main() { srand(time(0)); const char* part1[] = { "Divine ", "Broken ", "Godfull ", "Powerfull ", "Spiked ", "Shiny " }; const char* part2[] = { "Blade ", "Axe ", "Knife ", "Bow ", "Club ", "Spear " }; const char* part3[] = { "of Doom ", "of the Wind ", "of the Fire ", "of the Dark ", "of the Light ", "of the trigh ", "of the Lies " }; char* name = generateThingName(part1, part2, part3); return 0; }
Blev lite luddigt beskrivet men hoppas att någon van C-programmerare kan hjälpa mig.
MVH