Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur man gör ett RPG spel i C + +

    När du spelar ett rollspel , eller RPG , du tar på sig rollen av en imaginär karaktär och uppleva dess äventyr . Dessa spel kan vara ganska komplicerat och involverar tung grafik . Utvecklare arbetar oftast flera månader på kodning och testa spelet . Däremot kan du skapa en enkel RPG spel i C + + . Dessutom behöver du bara förstå grunderna i C + + programmering . Du kan skapa en enkel RPG spel genom att använda en tvådimensionell array som kartan och några klasser för att styra din karaktär , karaktärerna fienden och spelet . Instruktioner
    1

    Öppna din favorit C + + editor och starta ett nytt projekt . Inkludera " iostream " och " ctime " bibliotek med hjälp av denna kod :

    # include # include
    2

    Skapa en ny klass som representerar din hjälte och monster i din " dungeon " med hjälp av denna kod :

    class 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 ) ; } } void Attack ( CCreature & qrDefender ) { //Skapa en tal mellan 1 100unsigned och int uiAttack1 = ( rand ( ) % 100 ) + 1 ; unsigned int uiDefense1 = ( rand ( ) % 100 ) + 1 ; unsigned int uiAttack2 = ( rand ( ) % 100 ) + 1 ; unsigned int uiDefense2 = ( rand ( ) % 100 ) + 1 ;//Gjorde angriparen ( hjälten ) hit om ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints , std :: cout << " ! monsterhiten " << std :: endl; } else { std :: cout << " Monster Missed ! " ; << std :: endl; } //Kontrollera om monsterhiten din characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints , std :: cout << " , hjälte Hit " << std :: endl; } else { std :: cout << " ! hjälte Missade " << std :: endl; ! } std :: cout << , " Dina Hitpoints : " << muiHitPoints << std :: endl; std :: cout << " Monster Hitpoints : " << qrDefender.muiHitPoints << std : : endl ; } bool IsDead ( ) {return ( muiHitPoints == 0 ) ; } private : unsigned int muiAttack , unsigned int muiDefense , unsigned int muiHitPoints ;} ;

    Denna klass initierar tre attribut : attack , försvar och hit - poäng . Den använder sedan en attack algoritm för att avgöra om attacken var lyckad , skadorna av attacken och de återstående träff - punkter .
    3

    Skapa en ny klass som representerar din " dungeon " som en tvådimensionell array med hjälp av denna kod :

    class CDungeon {public : CDungeon ( ) { //Skapa en tom mazechar caaMaze [ 10 ] [ 11 ] = { " ******* *** " , " ****** " , " ***** " , " ** " , " ****** " , " *** **** " , " **** " , " **** " , " ****** "," ********** " }; för ( unsigned int uiRow = 0 ; uiRow < 10 , + + uiRow ) {for ( unsigned int uiCol = 0 ; uiCol < 10 , + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ; } } } röding GetMazeSquare ( unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ; } private : char mcaaMaze [ 10 ] [ 10 ] ;} ;

    Du kan ändra hur ditt " dungeon " ser ut genom att ändra läget av " * " tecken
    4

    Skapa den klass som styr spelet med hjälp av denna kod : .

    klass CRolePlayingGame {public : CRolePlayingGame ( ) { //Initlialize det slumpmässiga qTime numret generatortime_t , tid ( & qTime ) , srand ( ( unsigned int ) qTime ) ;

    //initiera fängelsehålan vara emptyfor ( unsigned int uiRow = 0 ; uiRow < 10 , + + uiRow ) {for ( unsigned int uiCol = 0 ; uiCol < 10 , + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;}}

    //Skapa ett herobool bFoundSpot = false ; ( ! bFoundSpot ) medan { unsigned int uiRow = 1 + ( rand ( ) % 8 ) , unsigned int uiCol = 1 + ( rand ( ) % 8 ) , om ( QueryLocation ( uiRow , uiCol ) == "") { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Skapa 10 monstersbFoundSpot = false; unsigned int uiMonster = 0 ; ! stund ( bFoundSpot ) { unsigned int uiRow = 1 + ( rand ( ) % 8 ) , unsigned int uiCol = 1 + ( rand ( ) % 8 ) , om ( QueryLocation ( uiRow , uiCol ) == "") { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ] ; + + uiMonster , om ( uiMonster == 10 ) { bFoundSpot = true; } } } } röding QueryLocation ( 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; } case ' z ' : case ' Z ' : { + + uiNextRow , break; } case ' a ' : case ' A ' : { - uiNextCol , break ; } default : {return false ; } } röding cNextLoc = QueryLocation ( uiNextRow , uiNextCol ) , om ( 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 Kretskort ( ) { using namespace std ; för ( unsigned int uiRow = 0; uiRow < 10 , + + uiRow ) {for ( unsigned int uiCol = 0; uiCol < 10 , + + uiCol ) { cout << QueryLocation ( uiRow , uiCol ) ; } cout << endl; } } bool HeroIsDead ( ) {return mqHero.IsDead ( ) ; } void RemoveDeadMonsters () { för ( unsigned int uiIndex = 0; uiIndex < 10 , + + uiIndex ) {if ( mqaMonsters [ uiIndex ] IsDead ( . ) ) { unsigned int uiRow , unsigned int uiCol , om ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ) ) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << " Monster dödade ! " << std :: endl; } } } } bool AllMonstersDead ( ) { bool bAllDead = true; för ( unsigned int uiIndex = 0 ; uiIndex < 10 , + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! . ) } retur bAllDead ;}

    privat : bool LocateCreature ( 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 ] ;} ;

    Denna klass styr din hjälte rörelse . Du använder " W ", " A ", " S " och " Z " för att flytta din karaktär . Den leker också 10 monster och din hjälte i din " dungeon " och styr samspelet mellan dem , såsom dödsfall och positioner .
    5

    Skapa huvudprogrammet som anropar de olika klasser och funktioner och interagerar med användaren. Du kan styra olika aspekter av ditt spel från det här programmet . Använd denna kod för att skapa det :

    int main ( ) { hjälp ;/namespace std /rensa dungeonCRolePlayingGame qGame , bool bGameOver = false; do { qGame.PrintBoard ( ) ;//Hämta nästa movechar cMove ; cout << " Använd W , A , S eller Z för att flytta : " << endl; std :: cin >> cMove ;//Kontrollera om flytten är validif ( qGame.MoveHero ( cMove ) ) { //Om hjälten är deadif ( qGame.HeroIsDead ( ) ) { cout << " Du har dött ! " << endl; bGameOver = true; } else { //ta bort de döda monster från gameqGame.RemoveDeadMonsters ( ) ;//Om alla monster är deadif ( qGame.AllMonstersDead ( ) ) { cout << " Dungeon rensade! " << endl; bGameOver = true ; } } } } while ( bGameOver ! ) , avkastning 0; }
    6

    Kompilera ditt nya projekt och kör den för att testa om det fungerar som du förväntar dig . Ändra olika inställningar för att förbättra spelet tills du är nöjd med resultatet .

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur konvertera alfabetiska Strängar i C + +
    ·Så se koden en Visual C Projekt
    ·Funktion i C för Palindrommar
    ·Hur konvertera till Hex Använda C + +
    ·Hur Dölj objekt Implementering i C + +
    ·Hur man skapar en Pk3 Arkiv
    ·Hur man gör en matris av Strings
    ·Hur man skriver en C + + Genomsnittlig Program
    ·Hur man gör en Stickman i C + +
    ·Hur får Grafik i C + +
    Utvalda artiklarna
    ·Hur Omvänd Numbers på Visual Basic
    ·Ta bort SQLite i C
    ·Hur radera från Oracle & SQL
    ·Hur du startar Xcode på en Mac OS
    ·Komma åt public class Variabler i Java
    ·Skillnaden i tryck och Echo i PHP
    ·Hur man gör en JavaScript-motor
    ·Hur bli av en ny rad i Python
    ·Hur till Bädda börskurslistor
    ·Ta bort en sträng Efter en Cue i PHP
    Copyright © Dator Kunskap http://www.dator.xyz