Les partenaires publicitaires:

Comment faire un jeu rpg en c ++

Lors de la lecture d'un jeu de rôle, ou RPG, vous prenez le rôle d'un personnage imaginaire et de l'expérience de ses aventures. Ces jeux peuvent être très complexes et impliquer les graphiques lourds. Développeurs travaillent habituellement plusieurs mois sur le codage et de tester le jeu. Cependant, vous pouvez créer un jeu de RPG simple dans C ++. En outre, vous avez juste besoin de comprendre les bases de la programmation C ++. Vous pouvez créer un jeu de RPG simple en utilisant un tableau à deux dimensions que la carte et quelques classes pour contrôler votre personnage, les personnages ennemis et le jeu-play.

Instructions

  1. Ouvrez votre favori C ++ éditeur et commencer un nouveau projet. Inclure le "iostream" et "ctime" bibliothèques en utilisant ce code:

    inclure
    inclure
  2. Créer une nouvelle classe qui représente votre héros et les monstres dans votre "cachot" en utilisant ce code:

    CCreature de classe
    {
    publique:

    CCreature (): muiAttack (0), muiDefense (0), muiHitPoints (3)
    {
    pour (unsigned int uiIndex = 0- uiIndex lt; 3- uiIndex ++) {
    muiAttack = muiAttack + (rand ()% 34) -
    muiDefense = muiDefense + (rand ()% 34) -
    muiHitPoints = muiHitPoints + (rand ()% 10) -
    }
    }
    Attaque void (CCreature&Amp qrDefender) {
    // Générer un nombre entre 1 et 100
    unsigned int uiAttack1 = (rand ()% 100) + 1-
    unsigned int uiDefense1 = (rand ()% 100) + 1-
    unsigned int uiAttack2 = (rand ()% 100) + 1-
    unsigned int uiDefense2 = (rand ()% 100) + 1-
    // Avez l'attaquant (héros) a frappé?
    if (uiAttack1 lt; muiAttack &Amp&Amp uiDefense1 gt; qrDefender.muiDefense) {
    --qrDefender.muiHitPoints-
    std :: cout lt; lt; "-Monster Hit!"- lt; lt; std :: endl-
    } Else {
    std :: cout lt; lt; "-Monster manqué!"- lt; lt; std :: endl-
    }
    // Vérifiez si le monstre a frappé votre personnage
    if (uiAttack2 lt; qrDefender.muiAttack &Amp&Amp uiDefense1 gt; muiDefense) {
    --muiHitPoints-
    std :: cout lt; lt; "-Hero Hit!"- lt; lt; std :: endl-
    } Else {
    std :: cout lt; lt; "-héros manqué!"- lt; lt; std :: endl-
    }
    std :: cout lt; lt; "-Vos Repères:"- lt; lt; muiHitPoints lt; lt; std :: endl-
    std :: cout lt; lt; &Repères quot-monstre:"- lt; lt; qrDefender.muiHitPoints lt; lt; std :: endl-
    }
    bool IsDead () {
    retour (muiHitPoints == 0) -
    }

    privé:

    unsigned int muiAttack-
    unsigned int muiDefense-
    unsigned int muiHitPoints-

    };

    Cette classe initialise les trois attributs: attaque, défense et-points touchés. Il utilise ensuite un algorithme d'attaque pour déterminer si l'attaque a réussi, les dégâts de l'attaque et les autres points touchés.

  3. Créer une nouvelle classe qui représente votre "cachot" comme un tableau bi-dimensionnelle en utilisant ce code:



    classe CDungeon {
    publique:

    CDungeon () {
    // Création d'un labyrinthe vide
    omble caaMaze [10] [11] = {
    " - **********"-,
    "- * ** ** *"-,
    "- * * ** *"-,
    " - **"-,
    "- * * *** *"-,
    "- * ** *** *"-,
    "- * * * *"-,
    "- * ** *"-,
    "- * * *** *"-,
    " - **********" -} -
    pour (unsigned int uiRow = 0- uiRow lt; 10- uiRow ++) {
    pour (unsigned int uiCol = 0- uiCol lt; 10- uiCol ++) {
    mcaaMaze [uiRow] [uiCol] = caaMaze [uiRow] [uiCol] -
    }
    }
    }
    omble GetMazeSquare (unsigned int uiRow, unsigned int uiCol) {
    retourner mcaaMaze [uiRow] [uiCol] -
    }

    privé:

    omble mcaaMaze [10] [10] -

    };




    Vous pouvez changer la façon dont votre "cachot" et semble en changeant la position de la "*" caractères.

  4. Créez la classe qui contrôle le jeu-play en utilisant ce code:

    CRolePlayingGame de classe
    {
    publique:

    CRolePlayingGame () {
    // Initlialize le générateur de nombres aléatoires
    time_t qTime-
    temps (&li-QTIME) -
    srand ((unsigned int) QTIME);

    // Initialisation de la donjon être vide
    pour (unsigned int uiRow = 0- uiRow lt; 10- uiRow ++) {
    pour (unsigned int uiCol = 0- uiCol lt; 10- uiCol ++) {
    mqpaaCreatures [uiRow] [uiCol] = 0-
    }
    }

    // Création d'un héros
    bool = faussement bFoundSpot
    while (! bFoundSpot) {
    unsigned int uiRow = 1 + (rand ()% 8) -
    unsigned int uiCol = 1 + (rand ()% 8) -
    if (QueryLocation (uiRow, uiCol) == '') {
    bFoundSpot = vrai-
    mqpaaCreatures [uiRow] [] = uiCol &li-mqHero-
    }
    }
    // Création 10 monstres
    bFoundSpot = faussement
    unsigned int uiMonster = 0-
    while (! bFoundSpot) {
    unsigned int uiRow = 1 + (rand ()% 8) -
    unsigned int uiCol = 1 + (rand ()% 8) -
    if (QueryLocation (uiRow, uiCol) == '') {
    mqpaaCreatures [uiRow] [] = uiCol &-mqaMonsters [uiMonster] -
    ++uiMonster-
    if (uiMonster == 10) {
    bFoundSpot = vrai-
    }
    }
    }
    }
    omble QueryLocation (unsigned int uiRow, unsigned int uiCol) {
    pour (unsigned int uIndex = 0- uIndex lt; 10- uIndex ++) {
    if (mqpaaCreatures [uiRow] [uiCol] == &Amp (mqaMonsters [uIndex])) {
    retour (char) ('0' + uIndex) -
    }
    }
    if (mqpaaCreatures [uiRow] [uiCol] == &li-mqHero) {
    retourner 'H'-
    } Else {
    retour mqDungeon.GetMazeSquare (uiRow, uiCol) -
    }
    }
    bool MoveHero (const char kcDirection) {
    unsigned int uiHeroRow-
    unsigned int uiHeroCol-
    LocateCreature (uiHeroRow, uiHeroCol, &li-mqHero) -
    unsigned int uiNextRow = uiHeroRow-
    unsigned int uiNextCol = uiHeroCol-
    interrupteur (kcDirection) {
    cas 'w':
    cas 'W':
    {
    --uiNextRow-
    percée
    }
    's' cas:
    cas 'S':
    {
    ++uiNextCol-
    percée
    }
    cas «z»:
    cas 'Z':
    {
    ++uiNextRow-
    percée
    }
    cas 'a':
    cas «A»:
    {
    --uiNextCol-
    percée
    }
    par défaut:
    {
    retourner faussement
    }
    }
    omble cNextLoc = QueryLocation (uiNextRow, uiNextCol) -
    if (cNextLoc == '') {
    mqpaaCreatures [uiNextRow] [] = uiNextCol &li-mqHero-
    mqpaaCreatures [uiHeroRow] [uiHeroCol] = 0-
    retourner vrai-
    } Else if (cNextLoc gt; = '0' &Amp&Amp cNextLoc lt; = '9') {
    mqHero.Attack (mqaMonsters [(int) (cNextLoc - '0')]) -
    retourner vrai-
    } Else {
    retourner faussement
    }
    }
    vide plaquette électronique () {
    using namespace STD
    pour (unsigned int uiRow = 0- uiRow lt; 10- uiRow ++) {
    pour (unsigned int uiCol = 0- uiCol lt; 10- uiCol ++) {
    cout lt; lt; QueryLocation (uiRow, uiCol) -
    }
    cout lt; lt; endl-
    }
    }
    bool HeroIsDead () {
    retourner mqHero.IsDead () -
    }
    RemoveDeadMonsters void () {
    pour (unsigned int uiIndex = 0- uiIndex lt; 10- uiIndex ++) {
    if (mqaMonsters .IsDead [uiIndex] ()) {
    unsigned int uiRow-
    unsigned int uiCol-
    if (LocateCreature (uiRow, uiCol, &Amp (mqaMonsters [uiIndex]))) {
    mqpaaCreatures [uiRow] [uiCol] = 0-
    std :: cout lt; lt; "-monstre tué!"- lt; lt; std :: endl-
    }
    }
    }
    }
    bool AllMonstersDead () {
    bool bAllDead = vrai-
    pour (unsigned int uiIndex = 0- uiIndex lt; 10- uiIndex ++) {
    if (! mqaMonsters [uiIndex] .IsDead ()) {
    bAllDead = faussement
    }
    }
    retourner bAllDead-
    }

    privé:

    bool LocateCreature (unsigned int&Amp uirRow, unsigned int&Amp uirCol, CCreature * qpCreature) {
    pour (unsigned int uiRow = 0- uiRow lt; 10- uiRow ++) {
    pour (unsigned int uiCol = 0- uiCol lt; 10- uiCol ++) {
    if (mqpaaCreatures [uiRow] [uiCol] == qpCreature) {
    uirRow = uiRow-
    uirCol = uiCol-
    retourner vrai-
    }
    }
    }
    retourner faussement
    }
    CDungeon mqDungeon-
    CCreature mqHero-
    CCreature mqaMonsters [10] -
    CCreature * mqpaaCreatures [10] [10] -

    };

    Cette classe contrôle les mouvements de votre héros. Tu utilises "W," "A," "S" et "Z" pour déplacer votre personnage. Il engendre également 10 monstres et votre héros dans votre "cachot" et contrôle les interactions entre eux, tels que les décès et les positions.

  5. Créer le programme principal qui appelle les différentes classes et fonctions et interagit avec l'utilisateur. Vous pouvez contrôler divers aspects de votre jeu à partir de ce programme. Utilisez ce code pour créer:

    int main () {

    using namespace STD
    // Effacer le donjon
    CRolePlayingGame qGame-
    bool = faussement bGameOver
    do {
    qGame.PrintBoard () -
    // Obtenir le prochain mouvement
    omble cMove-
    cout lt; lt; "-utilisation W, A, S, Z ou de se déplacer:"- lt; lt; endl-
    std :: cin gt; gt; cMove-
    // Vérifiez si le déménagement est valable
    if (qGame.MoveHero (CDéplacez)) {
    // Si le héros est mort
    if (qGame.HeroIsDead ()) {
    cout lt; lt; "-vous êtes morts!"- lt; lt; endl-
    bGameOver = vrai-
    } Else {
    // Retirer les monstres morts du jeu
    qGame.RemoveDeadMonsters () -
    // Si tous les monstres sont morts
    if (qGame.AllMonstersDead ()) {
    cout lt; lt; "-Donjon Effacé!"- lt; lt; endl-
    bGameOver = vrai-
    }
    }
    }
    } While (bGameOver!) -
    retourner 0-

    }

  6. Compiler votre nouveau projet et l'exécuter pour tester si cela fonctionne comme prévu. Modifier les différents réglages pour améliorer le jeu-play jusqu'à ce que vous êtes satisfait du résultat.

» » » » Comment faire un jeu rpg en c ++