Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Προγραμματισμός C / C++

Πώς να κάνει ένα RPG παιχνίδι σε C + +

Όταν παίζετε ένα παιχνίδι ρόλων , ή RPG , θα αναλάβει το ρόλο ενός φανταστικού χαρακτήρα και την εμπειρία περιπέτειες . Αυτά τα παιχνίδια μπορεί να είναι αρκετά πολύπλοκη και περιλαμβάνει βαριά γραφικά . Προγραμματιστές εργάζονται συνήθως αρκετούς μήνες για την κωδικοποίηση και τον έλεγχο του παιχνιδιού . Ωστόσο , μπορείτε να δημιουργήσετε ένα απλό παιχνίδι RPG σε C + + . Επιπλέον , το μόνο που χρειάζεται να κατανοήσουν τα βασικά της C + + προγραμματισμό . Μπορείτε να δημιουργήσετε ένα απλό παιχνίδι RPG χρησιμοποιώντας ένα δισδιάστατο πίνακα ως χάρτη και μερικά μαθήματα για τον έλεγχο του χαρακτήρα σας , τους χαρακτήρες του εχθρού και το παιχνίδι-παιχνίδι . Οδηγίες
Η

1 Ανοίξτε τον αγαπημένο C + +, το πρόγραμμα σας και να ξεκινήσετε ένα νέο έργο . Συμπεριλάβετε την « iostream " και " ctime " βιβλιοθήκες , χρησιμοποιώντας αυτόν τον κώδικα :

# include # include 2

Δημιουργήστε μια νέα κλάση που αντιπροσωπεύει τον ήρωά σου και τα τέρατα στο " μπουντρούμι " σας χρησιμοποιώντας αυτόν τον κώδικα :

