Anfänger,Rollenspiel textbasiert

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SLWPT
User
Beiträge: 2
Registriert: Sonntag 2. August 2020, 08:50

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
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
SLWPT
User
Beiträge: 2
Registriert: Sonntag 2. August 2020, 08:50

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 :-)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Zumal es auch Bücher wie "Make Your Own Python Text Adventure" gibt die das bis ins Detail erklären.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten