Sådan opretter du et grundlæggende tekstbaseret spil i C++

Sadan Opretter Du Et Grundlaeggende Tekstbaseret Spil I C



Tekstbaserede spil er afhængige af tekstkarakterer og en kommandolinjegrænseflade til interaktion med spilleren. De har ikke grafiske billeder, lyde eller animationer. Brugeren indtaster kommandoen gennem konsolvinduet.

Sådan opretter du et grundlæggende tekstbaseret spil i C++

Tekstbaserede spil i C++ giver spilleren mulighed for at indtaste kommandoer gennem et konsolvindue, og programmet behandler spillerens bevægelser. Her har jeg lavet et tekstbaseret tic-tac-toe spil, der giver brugeren to muligheder for at spille. Brugeren kan enten spille med C++ compileren eller med et medmenneske. Dette spil har en funktion, der bliver ved med at lægge point for den vindende spiller sammen. Efter udfaldet af det første spil er annonceret, er en rematch-mulighed tilgængelig.

Regler for at vinde spillet

To spillere spiller et tic-tac-toe-spil, og placerer X og 0 alternativt i en af ​​de ni ledige pladser på et tre-til-tre-gitter. Spillet vindes af den første spiller, der opnår tre af sine på hinanden følgende mærker i lodret, vandret eller diagonal retning. Hver spiller skal tænke smart og se frem til den anden spillers næste træk.







Koden til at designe et tekstbaseret tic-tac-toe-spil har forskellige sektioner, opdelt efter funktionalitet. I første afsnit bestemmer brugeren, om han vil spille med en computer eller et medmenneske. Efter at have besluttet forstærkningstilstanden, beder programmet brugeren om input. Begge spillere indtaster input efter hinanden.



//Tag input fra spillere
ugyldig spillerindgang ( Spiller & spiller ) {
int pos ;
cout << endl ;
cout << ' \t ' << spiller. fåNavn ( ) << 'Vend:' ;
cout << ' \t Indtast stillingen ' <> pos ;
pos - = 1 ;
hvis ( tomt Indeks [ pos ] == 1 ) {
cout << '-----Position ikke tom-------' << endl ;
spillerindgang ( spiller ) ;
} andet {
tomt Indeks [ pos ] = 1 ;
tommeTal - = 1 ;
spiller. fåNavn ( ) . sammenligne ( 'Spiller I' ) == 0 ? bestyrelse [ pos ] = 'X' : bestyrelse [ pos ] = 'O' ;
}

}

Efter at have modtaget input fra brugeren, tjekker den vinderreglen. CheckWin()-funktionen har to parametre p1 og p2 for at kontrollere, om spilleren har vundet eller ej. Forskellige variable er deklareret i funktionen i, j og k er heltalsvariabler, der er erklæret for løkken, og flaget er en boolsk funktion til at kontrollere win-betingelsen. Løkken starter fra den allerførste position og bliver ved med at iterere for alle ni positioner. First_symbolet er et tegn, der kan være 0 eller X, hvis det er sandt, så er alle mulige kombinationer kontrolleret for vinderreglen. Ellers flytter iteratoren til den næste position, og det samme fortsætter, indtil alle mulige positioner er kontrolleret. Hvis flaget er sat til at være sandt, erklæres en vinder, og programmet beder om at træffe valget igen.



