Hvordan lage et grunnleggende tekstbasert spill i C++

Hvordan Lage Et Grunnleggende Tekstbasert Spill I C



Tekstbaserte spill er avhengige av tekstkarakterer og et kommandolinjegrensesnitt for interaksjon med spilleren. De har ikke grafiske bilder, lyder eller animasjoner. Brukeren legger inn kommandoen gjennom konsollvinduet.

Hvordan lage et grunnleggende tekstbasert spill i C++

Tekstbaserte spill i C++ lar spilleren legge inn kommandoer gjennom et konsollvindu, og programmet behandler bevegelsene til spilleren. Her har jeg laget et tekstbasert tic-tac-toe-spill som lar brukeren spille to alternativer. Brukeren kan enten spille med C++-kompilatoren eller med et medmenneske. Dette spillet har en funksjon som fortsetter å legge sammen poengsummen for den vinnende spilleren. Etter at utfallet av det første spillet er kunngjort, er et omkampsalternativ tilgjengelig.

Regler for å vinne spillet

To spillere spiller et tic-tac-toe-spill, og plasserer X og 0 alternativt i en av de ni tilgjengelige plassene på et tre-til-tre-rutenett. Spillet vinnes av den første spilleren som oppnår tre av sine påfølgende merker i vertikal, horisontal eller diagonal retning. Hver spiller må tenke smart og se fremover til den andre spillerens neste trekk.







Koden for å designe et tekstbasert tic-tac-toe-spill har forskjellige seksjoner, delt inn på grunnlag av funksjonalitet. I den første delen bestemmer brukeren om han vil spille med en datamaskin eller et medmenneske. Etter å ha bestemt modusen for forsterkning, ber programmet brukeren om input. Begge spillerne legger inn input etter hverandre.



//Ta innspill fra spillere
tomrom spillerinngang ( Spiller & spiller ) {
int pos ;
cout << endl ;
cout << ' \t ' << spiller. getName ( ) << 'Snu:' ;
cout << ' \t Skriv inn posisjonen ' <> pos ;
pos - = 1 ;
hvis ( tommeindeks [ pos ] == 1 ) {
cout << '-----Posisjon ikke tom-------' << endl ;
spillerinngang ( spiller ) ;
} ellers {
tommeindeks [ pos ] = 1 ;
emptyCount - = 1 ;
spiller. getName ( ) . sammenligne ( 'Spiller I' ) == 0 ? borde [ pos ] = 'X' : borde [ pos ] = 'O' ;
}

}

Etter å ha mottatt innspill fra brukeren, sjekker den vinnerregelen. CheckWin()-funksjonen har to parametere p1 og p2 for å sjekke om spilleren har vunnet eller ikke. Ulike variabler er deklarert i funksjonen i, j og k er heltallsvariabler deklarert for løkken og flagget er en boolsk funksjon for å sjekke vinnerbetingelsen. Sløyfen starter fra den aller første posisjonen og fortsetter å iterere for alle ni posisjonene. First_symbolet er et tegn som kan være 0 eller X hvis det er sant, så er alle mulige kombinasjoner sjekket for vinnerregelen. Ellers går iteratoren til neste posisjon, og det samme fortsetter til alle mulige posisjoner er sjekket. Hvis flagget er satt til å være sant, blir en vinner erklært, og programmet ber om å ta valget på nytt.



tomrom checkWin ( Spiller & p1, spiller & s2 ) {
int jeg, j,k ;
bool flagg = falsk ;
røye første_symbol ;
til ( Jeg = 0 ; Jeg < 8 ; Jeg ++ ) {
første_symbol = borde [ vinnerliste [ Jeg ] . rad [ 0 ] ] ;

hvis ( ( første_symbol ! = 'X' ) && ( første_symbol ! = 'O' ) ) {
flagg = falsk ;
Fortsette ;
}
flagg = ekte ;
til ( j = 0 ; j < 3 ; j ++ ) {
hvis ( første_symbol ! = borde [ vinnerliste [ Jeg ] . rad [ j ] ] ) {
flagg = falsk ;
gå i stykker ;
}
}
hvis ( flagg ) {
gameOn = 0 ;
hvis ( første_symbol == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spiller jeg VANT' << endl ;
cout << '------------------------' << endl ;
p1. Vant ( ) ;
} ellers {
s2. Vant ( ) ;
hvis ( mot datamaskin ) {
cout << '------------------------' << endl ;
cout << ' \t datamaskin vant' << endl ;
cout << '------------------------' << endl ;
} ellers {
cout << '------------------------' << endl ;
cout << ' \t Spiller II VANT' << endl ;
cout << '------------------------' << endl ;

}
}
viseScore ( p1,p2 ) ;
gå i stykker ;
}

Denne delen av koden viser poengsummen til spillet. Hvis spillet er mot en datamaskin, vises poengsummen for spiller 1 og datamaskinen, ellers vises poengsummen for spiller 1 og spiller 2.





tomrom viseScore ( Spiller & p1, spiller & s2 ) {
cout << endl ;
cout << ' \t POENG: \t ' ;
hvis ( mot datamaskin )
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Datamaskin: ' << s2. getScore ( ) << endl ;
ellers
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Spiller II: ' << s2. getScore ( ) << endl ;
}

Dette er hovedkoden for gjennomføring av tic-tac-toe-spill for to spillere. Brukeren kan velge fra en rekke prosedyrer som skal utføres ved hjelp av switch case statement. Denne koden gir et brukervennlig grensesnitt for å spille et spill på en C++-kompilator, og koden fortsetter å kjøre til brukeren velger avslutningsalternativet.

int hoved- ( )
{
int kap ;

samtidig som ( 1 ) {
cout << ' ----------MENY----------' << endl ;
cout << ' \t 1. 1 spiller spill' << endl ;
cout << ' \t 2. 2-spiller spill' << endl ;
cout << ' \t 3. For å avslutte ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Velg et alternativ' <> kap ;
bytte om ( kap ) {
sak 1 : {
Spill * spill = ny Spill ;
spill - > varme ( ) ;
spill - > onePlayerGame ( ) ;
}
gå i stykker ;
sak 2 : {
Spill * spill = ny Spill ;
spill - > varme ( ) ;
spill - > twoPlayerGame ( ) ;
}
gå i stykker ;
sak 3 :
komme tilbake 0 ;
misligholde :
cout << 'OOPs ugyldig alternativ! PRØV IGJEN' ;
}

}
komme tilbake 0 ;
}

Komplett kode for et tekstbasert Tic-Tac-Toc-spill

Dette er en komplett kode for design og utførelse av et tekstbasert tick-tac-toe-spill.



#include
#inkluder
#include
#inkluder
#include
ved hjelp av navneområde std ;

typedef struktur {
int * rad ;
} WinList ;


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

tomrom Vant ( ) {
//øk poengsummen
score ++ ;
}
int getScore ( ) { komme tilbake dette - > score ; }

streng getName ( ) { komme tilbake dette - > Navn ; }
} ;

klasse Spill {
privat :
røye borde [ 9 ] ;
int tommeindeks [ 9 ] ;
int gameOn, mot datamaskin ;
int emptyCount ;
WinList vinnerliste [ 8 ] ;

tomrom displayBoard ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << borde [ 0 ] << ' | ' << borde [ 1 ] << ' | ' << borde [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '----------------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << borde [ 3 ] << ' | ' << borde [ 4 ] << ' | ' << borde [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '----------------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << borde [ 6 ] << ' | ' << borde [ 7 ] << ' | ' << borde [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

tomrom datamaskininngang ( ) {
int pos ;
pos = rand ( ) % 10 ;
hvis ( tommeindeks [ pos ] == 1 ) {
hvis ( emptyCount < 0 )
komme tilbake ;
datamaskininngang ( ) ;
} ellers {
cout << 'Datamaskinvelg:' << pos + 1 << endl ;
tommeindeks [ pos ] = 1 ;
emptyCount - = 1 ;
borde [ pos ] = 'O' ;
}

}

tomrom spillerinngang ( Spiller & spiller ) {
int pos ;
cout << endl ;
cout << ' \t ' << spiller. getName ( ) << 'Snu:' ;
cout << ' \t Skriv inn posisjonen ' <> pos ;
pos - = 1 ;
hvis ( tommeindeks [ pos ] == 1 ) {
cout << '-----Posisjon ikke tom-------' << endl ;
spillerinngang ( spiller ) ;
} ellers {
tommeindeks [ pos ] = 1 ;
emptyCount - = 1 ;
spiller. getName ( ) . sammenligne ( 'Spiller I' ) == 0 ? borde [ pos ] = 'X' : borde [ pos ] = 'O' ;
}

}

tomrom checkWin ( Spiller & p1, spiller & s2 ) {
int jeg, j,k ;
bool flagg = falsk ;
røye første_symbol ;
til ( Jeg = 0 ; Jeg < 8 ; Jeg ++ ) {
første_symbol = borde [ vinnerliste [ Jeg ] . rad [ 0 ] ] ;

hvis ( ( første_symbol ! = 'X' ) && ( første_symbol ! = 'O' ) ) {
flagg = falsk ;
Fortsette ;
}
flagg = ekte ;
til ( j = 0 ; j < 3 ; j ++ ) {
hvis ( første_symbol ! = borde [ vinnerliste [ Jeg ] . rad [ j ] ] ) {
flagg = falsk ;
gå i stykker ;
}
}
hvis ( flagg ) {
gameOn = 0 ;
hvis ( første_symbol == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spiller jeg VANT' << endl ;
cout << '------------------------' << endl ;
p1. Vant ( ) ;
} ellers {
s2. Vant ( ) ;
hvis ( mot datamaskin ) {
cout << '------------------------' << endl ;
cout << ' \t datamaskin vant' << endl ;
cout << '------------------------' << endl ;
} ellers {
cout << '------------------------' << endl ;
cout << ' \t Spiller II VANT' << endl ;
cout << '------------------------' < 0 ) && ( gameOn ! = 0 ) ) {

hvis ( mot datamaskin )
hånd == 1 ? datamaskininngang ( ) : spillerinngang ( s2 ) ;
ellers
hånd == 1 ? spillerinngang ( p1 ) : spillerinngang ( s2 ) ;
hånd = ! hånd ;
displayBoard ( ) ;
checkWin ( p1,p2 ) ;
}
hvis ( emptyCount <= 0 ) {
cout << '      ------------------------------' << endl ;
cout << ' \t Ingen VINNER' << endl ;
cout << '      ------------------------------' << endl ;
}
cout << endl ;
cout <> omkamp ;
hvis ( ( omkamp == 'OG' ) || ( omkamp == 'og' ) ) {
varme ( ) ;
spille ( p1,p2 ) ;
}

}
tomrom viseScore ( Spiller & p1, spiller & s2 ) {
cout << endl ;
cout << ' \t POENG: \t ' ;
hvis ( mot datamaskin )
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Datamaskin: ' << s2. getScore ( ) << endl ;
ellers
cout << 'Spiller I:' << p1. getScore ( ) << ' \t Spiller II: ' << s2. getScore ( ) << endl ;
}

offentlig :
Spill ( ) : emptyCount { 0 } , gameOn { 1 } , mot datamaskin { 0 } {
varme ( ) ;
vinnerliste [ 0 ] . rad = ny int [ 3 ] { 0 , 1 , 2 } ;
vinnerliste [ 1 ] . rad = ny int [ 3 ] { 3 , 4 , 5 } ;
vinnerliste [ 2 ] . rad = ny int [ 3 ] { 6 , 7 , 8 } ;
vinnerliste [ 3 ] . rad = ny int [ 3 ] { 0 , 3 , 6 } ;
vinnerliste [ 4 ] . rad = ny int [ 3 ] { 1 , 4 , 7 } ;
vinnerliste [ 5 ] . rad = ny int [ 3 ] { 2 , 5 , 8 } ;
vinnerliste [ 6 ] . rad = ny int [ 3 ] { 0 , 4 , 8 } ;
vinnerliste [ 7 ] . rad = ny int [ 3 ] { 2 , 4 , 6 } ;
}

tomrom varme ( ) {
gameOn = 1 ;

emptyCount = 0 ;
srand ( tid ( 0 ) ) ;
til ( størrelse_t Jeg = 0 ; Jeg < 10 ; Jeg ++ ) {
tommeindeks [ Jeg ] = 0 ;
borde [ Jeg ] = ( Jeg + 1 ) + '0' ;
emptyCount ++ ;
}
emptyCount -- ;
}

tomrom onePlayerGame ( ) {
//Oppretter spiller
Spiller s ( 'Spiller I' ) ;
Spiller c ( 'Datamaskin' ) ;
cout << '       ----------------------------' << endl ;
cout << ' \t Spiller I: X \t Datamaskin: O' << endl ;
cout << '       ----------------------------' << endl ;
cout << endl ;
mot datamaskin = 1 ;
spille ( c, s ) ;

}

tomrom twoPlayerGame ( ) {
//Oppretter spiller
Spiller s ( 'Spiller I' ) ;
Spiller c ( 'Spiller II' ) ;
cout << '       ----------------------------' << endl ;
cout << ' \t Spiller I: X \t Spiller II: O' << endl ;
cout << '       ----------------------------' << endl ;
cout << endl ;
mot datamaskin = 0 ;
spille ( c, s ) ;
}
} ;

int hoved- ( )
{
int kap ;

samtidig som ( 1 ) {
cout << ' ----------MENY----------' << endl ;
cout << ' \t 1. 1 spiller spill' << endl ;
cout << ' \t 2. 2-spiller spill' << endl ;
cout << ' \t 3. For å avslutte ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Velg et alternativ' <> kap ;
bytte om ( kap ) {
sak 1 : {
Spill * spill = ny Spill ;
spill - > varme ( ) ;
spill - > onePlayerGame ( ) ;
}
gå i stykker ;
sak 2 : {
Spill * spill = ny Spill ;
spill - > varme ( ) ;
spill - > twoPlayerGame ( ) ;
}
gå i stykker ;
sak 3 :
komme tilbake 0 ;
misligholde :
cout << 'OOPs ugyldig alternativ! PRØV IGJEN' ;
}

}
komme tilbake 0 ;
}

Dette er en komplett kode for gjennomføring av tic-tac-toe-spillet, som kan spilles i to moduser, enten med en datamaskin eller et medmenneske. Dette er en allsidig kode, inkludert alle mulige kommandoer. Når brukeren legger inn en stilling som allerede er fylt, overskriver den ikke denne stillingen og anser denne flyttingen som ugyldig.

Til nå har spiller en valgt den første boksen, og i neste omgang merket datamaskinen den sjette boksen:

Begge spillerne har valgt de to boksene til nå, og i neste omgang velger spilleren I den syvende boksen, noe som resulterer i å lage et påfølgende vertikalt mønster:

Brukeren velger å bruke datamaskinen til å spille et spill, så etter å ha tatt tre trekk, vant brukeren fra datamaskinen og en poengsum legges til rekorden til spiller 1. Etter at den første kampen er over, ber kompilatoren om omkampen. Brukeren bestemmer fra alternativene og programmet går tilbake til hoveddelen. Etter å ha valgt alternativ tre, eksisterer kompilatoren utførelse av kode.

Konklusjon

Tekstbaserte spill er avhengige av tekstkarakterer og et kommandolinjegrensesnitt for interaksjon med spilleren. De har ikke grafiske bilder, lyder eller animasjoner. Brukeren legger inn kommandoen gjennom konsollvinduet. Det brukervennlige tekstbaserte tic-tac-toe-spillet er bygget med C++. Den bruker forskjellige kommandoer for å lage et spill som enten kan spilles med en datamaskin eller en annen medspiller.