| Home  | Casa  | Hardware  | Networking  | Programmazione  | Software  | Domanda  | Sistemi  |   
Programmazione  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Java Programming

  • Programmazione Javascript

  • PHP /MySQL Programmazione

  • Perl Programming

  • Python Programming

  • rubino Programmazione

  • Nozioni di base di Visual Programming
  •  
    Conoscenza Informatica >> Programmazione >> C /C + + Programming >> Content
    Come fare un gioco RPG in C + +
    Durante la riproduzione di un gioco di ruolo , o RPG , si prende il ruolo di un personaggio immaginario e sperimentare le sue avventure . Questi giochi possono essere molto complesse e coinvolgere grafica pesante . Gli sviluppatori di solito lavorano diversi mesi sulla codifica e test del gioco . Tuttavia, è possibile creare un semplice gioco RPG in C + + . Inoltre , è solo bisogno di capire le basi della programmazione C + + . È possibile creare un semplice gioco RPG utilizzando un array bidimensionale come la carta e un paio di classi per controllare il tuo personaggio , i personaggi nemici e il game-play . Istruzioni
    1

    Apri il tuo preferito editor di C + + e iniziare un nuovo progetto . Includere la " iostream " e librerie " ctime " utilizzando questo codice:

    # include # include
    2

    Creare una nuova classe che rappresenta il vostro eroe e mostri della tua " prigione " , utilizzando questo codice:
    classe

    CCreature {public : CCreature ( ) : muiAttack ( 0 ) , muiDefense ( 0 ) , muiHitPoints ( 3) {for ( unsigned uiIndex int = 0; uiIndex < 3; + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34) ; muiDefense = muiDefense + ( rand ( ) % 34) ; muiHitPoints = muiHitPoints + ( rand ( ) % 10) ; } } vuoto Attack ( CCreature & qrDefender ) { //Genera un numero compreso tra 1 e 100unsigned int uiAttack1 = ( rand ( ) % 100) + 1 ; unsigned int uiDefense1 = ( rand ( ) % 100) + 1 ; unsigned int uiAttack2 = ( rand ( ) % 100) + 1 ; unsigned int uiDefense2 = ( rand ( ) % 100 ) + 1 ;//Ha fatto l'attaccante ( eroe ) colpo se ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! mostro Hit " << std :: endl; } else { std :: cout << "Monster persa ! " , << std :: endl; } //Verifica se il mostro ha colpito il tuo characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " , Eroe Hit " << std :: endl; } else { std :: cout <<" ! Eroe Missed " << std :: endl; ! } std :: cout << , "I tuoi Punti vita : " << muiHitPoints << std :: endl; std :: cout << " Punti Ferita mostro : " << qrDefender.muiHitPoints << std : : endl; } bool IsDead ( ) {return ( muiHitPoints == 0); } private : unsigned int muiAttack ; unsigned int muiDefense ; unsigned int muiHitPoints ; };

    Questa classe inizializza i tre attributi : attacco, difesa e - punti ferita. Viene quindi utilizzato un algoritmo di attacco per determinare se l'attacco ha avuto successo , il danno del colpo rimanenti punti di attacco e .
    3

    Creare una nuova classe che rappresenta la vostra " prigione " come un array bidimensionale , utilizzando questo codice:
    classe

    CDungeon {public : CDungeon ( ) { //crea un mazechar caaMaze vuoto [ 10 ] [ 11 ] = { " ******* *** " , " ****** " , " ***** " , " ** " , " ****** " , " *** **** " , " **** " , " **** " , " ****** " , " ********** " }; for ( unsigned int uiRow = 0; uiRow < 10; + + uiRow ) {for ( unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ; } } } char GetMazeSquare ( unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ; } private : mcaaMaze char [ 10 ] [10]; };

    Puoi cambiare il modo in cui il "Dungeon " si presenta come cambiando la posizione dei caratteri " *"
    4

    creare la classe che controlla il game-play , utilizzando questo codice: .
    classe

    CRolePlayingGame {public : CRolePlayingGame ( ) { //Initlialize il numero casuale generatortime_t QTime ; tempo ( e QTime ) ; srand ( ( unsigned int) QTime ) ;

    //Inizializza il dungeon di essere emptyfor ( unsigned int uiRow = 0; uiRow < 10; + + uiRow ) {for ( unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0; } } < br >

    //Creazione di un herobool bFoundSpot = false; ( ! bFoundSpot ) mentre { unsigned int uiRow = 1 + ( rand ( ) % 8) ; unsigned int uiCol = 1 + ( rand ( ) % 8 ), se ( QueryLocation ( uiRow , uiCol ) == '') { bFoundSpot = true ; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Crea 10 monstersbFoundSpot = false; unsigned int uiMonster = 0; ! mentre ( bFoundSpot ) {unsigned int uiRow = 1 + ( rand ( ) % 8) ; unsigned int uiCol = 1 + ( rand ( ) % 8 ), se ( QueryLocation ( uiRow , uiCol ) == '') { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ] ; + + uiMonster ; se ( 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 ( const char kcDirection ) { unsigned int uiHeroRow ; unsigned int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , & , mqHero ) ; unsigned int uiNextRow = uiHeroRow ; unsigned int uiNextCol = uiHeroCol ; switch ( kcDirection ) {case 'w' : case ' W' : { - uiNextRow ; break; } case ' s ' : case ' s' : { + + uiNextCol ; break; } caso 'z' : case ' Z' : { + + uiNextRow ; break; } case ' a': case ' a' : { - uiNextCol ; break; } default: {return false; } } char cNextLoc = QueryLocation ( uiNextRow , uiNextCol ), se ( 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; } } vuoto 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 ( ) { mqHero.IsDead ritorno (); } RemoveDeadMonsters void ( ) { for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ( mqaMonsters [ uiIndex ] IsDead ( . ) ) { unsigned int uiRow ; unsigned int uiCol ; se ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ) ) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << " mostro ucciso ! " << std :: endl; } } } } bool AllMonstersDead ( ) { bool bAllDead = true; for ( unsigned int uiIndex = 0 ; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! . ) } return bAllDead ; }

    privato : 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 ; CCreature mqaMonsters [ 10 ] ; CCreature * mqpaaCreatures [ 10 ] [10]; } ; < br >

    Questa classe controlla il movimento del tuo eroe . Si utilizza "W ", " A", " S " e "Z" per muovere il personaggio . Esso genera anche 10 mostri e il tuo eroe dentro il vostro " prigione " e controlla le interazioni tra di essi , come ad esempio le morti e le posizioni .
    5

    creare il programma principale che chiama le varie classi e funzioni e interagisce con l'utente . È possibile controllare vari aspetti del tuo gioco di questo programma . Usa questo codice per crearla :

    int main ( ) { using namespace std ;//Cancellare il dungeonCRolePlayingGame qGame ; bGameOver bool = false; do { qGame.PrintBoard ( ) ;//Prendi il prossimo movechar cMove ; cout << "Usa W , a, S , o Z per spostarsi : " << endl; std :: cin >> cMove ;//Verifica se la mossa è validif ( qGame.MoveHero ( cMove ) ) { //Se l'eroe è deadif ( qGame.HeroIsDead ( ) ) { cout << " Voi infatti siete morti ! " << endl; bGameOver = true ; } else { //Rimuovere i morti mostri dalle gameqGame.RemoveDeadMonsters ( ) ;//Se tutti i mostri sono deadif ( qGame.AllMonstersDead ( ) ) { cout << "Dungeon eliminato! " << endl; bGameOver = true ; } } } } while ( bGameOver ! ) ; return 0; }
    6

    Compilare il nuovo progetto ed eseguirlo per verificare se funziona come previsto. Modificare varie impostazioni per migliorare il game-play fino a quando si è soddisfatti del risultato.

    Previous :

    next :
      Articoli Correlati
    ·Come fare il tuo gioco PSP 
    ·Descrizione di C Funzione di sistema 
    ·Qual è lo scopo di un diagramma di flusso di dati 
    ·UNIX C Tutorial 
    ·Come leggere un file HEX con ANSI C 
    ·Che cosa è un Xilinx XPS 
    ·Come compilare DirectX campioni in Visual C 
    ·Come convertire BitArray di Byte 
    ·Come decomprimere un file in C # 
    ·Come fare una GUI in C 
      Articoli in evidenza
    ·Come attivare e disattivare le caselle di testo in Java…
    ·Come concedere l'accesso a un database MySQL 
    ·Come sostituire un Double New Line in PHP 
    ·Come connettersi al database in VBS 
    ·Python Tricks 
    ·Come modificare una PictureBox Immagine Valore 
    ·Come fare certificati per Unsigned Android Apps 
    ·Come chiudere UserForm 
    ·Che cosa sono i simboli del diagramma di flusso ? 
    ·Come stabilire un formato Integer in C + + 
    Copyright © Conoscenza Informatica http://it.wingwit.com