Seite 1 von 1

Anfänger,Rollenspiel textbasiert

Verfasst: Sonntag 2. August 2020, 09:03
von SLWPT
Huhu liebe Python Gemeinde,. Ich bin absoluter Neuling was das programmieren angeht, hier mein Problem:
Ich versuche für meine Kinder ein Text/Zahlen basiertes Rollenspiel zu schreiben.
Ein kurzes beispiel wie da ca ablaufen soll

Willkommen im Zauberwald , euren Weg kreuzt ein großer Böser Wolf (Kampfbeginn)
Nun soll der "Wolf" zb 300 Lebenspunkte haben, und 4 spieler fügen mit verschiedenen Fähigkeiten random zwischen 60 und 90 Schaden zu
abwechselnd so lange bis "Wolf" 0 Lebenspunte bzw unter 0 hat dann sollte als Text ausgegeben werden zb "Gut gemacht Wolf wurde besiegt"
Also ganz grob so in etwa soll es dann aussehen. jemand eine Idee wie man das realisiert? :-)

Vielen dank schonmal

Re: Anfänger,Rollenspiel textbasiert

Verfasst: Sonntag 2. August 2020, 09:25
von Sirius3
Du brauchst print und Schleifen und das random-Modul. Was hast du schon ausprobiert? Zeig deinen Code. Wo kommst denn nicht weiter? Was für ein konkretes Problem hast du?

Re: Anfänger,Rollenspiel textbasiert

Verfasst: Sonntag 2. August 2020, 09:27
von SLWPT
Ich habe noch gar nichts, habe zwar ein Anfänger Buch für Python, aber hab nichts dienliches gefunden. Hatte gehofft das man mir so ein bissl beispielcode schickt das ich mir das mal anschauen kann :-)

Re: Anfänger,Rollenspiel textbasiert

Verfasst: Sonntag 2. August 2020, 09:45
von __deets__
Die Hoffnung wird enttaeuscht werden. Wir helfen gerne beim lernen der Sprache Python, oder konkreten Problemen/Fehlermeldungen/Verstaendnisproblemen. Einfach mal kurz ein paar hundert Zeilen Code abliefern kommt eher selten vor, ausser das Problem ist irgendwie spannend oder relevant fuer einen selbst.

Nachtrag: man findet da uebrigens so einiges an Vorlagen: https://www.google.com/search?client=ub ... 8&oe=utf-8

Re: Anfänger,Rollenspiel textbasiert

Verfasst: Sonntag 2. August 2020, 17:53
von darktrym
Zumal es auch Bücher wie "Make Your Own Python Text Adventure" gibt die das bis ins Detail erklären.

Re: Anfänger,Rollenspiel textbasiert

Verfasst: Dienstag 4. August 2020, 22:03
von __blackjack__
@SLWPT: In dem Anfängerbuch das Du hast kommen keine ``while``-Schleifen vor? Oder ist das `random`-Modul nicht bekannt?

In C++ könnte das so aussehen:

Code: Alles auswählen

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <vector>

typedef std::vector<std::string> PlayerNames;
typedef PlayerNames::const_iterator PlayerNamesIterator;

static inline void randomize()
{
    std::srand(std::time(NULL));
}


static inline int randint(int a, int b)
{
    return std::rand() / (RAND_MAX / ((b - a) + 1)) + a;
}


class Cycle
{
    const PlayerNames* m_names;
    PlayerNamesIterator m_it;

public:
    Cycle(const PlayerNames* names) : m_names(names), m_it(names->end()) {};
    
    std::string next() {
        if (m_it == m_names->end()) m_it = m_names->begin();
        std::string result = *m_it;
        ++m_it;
        return result;       
    }
};


int main(void)
{
    randomize();
    
    const char* names[] = {"Alice", "Bob", "Dave", "Eve"};
    const PlayerNames player_names(names, names + sizeof(names) / sizeof(*names));
    
    std::cout << "Willkommen im Zauberwald, euren Weg kreuzt ein großer Böser Wolf."
            << std::endl;
    const char* enemy_name = "Wolf";
    int enemy_life_points = 300;
    
    Cycle player_names_cycle(&player_names);
    while (enemy_life_points >= 0) {
        std::string player_name = player_names_cycle.next();
        int hit_points = randint(60, 90);
        enemy_life_points -= hit_points;
        std::cout << player_name.c_str() << " fügt dem " << enemy_name << " "
                << hit_points << " Schadenspunkte zu." << std::endl;
    }
    std::cout << "Gut gemacht. Der " << enemy_name << " wurde besiegt."
            << std::endl;

    return 0;
}
Ausgabe:

Code: Alles auswählen

C:\>d:test.com
Willkommen im Zauberwald, euren Weg kreuzt ein großer Böser Wolf.
Alice fügt dem Wolf 73 Schadenspunkte zu.                        
Bob fügt dem Wolf 87 Schadenspunkte zu.                          
Dave fügt dem Wolf 60 Schadenspunkte zu.                         
Eve fügt dem Wolf 63 Schadenspunkte zu.                          
Alice fügt dem Wolf 85 Schadenspunkte zu.                        
Gut gemacht. Der Wolf wurde besiegt.                             
C:\>d:test.com                                                   
Willkommen im Zauberwald, euren Weg kreuzt ein großer Böser Wolf.
Alice fügt dem Wolf 74 Schadenspunkte zu.                        
Bob fügt dem Wolf 88 Schadenspunkte zu.                          
Dave fügt dem Wolf 60 Schadenspunkte zu.                         
Eve fügt dem Wolf 86 Schadenspunkte zu.                          
Gut gemacht. Der Wolf wurde besiegt.
`randomize()` braucht man in Python nicht, `randint()` wird im `random`-Module definiert, und so etwas wie die `Cycle`-Klasse gibt's im `itertools`-Modul.