ugyldig checkWin ( Spiller & p1, spiller & s2 ) {
int i,j,k ;
bool flag = falsk ;
char første_symbol ;
til ( jeg = 0 ; jeg < 8 ; jeg ++ ) {
første_symbol = bestyrelse [ vinderliste [ jeg ] . række [ 0 ] ] ;

hvis ( ( første_symbol ! = 'X' ) && ( første_symbol ! = 'O' ) ) {
flag = falsk ;
Blive ved ;
}
flag = rigtigt ;
til ( j = 0 ; j < 3 ; j ++ ) {
hvis ( første_symbol ! = bestyrelse [ vinderliste [ jeg ] . række [ j ] ] ) {
flag = falsk ;
pause ;
}
}
hvis ( flag ) {
så er spillet i gang = 0 ;
hvis ( første_symbol == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spiller jeg vandt' << endl ;
cout << '------------------------' << endl ;
p1. vandt ( ) ;
} andet {
s2. vandt ( ) ;
hvis ( mod computer ) {
cout << '------------------------' << endl ;
cout << ' \t Computer vandt' << endl ;
cout << '------------------------' << endl ;
} andet {
cout << '------------------------' << endl ;
cout << ' \t Spiller II VAND' << endl ;
cout << '------------------------' << endl ;

}
}
displayScore ( p1, p2 ) ;
pause ;
}

Denne del af koden viser spillets score. Hvis spillet er mod en computer, så vises scoren for spiller 1 og computeren, ellers vises scoren for spiller 1 og spiller 2.





ugyldig displayScore ( Spiller & p1, afspiller & s2 ) {
cout << endl ;
cout << ' \t SCORE: \t ' ;
hvis ( mod computer )
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Computer: ' << s2. getScore ( ) << endl ;
andet
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Spiller II: ' << s2. getScore ( ) << endl ;
}

Dette er hovedkoden til udførelse af tic-tac-toe-spil for to spillere. Brugeren kan vælge mellem en række forskellige procedurer, der skal udføres ved hjælp af switch case statement. Denne kode giver en brugervenlig grænseflade til at spille et spil på en C++-compiler, og koden bliver ved med at køre, indtil brugeren vælger exit-indstillingen.

int vigtigste ( )
{
int ch ;

mens ( 1 ) {
cout << '      ---------MENU----------' << endl ;
cout << ' \t 1. 1 spiller spil' << endl ;
cout << ' \t 2. 2-spiller spil' << endl ;
cout << ' \t 3. For at afslutte ' << endl ;
cout << '      ---------' << endl ;
cout << endl ;
cout << ' \t Vælg en mulighed' <> ch ;
kontakt ( ch ) {
sag 1 : {
Spil * spil = ny Spil ;
spil - > varme ( ) ;
spil - > onePlayerGame ( ) ;
}
pause ;
sag 2 : {
Spil * spil = ny Spil ;
spil - > varme ( ) ;
spil - > twoPlayerGame ( ) ;
}
pause ;
sag 3 :
Vend tilbage 0 ;
Standard :
cout << 'UPS Ugyldig valgmulighed! PRØV IGEN' ;
}

}
Vend tilbage 0 ;
}

Komplet kode til et tekstbaseret Tic-Tac-Toc-spil

Dette er en komplet kode til design og udførelse af et tekstbaseret tic-tac-toe spil.



#include
#inkluder
#include
#include
#include
ved brug af navneområde std ;

typedef struktur {
int * række ;
} WinList ;


klasse Spiller {
privat :
strengnavn ;
int score ;
offentlig :
Spiller ( ) : Spiller { '' } { }
Spiller ( streng n ) : score { 0 } , navn { n } { }

ugyldig vandt ( ) {
//forøg scoren
score ++ ;
}
int getScore ( ) { Vend tilbage det her - > score ; }

streng getName ( ) { Vend tilbage det her - > navn ; }
} ;

klasse Spil {
privat :
char bestyrelse [ 9 ] ;
int tomt Indeks [ 9 ] ;
int gameOn, mod Computer ;
int tommeTal ;
WinList vinderliste [ 8 ] ;

ugyldig displayboard ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << bestyrelse [ 0 ] << ' | ' << bestyrelse [ 1 ] << ' | ' << bestyrelse [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '----------------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << bestyrelse [ 3 ] << ' | ' << bestyrelse [ 4 ] << ' | ' << bestyrelse [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '----------------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << bestyrelse [ 6 ] << ' | ' << bestyrelse [ 7 ] << ' | ' << bestyrelse [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

ugyldig computerindgang ( ) {
int pos ;
pos = rand ( ) % 10 ;
hvis ( tomt Indeks [ pos ] == 1 ) {
hvis ( tommeTal < 0 )
Vend tilbage ;
computerindgang ( ) ;
} andet {
cout << 'Vælg computer:' << pos + 1 << endl ;
tomt Indeks [ pos ] = 1 ;
tommeTal - = 1 ;
bestyrelse [ pos ] = 'O' ;
}

}

ugyldig spillerindgang ( Spiller & spiller ) {
int pos ;
cout << endl ;
cout << ' \t ' << spiller. fåNavn ( ) << 'Vend:' ;
cout << ' \t Indtast stillingen ' <> pos ;
pos - = 1 ;
hvis ( tomt Indeks [ pos ] == 1 ) {
cout << '-----Position ikke tom-------' << endl ;
spillerindgang ( spiller ) ;
} andet {
tomt Indeks [ pos ] = 1 ;
tommeTal - = 1 ;
spiller. fåNavn ( ) . sammenligne ( 'Spiller I' ) == 0 ? bestyrelse [ pos ] = 'X' : bestyrelse [ pos ] = 'O' ;
}

}

ugyldig checkWin ( Spiller & p1, spiller & s2 ) {
int i,j,k ;
bool flag = falsk ;
char første_symbol ;
til ( jeg = 0 ; jeg < 8 ; jeg ++ ) {
første_symbol = bestyrelse [ vinderliste [ jeg ] . række [ 0 ] ] ;

hvis ( ( første_symbol ! = 'X' ) && ( første_symbol ! = 'O' ) ) {
flag = falsk ;
Blive ved ;
}
flag = rigtigt ;
til ( j = 0 ; j < 3 ; j ++ ) {
hvis ( første_symbol ! = bestyrelse [ vinderliste [ jeg ] . række [ j ] ] ) {
flag = falsk ;
pause ;
}
}
hvis ( flag ) {
så er spillet i gang = 0 ;
hvis ( første_symbol == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spiller jeg vandt' << endl ;
cout << '------------------------' << endl ;
p1. vandt ( ) ;
} andet {
s2. vandt ( ) ;
hvis ( mod computer ) {
cout << '------------------------' << endl ;
cout << ' \t Computer vandt' << endl ;
cout << '------------------------' << endl ;
} andet {
cout << '------------------------' << endl ;
cout << ' \t Spiller II VAND' << endl ;
cout << '------------------------' < 0 ) && ( så er spillet i gang ! = 0 ) ) {

hvis ( mod computer )
hånd == 1 ? computerindgang ( ) : spillerindgang ( s2 ) ;
andet
hånd == 1 ? spillerindgang ( p1 ) : spillerindgang ( s2 ) ;
hånd = ! hånd ;
displayboard ( ) ;
checkWin ( p1, p2 ) ;
}
hvis ( tommeTal <= 0 ) {
cout << '      ------------------------------' << endl ;
cout << ' \t Ingen VINDER' << endl ;
cout << '      ------------------------------' << endl ;
}
cout << endl ;
cout <> omkamp ;
hvis ( ( omkamp == 'OG' ) || ( omkamp == 'og' ) ) {
varme ( ) ;
Spil ( p1, p2 ) ;
}

}
ugyldig displayScore ( Spiller & p1, afspiller & s2 ) {
cout << endl ;
cout << ' \t SCORE: \t ' ;
hvis ( mod computer )
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Computer: ' << s2. getScore ( ) << endl ;
andet
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Spiller II: ' << s2. getScore ( ) << endl ;
}

offentlig :
Spil ( ) : tommeTal { 0 } , så er spillet i gang { 1 } , mod Computer { 0 } {
varme ( ) ;
vinderliste [ 0 ] . række = ny int [ 3 ] { 0 , 1 , 2 } ;
vinderliste [ 1 ] . række = ny int [ 3 ] { 3 , 4 , 5 } ;
vinderliste [ 2 ] . række = ny int [ 3 ] { 6 , 7 , 8 } ;
vinderliste [ 3 ] . række = ny int [ 3 ] { 0 , 3 , 6 } ;
vinderliste [ 4 ] . række = ny int [ 3 ] { 1 , 4 , 7 } ;
vinderliste [ 5 ] . række = ny int [ 3 ] { 2 , 5 , 8 } ;
vinderliste [ 6 ] . række = ny int [ 3 ] { 0 , 4 , 8 } ;
vinderliste [ 7 ] . række = ny int [ 3 ] { 2 , 4 , 6 } ;
}

ugyldig varme ( ) {
så er spillet i gang = 1 ;

tommeTal = 0 ;
srand ( tid ( 0 ) ) ;
til ( størrelse_t jeg = 0 ; jeg < 10 ; jeg ++ ) {
tomt Indeks [ jeg ] = 0 ;
bestyrelse [ jeg ] = ( jeg + 1 ) + '0' ;
tommeTal ++ ;
}
tommeTal -- ;
}

ugyldig onePlayerGame ( ) {
//Opretter afspiller
Spiller s ( 'Spiller I' ) ;
Spiller c ( 'Computer' ) ;
cout << '       ----------------------------' << endl ;
cout << ' \t Spiller I: X \t Computer: O' << endl ;
cout << '       ----------------------------' << endl ;
cout << endl ;
mod computer = 1 ;
Spil ( c, s ) ;

}

ugyldig twoPlayerGame ( ) {
//Opretter afspiller
Spiller s ( 'Spiller I' ) ;
Spiller c ( 'Spiller II' ) ;
cout << '       ----------------------------' << endl ;
cout << ' \t Spiller I: X \t Spiller II: O' << endl ;
cout << '       ----------------------------' << endl ;
cout << endl ;
mod computer = 0 ;
Spil ( c, s ) ;
}
} ;

int vigtigste ( )
{
int ch ;

mens ( 1 ) {
cout << '      ---------MENU----------' << endl ;
cout << ' \t 1. 1 spiller spil' << endl ;
cout << ' \t 2. 2-spiller spil' << endl ;
cout << ' \t 3. For at afslutte ' << endl ;
cout << '      ---------' << endl ;
cout << endl ;
cout << ' \t Vælg en mulighed' <> ch ;
kontakt ( ch ) {
sag 1 : {
Spil * spil = ny Spil ;
spil - > varme ( ) ;
spil - > onePlayerGame ( ) ;
}
pause ;
sag 2 : {
Spil * spil = ny Spil ;
spil - > varme ( ) ;
spil - > twoPlayerGame ( ) ;
}
pause ;
sag 3 :
Vend tilbage 0 ;
Standard :
cout << 'UPS Ugyldig valgmulighed! PRØV IGEN' ;
}

}
Vend tilbage 0 ;
}

Dette er en komplet kode til udførelse af tic-tac-toe spillet, som kan spilles i to modes, enten med en computer eller et medmenneske. Dette er en alsidig kode, inklusive alle de mulige kommandoer. Når brugeren indtaster en stilling, der allerede er besat, overskriver den ikke denne stilling og anser denne flytning for ugyldig.

Indtil nu har spiller 1 valgt den første boks, og i den næste tur har computeren markeret den sjette boks:

Begge spillere har valgt de to felter indtil nu, og i næste omgang vælger spilleren I det syvende felt, hvilket resulterer i at skabe et fortløbende lodret mønster:

Brugeren vælger at bruge computeren til at spille et spil, så efter at have taget tre træk, vandt brugeren fra computeren, og en score føjes til rekorden for spiller 1. Efter den første kamp er slut, beder compileren om omkampen. Brugeren bestemmer ud fra mulighederne, og programmet vender tilbage til hovedafsnittet. Efter at have valgt mulighed tre eksisterer compileren udførelse af kode.

Konklusion

Tekstbaserede spil er afhængige af tekstkarakterer og en kommandolinjegrænseflade til interaktion med spilleren. De har ikke grafiske billeder, lyde eller animationer. Brugeren indtaster kommandoen gennem konsolvinduet. Det brugervenlige tekstbaserede tic-tac-toe-spil er bygget ved hjælp af C++. Den bruger forskellige kommandoer til at lave et spil, som enten kan spilles med en computer eller en anden medspiller.