| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> C /C + + Programming >> Content
    Hvordan laver man et RPG spil i C + +
    Når der afspilles en rollespil eller RPG, du tager rollen som en imaginær karakter og opleve dens eventyr. Disse spil kan være meget komplekse og involverer tunge grafik . Udviklere arbejder normalt flere måneder om kodning og test af spillet. Men du kan oprette en simpel RPG spil i C + +. Desuden skal du bare nødt til at forstå det grundlæggende i C + + programmering. Du kan oprette en simpel RPG spil ved hjælp af en to - dimensionel array som kort og et par klasser til at styre din karakter, de fjendtlige figurer og game-play . Instruktioner
    1

    Åbn din favorit C + + editor og starte et nyt projekt . Nævnes " iostream " og " ctime " biblioteker ved hjælp af denne kode : Hej

    # include # include
    2

    Opret en ny klasse, repræsenterer din helt og monstrene i din " dungeon " ved hjælp af denne kode : Hej

    class CCreature { public: CCreature (): muiAttack (0), muiDefense (0), muiHitPoints (3 ) { for (usignerede int uiIndex = 0; uiIndex <3 , + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34 ), muiDefense = muiDefense + ( rand ( ) % 34 ), muiHitPoints = muiHitPoints + ( rand ( ) % 10 ) ;}} void Attack ( CCreature & qrDefender ) {//Generer et tal mellem 1 og 100unsigned int uiAttack1 = ( rand ( ) % 100) + 1 , unsigned int uiDefense1 = ( rand ( ) % 100) + 1 , unsigned int uiAttack2 = ( rand ( ) % 100) + 1 , unsigned int uiDefense2 = ( rand ( ) % 100) + 1 ;//Gjorde angriberen ( helten ) hit , hvis ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints , std :: cout << " ! Monster Hit " << std :: endl; } else { std :: cout << "Monster Missed ! " , << std :: endl; } //Tjek om uhyret ramme din characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints , std :: cout << " , Hero Hit "<< std :: endl; } else { std :: cout <<" ! Hero Mistede "<< std :: endl; ! } std :: cout << ; "Dine livspoints : " << muiHitPoints << std :: endl; std :: cout << " Monster livspoints : " << qrDefender.muiHitPoints << std : : endl; } bool IsDead () {return ( muiHitPoints == 0 );} private : unsigned int muiAttack , unsigned int muiDefense , unsigned int muiHitPoints ;} ;

    Denne klasse initialiserer de tre attributter : angreb, forsvar og hit- points . Derefter bruger et angreb algoritme til at afgøre, om angrebet var en succes , beskadigelse af angrebet , og de resterende hit -points .
    3

    Opret en ny klasse , der repræsenterer din " dungeon " som en bi- dimensionelle array ved hjælp af denne kode : Hej

    class CDungeon { public: CDungeon () { //Opret en tom mazechar caaMaze [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 (usignerede int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ;} private : char mcaaMaze [10] [10] };
    p Du kan ændre den måde, din " dungeon " ligner ved at ændre placeringen af de " *" tegn
    4

    Opret klasse, der styrer spillet -play ved at bruge denne kode: .

    class CRolePlayingGame { public: CRolePlayingGame () { //Initlialize tilfældige tal generatortime_t QTime , tid (& QTime ), srand ( ( unsigned int ) QTime )

    //Initialiser fangekælder at være emptyfor (usignerede int uiRow = 0; uiRow < 10; + + uiRow ) { for ( unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;}} < br >

    //Opret en herobool bFoundSpot = false; ( ! bFoundSpot ), mens { unsigned int uiRow = 1 + ( rand ( ) % 8) unsigned int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == ' ) { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Opret 10 monstersbFoundSpot = false; unsigned int uiMonster = 0; ! while ( bFoundSpot ) { usigneret int uiRow = 1 + ( rand ( ) % 8) unsigned int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == ' ) { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ] + + uiMonster , hvis ( uiMonster == 10 ) { bFoundSpot = true ;} }}} char QueryLocation (usignerede 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 { tilbage 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; } tilfælde 'a' : case 'A' : { - uiNextCol , break; } default: { return false ;} } char cNextLoc = QueryLocation ( uiNextRow , uiNextCol ), hvis ( cNextLoc == '' ) { mqpaaCreatures [ uiNextRow ] [ uiNextCol ] = &mqHero; mqpaaCreatures [ uiHeroRow ] [ uiHeroCol ] = 0; returnere sandt ;} else if ( cNextLoc > = '0 ' && cNextLoc <= '9' ) { mqHero.Attack ( mqaMonsters [( int ) ( cNextLoc - '0 ' ) ]) returnere sandt ;} else { return false ;}} void printpladen () { 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 () {return mqHero.IsDead (); } void RemoveDeadMonsters () { for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) { if ( mqaMonsters [ uiIndex ] IsDead ( . )) { unsigned int uiRow , unsigned int uiCol , hvis ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ))) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << "Monster Killed ! " << std :: endl; }} }} bool AllMonstersDead () { bool bAllDead = true; for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } tilbagevenden bAllDead ;}

    privat : bool LocateCreature (usignerede 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 , returnere sandt ;} }} return false ;} CDungeon mqDungeon , CCreature mqHero , CCreature mqaMonsters [10] CCreature * mqpaaCreatures [10 ] [10] ;} ; < br >

    Denne klasse styrer din helts bevægelser. Du bruger "W ", " A ", " S " og " Z" til at flytte din karakter. Det er også gyder 10 monstre og din hero inde i din " dungeon " og styrer samspillet mellem dem , såsom dødsfald og holdninger .
    5.

    Opret hovedprogrammet , der kalder de forskellige klasser og funktioner , og interagerer med brugeren . Du kan styre forskellige aspekter af dit spil fra dette program. Brug denne kode til at oprette den : Hej

    int main () { using namespace std ;//Ryd dungeonCRolePlayingGame qGame , bool bGameOver = false; do { qGame.PrintBoard () ;//Hent næste movechar cMove ; cout << " Brug W, A , S eller Z for at flytte : " << endl; std :: cin >> cMove ;//Tjek om flytningen er validif ( qGame.MoveHero ( cMove )) { //Hvis helten er deadif ( qGame.HeroIsDead ( )) { cout << " Du har Died ! " << endl; bGameOver = true ;} else { //Fjern døde monstre fra gameqGame.RemoveDeadMonsters () ;//Hvis alle monstre er deadif ( qGame.AllMonstersDead ( )) { cout << " Dungeon ryddet! " << endl; bGameOver = true ;}} }} while ( bGameOver ! ) return 0 ;}
    6

    Kompiler dit nye projekt og køre det for at teste om det virker som du forventer. Ændre forskellige indstillinger for at forbedre game -play , indtil du er tilfreds med resultatet.

    Forrige :

    næste :
      Relaterede artikler
    ·Sådan Konverter XML til Enum 
    ·Sådan Teach Yourself Windows CE Programmering i 24 tim…
    ·Sådan bruges adgangskoderne i en endimensional Array 
    ·Sådan Unzip en fil i C # 
    ·Sådan oprettes en CAB i Windows Mobile 
    ·Hvordan man laver en Moving graf i C # 
    ·Proces at blive en iPhone Developer 
    ·Sådan bruges denne Pointer i C + + 
    ·Sådan Teach Yourself Visual C 6 
    ·Sådan tilføjes Decimaler i C + + 
      Anbefalede Artikler
    ·Hvordan man åbner en PDF- formular ved hjælp af PHP 
    ·Numerisk Port Fejl i Python 
    ·Sådan Gør Gel Ink 
    ·VBA funktioner 
    ·Sådan oprettes et træ fra en liste i Java 
    ·Sådan Load en String Into en Python ordbog 
    ·Decimal Vs. Antal Datatyper 
    ·Sådan Put betingede udsagn i en JS fil 
    ·Sådan oprettes en Dynamic Link Library 
    ·Sådan bruges Typecast i Java 
    Copyright © Computer Viden http://www.computerdk.com