| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
    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 l'expérience de ses aventures. Ces jeux peuvent être très complexes et impliquent des graphiques lourds . Les développeurs travaillent habituellement plusieurs mois sur le codage et le test du jeu . Cependant, vous pouvez créer un jeu RPG simple dans C + + . En outre, vous avez juste besoin de comprendre les bases de la programmation C + + . Vous pouvez créer un jeu RPG simple en utilisant un tableau à deux dimensions comme la carte et quelques classes pour contrôler votre personnage , les personnages ennemis et le game-play . Instructions
    1

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

    # include # include
    2

    Créer une nouvelle classe représente votre héros et les monstres dans votre " donjon " en utilisant ce code:
    classe

    CCreature {public: CCreature (): muiAttack (0), muiDefense (0), muiHitPoints (3) { for (unsigned int uiIndex = 0; uiIndex <3 ; + + uiIndex ) { muiAttack = muiAttack + ( rand ()% 34); muiDefense = muiDefense + ( rand ()% 34); muiHitPoints = muiHitPoints + ( rand ()% 10) ;}} vide Attack ( CCreature & qrDefender ) {//Générer un nombre entre 1 et 100unsigned int uiAttack1 = ( rand ()% 100) + 1; unsigned int uiDefense1 = ( rand ()% 100) + 1; unsigned int uiAttack2 = ( rand ()% 100) + 1; unsigned int uiDefense2 = ( rand ()% 100) + 1 ;//Est-ce que l'attaquant ( héros ) hit if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Hit Monster " << std :: endl; } else { std :: cout << "Monster manquer! " ; << std :: endl; } //Vérifier si le monstre a frappé votre characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Hero Hit "<< std :: endl; } else { std :: cout <<" ! Hero Maladroit "<< std :: endl ;} std :: cout << , "Vos Points de vie: " << muiHitPoints << std :: endl; std :: cout << " Monster Points de vie :" << qrDefender.muiHitPoints << std : : endl; } bool isdead () {return ( muiHitPoints == 0) ; } private : unsigned int muiAttack ; unsigned int muiDefense ; unsigned int muiHitPoints ;} ;

    Cette classe initialise les trois attributs : attaque, défense et les points de frapper. 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 hit - points.
    3

    créer une nouvelle classe qui représente votre " donjon " comme un tableau bi- dimensionnel en utilisant ce code:
    classe

    CDungeon {public: CDungeon () {//Créer un mazechar caaMaze vide [10] [ 11] = {" ******* *** "," ****** "," ***** "," ** "," ****** "," *** **** "," **** "," **** "," ****** "," ********** " }; for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ;}}} caractères GetMazeSquare (unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ; } private : mcaaMaze char [ 10] [10 ] ;} ;

    Vous pouvez changer la façon dont votre " donjon " ressemble en changeant la position des caractères " *"
    4

    créer la classe qui contrôle le game-play en utilisant ce code: .

    classe CRolePlayingGame {public: CRolePlayingGame () { //Initlialize le QTIME de nombres aléatoires de generatortime_t ; temps ( et QTIME ) ; srand ( (unsigned int) QTIME ) ;

    //Initialisation de la prison pour être emptyfor (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0; }} < br >

    //Créer un herobool bFoundSpot = false; ( ! bFoundSpot ), tandis que { unsigned int uiRow = 1 + ( rand ()% 8); unsigned int uiCol = 1 + ( rand ()% 8); if ( QueryLocation ( uiRow , uiCol ) == ' ') { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Création de 10 monstersbFoundSpot = false; 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 = true; }}}} QueryLocation char ( unsigned int uiRow , unsigned int uiCol ) { for (unsigned int uIndex = 0; uIndex <10 ; + + uIndex ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & ( mqaMonsters [ uIndex ] ) ) {return (char) ('0 ' + uIndex );} } if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & mqHero ) {return 'H' ; } else {return mqDungeon.GetMazeSquare ( uiRow , uiCol );}} bool MoveHero ( kcDirection const char ) {unsigned int uiHeroRow ; unsigned int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , et ; mqHero ) ; unsigned int uiNextRow = uiHeroRow ; unsigned int uiNextCol = uiHeroCol ; switch ( kcDirection ) {case 'w' : case ' W' : { - uiNextRow ; break; } case ' s': case ' s' : { + + uiNextCol ; cas } ' z' ; break : case ' Z' : { + + uiNextRow ; break; } cas 'a' : case ' a' : { - uiNextCol ; break; } défaut : {return false;} } caractères cNextLoc = QueryLocation ( uiNextRow , uiNextCol ) ; if ( cNextLoc == ' ') { mqpaaCreatures [ uiNextRow ] [ uiNextCol ] = &mqHero; mqpaaCreatures [ uiHeroRow ] [ uiHeroCol ] = 0; return true; } else if ( cNextLoc > = '0 ' && cNextLoc < = '9 ') { mqHero.Attack ( mqaMonsters [ (int) ( cNextLoc - '0 ') ] ) ; return true; } else {return false;} } vide printboard () { using namespace std ; for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { cout << QueryLocation ( uiRow , uiCol );} cout << endl; }} bool HeroIsDead () { de mqHero.IsDead de retour (); } RemoveDeadMonsters void () { for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ( mqaMonsters [ uiIndex ] isdead ( . ) ) {unsigned int de uiRow ; unsigned int uiCol ; if ( LocateCreature ( uiRow , uiCol , et ( mqaMonsters [ uiIndex ] ) )) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << " monstre tué! " << std :: endl; }}}} bool AllMonstersDead () { bool bAllDead = true; for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] isdead ( ! ). } return bAllDead ; }

    privé : LocateCreature bool (unsigned int & uirRow , unsigned int & uirCol , CCreature * qpCreature ) { for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == qpCreature ) { uirRow = uiRow ; uirCol = uiCol ; return true; }} } return false;} CDungeon mqDungeon ; CCreature mqHero ; mqaMonsters CCreature [10]; CCreature * mqpaaCreatures [10] [ 10]; }; < br >

    Cette classe contrôle les mouvements de votre héros . Vous utilisez " W ", " A", " S" et "Z" pour déplacer votre personnage . Il génère également 10 monstres et votre héros dans votre " donjon " 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 de ce programme . Utilisez ce code pour créer:

    int main () { using namespace std ;//Effacer le dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard ( ) ;//Obtention de la prochaine movechar CMOVE ; cout << "Utiliser W, A , S ou Z se déplacer : " << endl; std :: cin >> CMOVE ;//Vérifiez si le mouvement est validif ( qGame.MoveHero ( CMOVE ) ) {//Si le héros est deadif ( qGame.HeroIsDead ()) { cout << " Vous êtes morts ! " << endl; bGameOver = true; } else {//Suppression de la mort monstres des gameqGame.RemoveDeadMonsters ( ) ;//Si tous les monstres sont deadif ( qGame.AllMonstersDead ()) { cout << "Dungeon dégagé! " << endl; bGameOver = true; }} } } while ( bGameOver !) ; return 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 la jouabilité jusqu'à ce que vous soyez satisfait du résultat.

    Previous :

    next :
      articles connexes
    ·Comment contrôler Stepper Motors aide Dev- C + + 
    ·Types de Bugs Format String 
    ·Comment apprendre le C # pour les débutants 
    ·Définition de la fonction C + + String 
    ·Comment calculer le nombre d' éléments dans un tablea…
    ·Comment faire un fichier GNU C + + 
    ·Comment remplacer les fonctions de Dev C + + 
    ·Objectif questionnement en programmation C 
    ·Comment programmer l' opérateur reste 
    ·Comment remplacer un texte arbitraire à cordes en C + …
      articles en vedette
    ·Comment imprimer un fichier en Ruby 
    ·Comment convertir un Integer Java à Octets 
    ·Comment faire pour convertir WMA en MP3 dans Visual Bas…
    ·Comment découper un fichier FLAC Avec Dev- C + + 
    ·Comment faire pour télécharger des images avec PHP à…
    ·Comment publier PHP dans un menu déroulant 
    ·Comment déterminer le contrôle avec un courant de mis…
    ·Comment écrire une logique Ladder utilisant Visual Bas…
    ·Comment ouvrir plusieurs fichiers en entrée et sortie …
    ·Comment utiliser LimiteSup en VB6 
    Copyright © Connaissances Informatiques http://fr.wingwit.com