τάξη CCreature { public: CCreature ( ) : muiAttack ( 0 ) , muiDefense ( 0 ) , muiHitPoints ( 3 ) { για ( ανυπόγραφο int uiIndex = 0 ? uiIndex < 3 ? + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34) ? muiDefense = muiDefense + ( rand ( ) % 34) ? muiHitPoints = muiHitPoints + ( rand ( ) % 10 ) ? } } void επίθεση ( CCreature & qrDefender ) { //Δημιουργήστε ένα αριθμό μεταξύ 1 και 100unsigned int uiAttack1 = ( rand ( ) % 100 ) + 1 ? unsigned int uiDefense1 = ( rand ( ) % 100 ) + 1 ? unsigned int uiAttack2 = ( rand ( ) % 100 ) + 1 ? unsigned int uiDefense2 = ( rand ( ) % 100 ) + 1 ;//Μήπως ο εισβολέας ( ήρωας ) χτύπησε εάν ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . " ! Monster Missed" - muiDefense ) { . qrDefender muiHitPoints ? ? std :: cout << " ! Monster Hit " << std :: endl } else { std :: cout << ? << std :: endl ? } //Έλεγχος αν το τέρας χτύπησε characterif σας ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ? std :: cout << " ? Hero Hit " << std :: endl ? } else { std :: cout << " ! Hero Αναπάντητες " << std :: endl ? } std :: cout << ? " βαθμοί υγείας σου : " << muiHitPoints << std :: endl ? std :: cout << " βαθμοί υγείας Monster : " << qrDefender.muiHitPoints << std : : endl ? } bool IsDead ( ) { return ( muiHitPoints == 0 ) ? } ιδιωτικά : unsigned int muiAttack ? unsigned int muiDefense ? unsigned int muiHitPoints ? } ?

Η κατηγορία αυτή προετοιμάζει τις τρεις ιδιότητες : επίθεση, άμυνα και χτύπησε σημεία . Στη συνέχεια, χρησιμοποιεί έναν αλγόριθμο επίθεση για να καθορίσει εάν η επίθεση ήταν επιτυχής , η ζημία της επίθεσης και τα υπόλοιπα σημεία που επλήγησαν .
Εικόνων 3

Δημιουργήστε μια νέα κλάση που αντιπροσωπεύει " μπουντρούμι " σας ως δισδιάστατη συστοιχία με τη χρήση αυτού του κώδικα :

τάξη CDungeon { κοινό: CDungeon ( ) { //Δημιουργία άδειο mazechar caaMaze [ 10 ] [ 11 ] = { " ******* *** "," ****** "," ***** " , " ** " , " ****** "," *** **** "," **** "," **** "," ****** "," ********** " } ? για ( unsigned int uiRow = 0 ? uiRow < 10 ? + + uiRow ) { για ( unsigned int uiCol = 0 ? uiCol < 10 ? + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ? } } } char GetMazeSquare ( unsigned int uiRow , unsigned int uiCol ) {επιστροφή mcaaMaze [ uiRow ] [ uiCol ] ? } private: char mcaaMaze [ 10 ] [ 10 ] ? } ?

Μπορείτε να αλλάξει τον τρόπο " μπουντρούμι " σας μοιάζει με την αλλαγή της θέσης των " * " χαρακτήρες
Η 4

Δημιουργήστε την τάξη που ελέγχει το παιχνίδι-παιχνίδι , χρησιμοποιώντας αυτόν τον κώδικα : .

τάξη CRolePlayingGame { κοινό: CRolePlayingGame ( ) { //Initlialize ο τυχαίος αριθμός generatortime_t qTime ? χρόνο ( & qTime ) ? srand ( ( unsigned int ) qTime ) ?

//Αρχικοποίηση το μπουντρούμι για να emptyfor ( unsigned int uiRow = 0 ? uiRow < 10 ? + + uiRow ) { για ( unsigned int uiCol = 0 ? uiCol < 10 ? + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ? } } < br >

//Δημιουργία herobool bFoundSpot = false ? ενώ ( bFoundSpot ! ) { unsigned int uiRow = 1 + ( rand ( ) % 8 ) ? unsigned int uiCol = 1 + ( rand ( ) % 8 ) ? αν ( QueryLocation ( uiRow , uiCol ) == "" ) { bFoundSpot = true ? mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Δημιουργία 10 monstersbFoundSpot = false ? unsigned int uiMonster = 0 ? ενώ ( bFoundSpot ) { ανυπόγραφο ! int uiRow = 1 + ( rand ( ) % 8 ) ? unsigned int uiCol = 1 + ( rand ( ) % 8 ) ? αν ( QueryLocation ( uiRow , uiCol ) == "" ) { mqpaaCreatures [ uiRow ] [ uiCol ] = & ? mqaMonsters [ uiMonster ] ? + + uiMonster ? εάν ( uiMonster == 10 ) { bFoundSpot = true ? } } } } char QueryLocation ( unsigned int uiRow , unsigned int uiCol ) { για ( unsigned int uIndex = 0 ? uIndex < 10 ? + + uIndex ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & ( mqaMonsters [ uIndex ] ) ) { επιστροφή ( char ) ( '0 ' + uIndex ) ? } } αν ( mqpaaCreatures [ uiRow ] [ uiCol ] == & mqHero ) { επιστροφή «H» ? } else {επιστροφή 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 ? διακόπτη ( kcDirection ) { περίπτωση «w» : υπόθεση « W » : { - uiNextRow ? διάλειμμα? } περίπτωση «s» : υπόθεση «S» : { + + uiNextCol ? σπάσει? } περίπτωση «z» : υπόθεση « Ζ » : { + + uiNextRow ? διάλειμμα? } περίπτωση «α» : περίπτωση «Α» : { - uiNextCol ? διάλειμμα? } προεπιλογή: { επιστροφή ψευδείς? } } char cNextLoc = QueryLocation ( uiNextRow , uiNextCol ) ? αν ( 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 ( ) { using namespace std ? για ( unsigned int uiRow = 0 ? uiRow < 10 ? + + uiRow ) { για ( unsigned int uiCol = 0 ? uiCol < 10 ? + + uiCol ) { cout << QueryLocation ( uiRow , uiCol ) ? } cout << endl ? } } bool HeroIsDead ( ) {επιστροφή mqHero.IsDead ( ) ? } void RemoveDeadMonsters ( ) { για ( unsigned int uiIndex = 0 ? uiIndex < 10 ? + + uiIndex ) { εάν ( mqaMonsters [ uiIndex ] IsDead ( . ) ) { unsigned int uiRow ? unsigned int uiCol ? εάν ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ) ) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ? std :: cout << "Monster σκότωσε ! " << std :: endl ? } } } } bool AllMonstersDead ( ) { bool bAllDead = true ? για ( unsigned int uiIndex = 0 ? uiIndex < 10 ? + + uiIndex ) { αν ) { bAllDead = false ? } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } επιστροφή bAllDead ? }

private: bool LocateCreature ( unsigned int & uirRow , unsigned int & uirCol , CCreature * qpCreature ) { για ( unsigned int uiRow = 0 ? uiRow < 10 ? + + uiRow ) { για ( unsigned int uiCol = 0 ? uiCol < 10 ? + + uiCol ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == qpCreature ) { uirRow = uiRow ? uirCol = uiCol ? return true ? } } } επιστροφή ψευδείς? } CDungeon mqDungeon ? CCreature mqHero ? CCreature mqaMonsters [ 10 ] ? CCreature * mqpaaCreatures [ 10 ] [ 10 ] ? } ? < br >

Η κατηγορία αυτή ελέγχει την κίνηση του ήρωά σας . Μπορείτε να χρησιμοποιήσετε " W ", " A", " S" και "Z" για να μετακινήσετε τον χαρακτήρα σας . Ωοτοκεί επίσης 10 τέρατα και ήρωα σας μέσα " μπουντρούμι " σας και ελέγχει τις αλληλεπιδράσεις μεταξύ τους , όπως οι θάνατοι και οι θέσεις .
5

Δημιουργήστε το κύριο πρόγραμμα που καλεί τις διάφορες κατηγορίες και λειτουργίες και αλληλεπιδρά με το χρήστη. Μπορείτε να ελέγξετε τις διάφορες πτυχές του παιχνιδιού σας από αυτό το πρόγραμμα . Χρησιμοποιήστε αυτόν τον κωδικό για να το δημιουργήσετε :

int main ( ) { using namespace std ;//Clear η dungeonCRolePlayingGame qGame ? Bool bGameOver = false ? Do { qGame.PrintBoard ( ) ;//Αποκτήστε το επόμενο movechar cMove ? cout << "Χρήση W , A, S , Z ή να μετακινήσετε : " << endl ? std :: cin >> cMove ;//Ελέγξτε εάν η κίνηση είναι validif ( qGame.MoveHero ( cMove ) ) { //Αν ο ήρωας είναι deadif ( qGame.HeroIsDead ( ) ) { cout << " Έχετε Πέθανε ! " << endl ? bGameOver = true ? } else { //Κατάργηση των νεκρών τέρατα από την gameqGame.RemoveDeadMonsters ( ) ;//Αν όλα τα τέρατα είναι deadif ( qGame.AllMonstersDead ( ) ) { cout << " Dungeon Cleared ! " << endl ? bGameOver = true ? } } } } while ( bGameOver ! ) ? επιστροφή 0? }
Η 6

Συντάξτε το νέο σχέδιό σας και να το εκτελέσετε για να ελέγξετε αν λειτουργεί όπως θα περιμένατε . Αλλάξετε διάφορες ρυθμίσεις για να βελτιώσει το παιχνίδι -παιχνίδι , μέχρι να είστε ικανοποιημένοι με το αποτέλεσμα .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα