Πώς να δημιουργήσετε ένα βασικό παιχνίδι που βασίζεται σε κείμενο στη C++

Pos Na Demiourgesete Ena Basiko Paichnidi Pou Basizetai Se Keimeno Ste C



Τα παιχνίδια που βασίζονται σε κείμενο βασίζονται σε χαρακτήρες κειμένου και μια διεπαφή γραμμής εντολών για αλληλεπίδραση με τον παίκτη. Δεν έχουν γραφικές εικόνες, ήχους ή κινούμενα σχέδια. Ο χρήστης εισάγει την εντολή μέσω του παραθύρου της κονσόλας.

Πώς να δημιουργήσετε ένα βασικό παιχνίδι που βασίζεται σε κείμενο στη C++

Τα παιχνίδια που βασίζονται σε κείμενο στη C++ επιτρέπουν στον παίκτη να εισάγει εντολές μέσω ενός παραθύρου κονσόλας και το πρόγραμμα επεξεργάζεται τις κινήσεις του παίκτη. Εδώ, έχω δημιουργήσει ένα παιχνίδι tic-tac-toe που βασίζεται σε κείμενο που επιτρέπει στον χρήστη να παίξει δύο επιλογές. Ο χρήστης μπορεί είτε να παίξει με τον μεταγλωττιστή C++ είτε με έναν συνάνθρωπο. Αυτό το παιχνίδι έχει μια δυνατότητα που συνεχώς προσθέτει το σκορ για τον παίκτη που κερδίζει. Αφού ανακοινωθεί το αποτέλεσμα του πρώτου παιχνιδιού, είναι διαθέσιμη μια επιλογή ρεβάνς.

Κανόνες για να κερδίσετε το παιχνίδι

Δύο παίκτες παίζουν ένα παιχνίδι tic-tac-toe, τοποθετώντας το X και το 0 εναλλακτικά σε έναν από τους εννέα διαθέσιμους χώρους σε ένα πλέγμα τρία προς τρία. Το παιχνίδι κερδίζεται από τον πρώτο παίκτη που θα λάβει τρεις από τους διαδοχικούς βαθμούς του σε κάθετη, οριζόντια ή διαγώνια κατεύθυνση. Κάθε παίκτης πρέπει να σκεφτεί έξυπνα και να κοιτάξει μπροστά στην επόμενη κίνηση του άλλου παίκτη.







Ο κώδικας για το σχεδιασμό ενός παιχνιδιού tic-tac-toe που βασίζεται σε κείμενο έχει διαφορετικές ενότητες, χωρισμένες με βάση τη λειτουργικότητα. Στην πρώτη ενότητα, ο χρήστης αποφασίζει αν θα παίξει με υπολογιστή ή συνάνθρωπο. Αφού αποφασίσει τον τρόπο απολαβής, το πρόγραμμα ζητά από τον χρήστη στοιχεία. Και οι δύο παίκτες εισάγουν το ένα μετά το άλλο.



//Λήψη πληροφοριών από παίκτες
κενός playerInput ( Παίχτης & παίχτης ) {
ενθ pos ;
cout << endl ;
cout << ' \ t ' << παίχτης. getName ( ) << ' Στροφή: ' ;
cout << ' \ t Εισαγάγετε τη θέση ' <> pos ;
pos - = 1 ;
αν ( κενόΕυρετήριο [ pos ] == 1 ) {
cout << '-----Η θέση δεν είναι κενή-------' << endl ;
playerInput ( παίχτης ) ;
} αλλού {
κενόΕυρετήριο [ pos ] = 1 ;
κενός αριθμός - = 1 ;
παίχτης. getName ( ) . συγκρίνω ( 'Παίκτης Ι' ) == 0 ? σανίδα [ pos ] = 'Χ' : σανίδα [ pos ] = 'Ο' ;
}

}

Αφού λάβει στοιχεία από τον χρήστη, ελέγχει τον κανόνα νίκης. Η συνάρτηση checkWin() έχει δύο παραμέτρους p1 και p2 για να ελέγξει αν ο παίκτης έχει κερδίσει ή όχι. Διαφορετικές μεταβλητές δηλώνονται στη συνάρτηση i, j και k είναι ακέραιες μεταβλητές που δηλώνονται για τον βρόχο και η σημαία είναι μια Boolean συνάρτηση για τον έλεγχο της συνθήκης νίκης. Ο βρόχος ξεκινά από την πρώτη κιόλας θέση και συνεχίζει να επαναλαμβάνεται και για τις εννέα θέσεις. Το first_symbol είναι ένας χαρακτήρας που μπορεί να είναι 0 ή X, εάν είναι αληθής, τότε όλοι οι πιθανοί συνδυασμοί ελέγχονται για τον κανόνα νίκης. Διαφορετικά, ο επαναλήπτης μετακινείται στην επόμενη θέση και το ίδιο συνεχίζει μέχρι να ελεγχθούν όλες οι πιθανές θέσεις. Εάν η σημαία έχει οριστεί ως true, τότε ανακηρύσσεται νικητής και το πρόγραμμα ζητά να κάνει ξανά την επιλογή.



κενός checkWin ( Παίχτης & p1, Player & p2 ) {
ενθ i,j,k ;
bool σημαία = ψευδής ;
απανθρακώνω πρώτο_σύμβολο ;
Για ( Εγώ = 0 ; Εγώ < 8 ; Εγώ ++ ) {
πρώτο_σύμβολο = σανίδα [ winlist [ Εγώ ] . σειρά [ 0 ] ] ;

αν ( ( πρώτο_σύμβολο ! = 'Χ' ) && ( πρώτο_σύμβολο ! = 'Ο' ) ) {
σημαία = ψευδής ;
να συνεχίσει ;
}
σημαία = αληθής ;
Για ( ι = 0 ; ι < 3 ; ι ++ ) {
αν ( πρώτο_σύμβολο ! = σανίδα [ winlist [ Εγώ ] . σειρά [ ι ] ] ) {
σημαία = ψευδής ;
Διακοπή ;
}
}
αν ( σημαία ) {
παιχνίδι Ενεργοποιημένο = 0 ;
αν ( πρώτο_σύμβολο == 'Χ' ) {
cout << '------------------------' << endl ;
cout << ' \ t Παίκτης που ΚΕΡΔΙΣΑ' << endl ;
cout << '------------------------' << endl ;
p1. Κέρδισε ( ) ;
} αλλού {
p2. Κέρδισε ( ) ;
αν ( ενάντια στον υπολογιστή ) {
cout << '------------------------' << endl ;
cout << ' \ t Ο υπολογιστής κέρδισε' << endl ;
cout << '------------------------' << endl ;
} αλλού {
cout << '------------------------' << endl ;
cout << ' \ t Ο Παίκτης II ΚΕΡΔΙΣΕ' << endl ;
cout << '------------------------' << endl ;

}
}
displayScore ( p1,p2 ) ;
Διακοπή ;
}

Αυτό το μέρος του κώδικα δείχνει το σκορ του παιχνιδιού. Εάν το παιχνίδι είναι εναντίον υπολογιστή, τότε εμφανίζεται το σκορ για τον παίκτη 1 και τον υπολογιστή, διαφορετικά εμφανίζεται το σκορ για τον παίκτη 1 και τον παίκτη 2.





κενός displayScore ( Παίχτης & p1, Παίκτης & p2 ) {
cout << endl ;
cout << ' \ t ΣΚΟΡ: \ t ' ;
αν ( ενάντια στον υπολογιστή )
cout << 'Παίκτης Ι:' << p1. getScore ( ) << ' \ t Υπολογιστή: ' << p2. getScore ( ) << endl ;
αλλού
cout << 'Παίκτης Ι:' << p1. getScore ( ) << ' \ t Παίκτης II: ' << p2. getScore ( ) << endl ;
}

Αυτός είναι ο κύριος κωδικός για την εκτέλεση του παιχνιδιού tic-tac-toe για δύο παίκτες. Ο χρήστης μπορεί να επιλέξει από μια ποικιλία διαδικασιών που θα εκτελεστούν χρησιμοποιώντας την εντολή switch case. Αυτός ο κώδικας παρέχει μια φιλική προς το χρήστη διεπαφή για την αναπαραγωγή ενός παιχνιδιού σε έναν μεταγλωττιστή C++ και ο κώδικας συνεχίζει να εκτελείται έως ότου ο χρήστης επιλέξει την επιλογή εξόδου.

ενθ κύριος ( )
{
ενθ κεφ ;

ενώ ( 1 ) {
cout << '      ----------MENU----------' << endl ;
cout << ' \ t 1. Παιχνίδι 1 παίκτη' << endl ;
cout << ' \ t 2. Παιχνίδι 2 παικτών' << endl ;
cout << ' \ t 3. Για έξοδο ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \ t Επιλέξτε μια επιλογή' <> κεφ ;
διακόπτης ( κεφ ) {
υπόθεση 1 : {
Παιχνίδι * παιχνίδι = νέος Παιχνίδι ;
παιχνίδι - > θερμότητα ( ) ;
παιχνίδι - > onePlayerGame ( ) ;
}
Διακοπή ;
υπόθεση 2 : {
Παιχνίδι * παιχνίδι = νέος Παιχνίδι ;
παιχνίδι - > θερμότητα ( ) ;
παιχνίδι - > twoPlayerGame ( ) ;
}
Διακοπή ;
υπόθεση 3 :
ΕΠΙΣΤΡΟΦΗ 0 ;
Προκαθορισμένο :
cout << 'OOPs Μη έγκυρη επιλογή! ΠΡΟΣΠΑΘΗΣΤΕ ΞΑΝΑ' ;
}

}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Πλήρης κώδικας για ένα παιχνίδι Tic-Tac-Toc που βασίζεται σε κείμενο

Αυτός είναι ένας πλήρης κώδικας για το σχεδιασμό και την εκτέλεση ενός παιχνιδιού tic-tac-toe που βασίζεται σε κείμενο.



#include
#include
#include
#include
#include
χρησιμοποιώντας χώρο ονομάτων std ;

typedef struct {
ενθ * σειρά ;
} WinList ;


τάξη Παίχτης {
ιδιωτικός :
όνομα συμβολοσειράς ;
ενθ σκορ ;
δημόσιο :
Παίχτης ( ) : Παίχτης { '' } { }
Παίχτης ( χορδή n ) : σκορ { 0 } , όνομα { n } { }

κενός Κέρδισε ( ) {
//αύξηση της βαθμολογίας
σκορ ++ ;
}
ενθ getScore ( ) { ΕΠΙΣΤΡΟΦΗ Αυτό - > σκορ ; }

συμβολοσειρά getName ( ) { ΕΠΙΣΤΡΟΦΗ Αυτό - > όνομα ; }
} ;

τάξη Παιχνίδι {
ιδιωτικός :
απανθρακώνω σανίδα [ 9 ] ;
ενθ κενόΕυρετήριο [ 9 ] ;
ενθ gameOn, ενάντια στον υπολογιστή ;
ενθ κενός αριθμός ;
WinList winlist [ 8 ] ;

κενός πίνακας επίδειξης ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << '' << σανίδα [ 0 ] << ' |' << σανίδα [ 1 ] << ' |' << σανίδα [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << '' << σανίδα [ 3 ] << ' |' << σανίδα [ 4 ] << ' |' << σανίδα [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << '' << σανίδα [ 6 ] << ' |' << σανίδα [ 7 ] << ' |' << σανίδα [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

κενός Είσοδος υπολογιστή ( ) {
ενθ pos ;
pos = άκρα ( ) % 10 ;
αν ( κενόΕυρετήριο [ pos ] == 1 ) {
αν ( κενός αριθμός < 0 )
ΕΠΙΣΤΡΟΦΗ ;
Είσοδος υπολογιστή ( ) ;
} αλλού {
cout << 'Επιλογή υπολογιστή:' << pos + 1 << endl ;
κενόΕυρετήριο [ pos ] = 1 ;
κενός αριθμός - = 1 ;
σανίδα [ pos ] = 'Ο' ;
}

}

κενός playerInput ( Παίχτης & παίχτης ) {
ενθ pos ;
cout << endl ;
cout << ' \ t ' << παίχτης. getName ( ) << ' Στροφή: ' ;
cout << ' \ t Εισαγάγετε τη θέση ' <> pos ;
pos - = 1 ;
αν ( κενόΕυρετήριο [ pos ] == 1 ) {
cout << '-----Η θέση δεν είναι κενή-------' << endl ;
playerInput ( παίχτης ) ;
} αλλού {
κενόΕυρετήριο [ pos ] = 1 ;
κενός αριθμός - = 1 ;
παίχτης. getName ( ) . συγκρίνω ( 'Παίκτης Ι' ) == 0 ? σανίδα [ pos ] = 'Χ' : σανίδα [ pos ] = 'Ο' ;
}

}

κενός checkWin ( Παίχτης & p1, Player & p2 ) {
ενθ i,j,k ;
bool σημαία = ψευδής ;
απανθρακώνω πρώτο_σύμβολο ;
Για ( Εγώ = 0 ; Εγώ < 8 ; Εγώ ++ ) {
πρώτο_σύμβολο = σανίδα [ winlist [ Εγώ ] . σειρά [ 0 ] ] ;

αν ( ( πρώτο_σύμβολο ! = 'Χ' ) && ( πρώτο_σύμβολο ! = 'Ο' ) ) {
σημαία = ψευδής ;
να συνεχίσει ;
}
σημαία = αληθής ;
Για ( ι = 0 ; ι < 3 ; ι ++ ) {
αν ( πρώτο_σύμβολο ! = σανίδα [ winlist [ Εγώ ] . σειρά [ ι ] ] ) {
σημαία = ψευδής ;
Διακοπή ;
}
}
αν ( σημαία ) {
παιχνίδι Ενεργοποιημένο = 0 ;
αν ( πρώτο_σύμβολο == 'Χ' ) {
cout << '------------------------' << endl ;
cout << ' \ t Παίκτης που ΚΕΡΔΙΣΑ' << endl ;
cout << '------------------------' << endl ;
p1. Κέρδισε ( ) ;
} αλλού {
p2. Κέρδισε ( ) ;
αν ( ενάντια στον υπολογιστή ) {
cout << '------------------------' << endl ;
cout << ' \ t Ο υπολογιστής κέρδισε' << endl ;
cout << '------------------------' << endl ;
} αλλού {
cout << '------------------------' << endl ;
cout << ' \ t Ο Παίκτης II ΚΕΡΔΙΣΕ' << endl ;
cout << '------------------------' < 0 ) && ( παιχνίδι Ενεργοποιημένο ! = 0 ) ) {

αν ( ενάντια στον υπολογιστή )
χέρι == 1 ? Είσοδος υπολογιστή ( ) : playerInput ( p2 ) ;
αλλού
χέρι == 1 ? playerInput ( p1 ) : playerInput ( p2 ) ;
χέρι = ! χέρι ;
πίνακας επίδειξης ( ) ;
checkWin ( p1,p2 ) ;
}
αν ( κενός αριθμός <= 0 ) {
cout << '      ----------------------' << endl ;
cout << ' \ t Κανένας ΝΙΚΗΤΗΣ' << endl ;
cout << '      ----------------------' << endl ;
}
cout << endl ;
cout <> ρεβάνς ;
αν ( ( ρεβάνς == 'ΚΑΙ' ) || ( ρεβάνς == 'και' ) ) {
θερμότητα ( ) ;
παίζω ( p1,p2 ) ;
}

}
κενός displayScore ( Παίχτης & p1, Παίκτης & p2 ) {
cout << endl ;
cout << ' \ t ΣΚΟΡ: \ t ' ;
αν ( ενάντια στον υπολογιστή )
cout << 'Παίκτης Ι:' << p1. getScore ( ) << ' \ t Υπολογιστή: ' << p2. getScore ( ) << endl ;
αλλού
cout << 'Παίκτης Ι:' << p1. getScore ( ) << ' \ t Παίκτης II: ' << p2. getScore ( ) << endl ;
}

δημόσιο :
Παιχνίδι ( ) : κενός αριθμός { 0 } , παιχνίδι On { 1 } , ενάντια στον υπολογιστή { 0 } {
θερμότητα ( ) ;
winlist [ 0 ] . σειρά = νέος ενθ [ 3 ] { 0 , 1 , 2 } ;
winlist [ 1 ] . σειρά = νέος ενθ [ 3 ] { 3 , 4 , 5 } ;
winlist [ 2 ] . σειρά = νέος ενθ [ 3 ] { 6 , 7 , 8 } ;
winlist [ 3 ] . σειρά = νέος ενθ [ 3 ] { 0 , 3 , 6 } ;
winlist [ 4 ] . σειρά = νέος ενθ [ 3 ] { 1 , 4 , 7 } ;
winlist [ 5 ] . σειρά = νέος ενθ [ 3 ] { 2 , 5 , 8 } ;
winlist [ 6 ] . σειρά = νέος ενθ [ 3 ] { 0 , 4 , 8 } ;
winlist [ 7 ] . σειρά = νέος ενθ [ 3 ] { 2 , 4 , 6 } ;
}

κενός θερμότητα ( ) {
παιχνίδι Ενεργοποιημένο = 1 ;

κενός αριθμός = 0 ;
srand ( χρόνος ( 0 ) ) ;
Για ( μέγεθος_t Εγώ = 0 ; Εγώ < 10 ; Εγώ ++ ) {
κενόΕυρετήριο [ Εγώ ] = 0 ;
σανίδα [ Εγώ ] = ( Εγώ + 1 ) + '0' ;
κενός αριθμός ++ ;
}
κενός αριθμός -- ;
}

κενός onePlayerGame ( ) {
//Δημιουργία προγράμματος αναπαραγωγής
Παίκτης σελ ( 'Παίκτης Ι' ) ;
Παίκτης γ ( 'Υπολογιστή' ) ;
cout << '       -----------------------' << endl ;
cout << ' \ t Παίκτης Ι: Χ \ t Υπολογιστής: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
ενάντια στον υπολογιστή = 1 ;
παίζω ( γ,σ ) ;

}

κενός twoPlayerGame ( ) {
//Δημιουργία προγράμματος αναπαραγωγής
Παίκτης σελ ( 'Παίκτης Ι' ) ;
Παίκτης γ ( 'Παίκτης II' ) ;
cout << '       -----------------------' << endl ;
cout << ' \ t Παίκτης Ι: Χ \ t Παίκτης II: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
ενάντια στον υπολογιστή = 0 ;
παίζω ( γ,σ ) ;
}
} ;

ενθ κύριος ( )
{
ενθ κεφ ;

ενώ ( 1 ) {
cout << '      ----------MENU----------' << endl ;
cout << ' \ t 1. Παιχνίδι 1 παίκτη' << endl ;
cout << ' \ t 2. Παιχνίδι 2 παικτών' << endl ;
cout << ' \ t 3. Για έξοδο ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \ t Επιλέξτε μια επιλογή' <> κεφ ;
διακόπτης ( κεφ ) {
υπόθεση 1 : {
Παιχνίδι * παιχνίδι = νέος Παιχνίδι ;
παιχνίδι - > θερμότητα ( ) ;
παιχνίδι - > onePlayerGame ( ) ;
}
Διακοπή ;
υπόθεση 2 : {
Παιχνίδι * παιχνίδι = νέος Παιχνίδι ;
παιχνίδι - > θερμότητα ( ) ;
παιχνίδι - > twoPlayerGame ( ) ;
}
Διακοπή ;
υπόθεση 3 :
ΕΠΙΣΤΡΟΦΗ 0 ;
Προκαθορισμένο :
cout << 'OOPs Μη έγκυρη επιλογή! ΠΡΟΣΠΑΘΗΣΤΕ ΞΑΝΑ' ;
}

}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Αυτός είναι ένας πλήρης κώδικας για την εκτέλεση του παιχνιδιού tic-tac-toe, το οποίο μπορεί να παιχτεί σε δύο λειτουργίες, είτε με υπολογιστή είτε με συνάνθρωπο. Αυτός είναι ένας ευέλικτος κώδικας, που περιλαμβάνει όλες τις πιθανές εντολές. Όταν ο χρήστης εισάγει μια θέση που έχει ήδη συμπληρωθεί, δεν αντικαθιστά αυτήν τη θέση και θεωρεί ότι αυτή η κίνηση δεν είναι έγκυρη.

Μέχρι τώρα ο παίκτης ένα έχει επιλέξει το πρώτο πλαίσιο και στη συνέχεια στην επόμενη στροφή ο υπολογιστής σημείωσε το έκτο πλαίσιο:

Και οι δύο παίκτες έχουν επιλέξει τα δύο κουτιά μέχρι τώρα και στην επόμενη στροφή ο παίκτης I επιλέγει το έβδομο πλαίσιο με αποτέλεσμα να δημιουργείται ένα διαδοχικό κάθετο μοτίβο:

Ο χρήστης επιλέγει να χρησιμοποιήσει τον υπολογιστή για να παίξει ένα παιχνίδι, οπότε μετά από τρεις κινήσεις, ο χρήστης κέρδισε από τον υπολογιστή και προστίθεται ένα σκορ στο αρχείο του παίκτη 1. Αφού τελειώσει ο πρώτος αγώνας, ο μεταγλωττιστής ζητά τον επαναληπτικό αγώνα. Ο χρήστης αποφασίζει από τις επιλογές και το πρόγραμμα επιστρέφει στην κύρια ενότητα. Αφού επιλέξετε την τρίτη επιλογή, ο μεταγλωττιστής υπάρχει η εκτέλεση του κώδικα.

συμπέρασμα

Τα παιχνίδια που βασίζονται σε κείμενο βασίζονται σε χαρακτήρες κειμένου και μια διεπαφή γραμμής εντολών για αλληλεπίδραση με τον παίκτη. Δεν έχουν γραφικές εικόνες, ήχους ή κινούμενα σχέδια. Ο χρήστης εισάγει την εντολή μέσω του παραθύρου της κονσόλας. Το φιλικό προς το χρήστη παιχνίδι tic-tac-toe που βασίζεται σε κείμενο είναι χτισμένο με χρήση C++. Χρησιμοποιεί διαφορετικές εντολές για να φτιάξει ένα παιχνίδι που μπορεί να παιχτεί είτε με υπολογιστή είτε με άλλον παίκτη.