Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Hvordan lage en RPG spill i C + +
    Når du spiller et rollespill , eller RPG , tar du på deg rollen som en imaginær karakter og oppleve sine opplevelser . Disse spillene kan være ganske komplisert og involverer tung grafikk . Utviklere arbeider vanligvis flere måneder på koding og testing spillet. Men kan du lage en enkel RPG spillet i C + + . Videre , du trenger bare å forstå det grunnleggende om C + + programmering. Du kan lage en enkel RPG spillet ved hjelp av en to- dimensjonal array som kartet og noen klasser for å styre figuren din , fiendtlige tegn og selve spillingen . Instruksjoner
    en

    Åpne din favoritt C + + redaktør og starte et nytt prosjekt . Inkludere " iostream " og " ctime " biblioteker ved å bruke denne koden : en

    # include # include
    2

    Opprett en ny klasse som representerer din helt og monstrene i din " dungeon " ved å bruke denne koden : en

    klasse CCreature {public : CCreature ( ) : muiAttack ( 0 ) , muiDefense ( 0 ) , muiHitPoints ( 3 ) { for ( usignert int uiIndex = 0; uiIndex < 3; + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34 ) ; muiDefense = muiDefense + ( rand ( ) % 34 ); muiHitPoints = muiHitPoints + ( rand ( ) % 10 ) ;} } void Attack ( CCreature & qrDefender ) { //Generer et tall mellom 1 og 100unsigned int uiAttack1 = ( rand ( ) % 100 ) + 1; usignert int uiDefense1 = ( rand ( ) % 100 ) + 1; usignert int uiAttack2 = ( rand ( ) % 100 ) + 1; usignert int uiDefense2 = ( rand ( ) % 100 ) + 1 ;//Visste angriperen ( helten ) hit if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Monster Hit " << std :: endl ;} else { std :: cout << " Monster glipp av!" ; << std :: endl ;} //Sjekk om monsterhiten din characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Hero Hit "<< std :: endl ;} else { std :: cout <<" ! Hero Missed "<< std :: endl ;} std :: cout << ; " Dine helsepoeng : " << muiHitPoints << std :: endl; std :: cout << "Monster helsepoeng : " << qrDefender.muiHitPoints << std : : endl ; } bool IsDead ( ) {return ( muiHitPoints == 0 ) ;} private: usignert int muiAttack ; usignert int muiDefense ; usignerte int muiHitPoints ;} ;

    Denne klassen initialiserer tre attributter : angrep, forsvar og traff -poeng . Deretter bruker et angrep algoritme for å avgjøre om angrepet var vellykket , skade av angrepet og de ​​resterende hit -poeng .
    3

    Opprett en ny klasse som representerer " dungeon " som en bi- dimensjonal array ved hjelp av denne koden : en

    klasse CDungeon {public : CDungeon ( ) { //Opprett en tom mazechar caaMaze [ 10 ] [ 11 ] = { " ******* *** "," ****** " , " ***** "," ** "," ****** " , " *** **** "," **** "," **** "," ****** " , " ********** " }; for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ]; } } } røye GetMazeSquare ( usignert int uiRow , usignert int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ]; } privat : røye mcaaMaze [ 10 ] [ 10 ]; };

    Du kan endre måten " dungeon " ser ut ved å endre plasseringen av " * " tegn
    4

    Lag klassen som styrer selve spillingen ved å bruke denne koden : .

    klasse CRolePlayingGame {public : CRolePlayingGame ( ) { //Initlialize tilfeldige tall generatortime_t qTime ; tid (& qTime ) ; srand ( ( unsigned int ) qTime ) ;

    //Initialiser dungeon å være emptyfor ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;} }

    //Lag en herobool bFoundSpot = false; ( ! bFoundSpot ) mens { usignert int uiRow = 1 + ( rand ( ) % 8 ) ; usignert int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == '' ) { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Lag 10 monstersbFoundSpot = false; usignert int uiMonster = 0; ! while ( bFoundSpot ) { usignert int uiRow = 1 + ( rand ( ) % 8 ) ; usignert int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == '' ) { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ]; + + uiMonster ; if ( uiMonster == 10 ) { bFoundSpot = true; } } } } røye QueryLocation ( usignert int uiRow , usignert int uiCol ) { for ( usignert int uIndex = 0; uIndex < 10 ; + + uIndex ) { if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & ( mqaMonsters [ uIndex ] ) ) {return ( røye ) ( '0 ' + uIndex ); } } if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & mqHero ) {return ' H '; } else {return mqDungeon.GetMazeSquare ( uiRow , uiCol ); } } bool MoveHero ( const char kcDirection ) { usignert int uiHeroRow ; usignert int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , og ; mqHero ) ; usignert int uiNextRow = uiHeroRow ; usignert int uiNextCol = uiHeroCol ; switch ( kcDirection ) {case 'w ' : case 'W ': { - uiNextRow ; break ;} case ' s' : case ' s ': { + + uiNextCol ; break ;} case ' z ' : case ' Z ': { + + uiNextRow ; break ;} tilfellet 'a' : case 'A ': { - uiNextCol ; break ;} standard : {return false; } } røye cNextLoc = QueryLocation ( uiNextRow , uiNextCol ), hvis ( 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; } } void PrintBoard ( ) { bruker namespace std; for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) {domstol << QueryLocation ( uiRow , uiCol ) ;} cout << endl ;} } bool HeroIsDead ( ) {return mqHero.IsDead (); } void RemoveDeadMonsters () { for ( usignert int uiIndex = 0; uiIndex < 10; + + uiIndex ) { if ( mqaMonsters [ uiIndex ] IsDead ( . ) ) { usignert int uiRow ; usignert int uiCol ; if ( LocateCreature ( uiRow , uiCol , og ( mqaMonsters [ uiIndex ] ) ) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ; std :: cout << " Monster Drept ! " << std :: endl ;} } } } bool AllMonstersDead ( ) { bool bAllDead = true; for ( usignert int uiIndex = 0 ; uiIndex < 10 , + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } retur bAllDead ;}

    private: bool LocateCreature ( usignert int & uirRow , usignert int & uirCol , CCreature * qpCreature ) { for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert 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 ]; };

    Denne klassen styrer helten din bevegelse. Du bruker " W ", " A ", " S" og " Z " for å bevege figuren din . Den gyter også 10 monstre og helten inni " dungeon " og styrer samspillet mellom dem , for eksempel dødsfall og posisjoner.
    5

    Lag hovedprogrammet som kaller de ulike klasser og funksjoner og samhandler med brukeren. Du kan kontrollere ulike aspekter av spillet fra dette programmet . Bruk denne koden for å lage det : en

    int main ( ) { bruker namespace std ;//Fjern dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard ( ) ;//Få neste movechar cMove ; cout << " bruk W , A , S eller Z for å flytte : " << endl; std :: cin >> cMove ;//Sjekk om farten er validif ( qGame.MoveHero ( cMove ) ) { //Hvis helten er deadif ( qGame.HeroIsDead ( ) ) {domstol << " Du har dødd ! " << endl; bGameOver = true; } else { //Fjern døde monstre fra gameqGame.RemoveDeadMonsters () ;//Hvis alle monstrene er deadif ( qGame.AllMonstersDead ( ) ) {domstol << "Dungeon Slettet ! " << endl; bGameOver = true ; } } } } while ( bGameOver ! ), tilbake 0 ;}
    6

    Kompiler nytt prosjekt og kjøre den for å teste om det fungerer som du forventer. Endre forskjellige innstillinger for å forbedre game-play til du er fornøyd med resultatet.

    früher :

     Weiter:
      Relatert Artike
    ·Slik viser prosenter i C + + 
    ·Slik leser du i Strings Into Array C + + 
    ·Hvordan implementere en algoritme til datamaskinen 
    ·Hvordan lage en applet & C + + 
    ·Visual C Component Object Model Tutorial 
    ·Slik konverterer Radians til grader i C + + språk i tr…
    ·Slik begrenser du desimal i C Språk 
    ·Typer Variable attributtdata 
    ·Sette inn en Array i det første elementet hjelp av C +…
    ·Hvordan forstå C + + kompilatorer 
      Anbefalte artikler
    ·Heap Vs . Stable i Java 
    ·Slik fjerner du APP_NAME Bar fra Android 
    ·Hvordan Split i Java 
    ·Hvordan å manipulere XLS filer med Python 
    ·Hva er numerisk variabel Tegn 
    ·Slik viser det første elementet i ComboBox Drop -down …
    ·Slik Clear Up en Listbox i Python 
    ·Microsoft Visual Studio 2008 krav 
    ·Fordelene av funksjon Prototyper 
    ·Hvordan skrive et program i C for metriske konvertering…
    Copyright ©  Datamaskin  http://www.datamaskin.biz/