Как да създадете базова текстова игра в C++

Kak Da S Zdadete Bazova Tekstova Igra V C



Текстово базираните игри разчитат на текстови знаци и интерфейс на командния ред за взаимодействие с играча. Те нямат графични изображения, звуци или анимации. Потребителят въвежда командата през прозореца на конзолата.

Как да създадете базова текстова игра в C++

Текстово базираните игри на C++ позволяват на играча да въвежда команди през прозорец на конзолата, а програмата обработва ходовете на играча. Тук създадох базирана на текст тик-так игра, която позволява на потребителя да играе две опции. Потребителят може или да играе с C++ компилатора, или с друг човек. Тази игра има функция, която продължава да събира резултата за печелившия играч. След обявяване на резултата от първата игра е налична опция за реванш.

Правила за спечелване на играта

Двама играчи играят игра на тик-так пръсти, като поставят X и 0 алтернативно в едно от деветте налични полета в мрежа три по три. Играта се печели от първия играч, който получи три от своите последователни точки във вертикална, хоризонтална или диагонална посока. Всеки играч трябва да мисли умно и да гледа напред към следващия ход на другия играч.







Кодът за проектиране на текстова игра tic-tac-toe има различни секции, разделени на базата на функционалност. В първия раздел потребителят решава дали да играе с компютър или друг човек. След като реши режима на усилване, програмата пита потребителя за въвеждане. И двамата играчи въвеждат един след друг.



//Вземете информация от играчите
невалиден playerInput ( Играч и играч ) {
вътр поз ;
cout << endl ;
cout << ' \T ' << играч. getName ( ) << 'Завъртете:' ;
cout << ' \T Въведете позицията ' <> поз ;
поз - = 1 ;
ако ( празенИндекс [ поз ] == 1 ) {
cout << '-----Позицията не е празна-------' << endl ;
playerInput ( играч ) ;
} друго {
празенИндекс [ поз ] = 1 ;
празен брой - = 1 ;
играч. getName ( ) . сравнявам ( 'Играч I' ) == 0 ? дъска [ поз ] = 'Х' : дъска [ поз ] = 'О' ;
}

}

След като вземе входове от потребителя, той проверява правилото за победа. Функцията checkWin() има два параметъра p1 и p2 за проверка дали играчът е спечелил или не. Различните променливи са декларирани във функцията i, j и k са целочислени променливи, декларирани за цикъла, а флагът е булева функция за проверка на условието за победа. Цикълът започва от първата позиция и продължава да се повтаря за всичките девет позиции. Първият_символ е символ, който може да бъде 0 или X, ако е верен, тогава всички възможни комбинации се проверяват за печелившото правило. В противен случай итераторът се премества на следващата позиция и същото продължава, докато не бъдат проверени всички възможни позиции. Ако флагът е верен, тогава се обявява победител и програмата иска да направи избора отново.



невалиден checkWin ( Играч и p1, Играч и p2 ) {
вътр i,j,k ;
bool знаме = невярно ;
въглен първи_символ ;
за ( i = 0 ; i < 8 ; i ++ ) {
първи_символ = дъска [ печеливш списък [ i ] . ред [ 0 ] ] ;

ако ( ( първи_символ ! = 'Х' ) && ( първи_символ ! = 'О' ) ) {
знаме = невярно ;
продължи ;
}
знаме = вярно ;
за ( й = 0 ; й < 3 ; й ++ ) {
ако ( първи_символ ! = дъска [ печеливш списък [ i ] . ред [ й ] ] ) {
знаме = невярно ;
прекъсвам ;
}
}
ако ( знаме ) {
gameOn = 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 << 'Играч I:' << p1. getScore ( ) << ' \T Компютър: ' << p2. getScore ( ) << endl ;
друго
cout << 'Играч I:' << p1. getScore ( ) << ' \T Играч II: ' << p2. getScore ( ) << endl ;
}

Това е основният код за изпълнение на игра тик-так-палеца за двама играчи. Потребителят може да избира от различни процедури, които да бъдат извършени с помощта на командата за превключване на случай. Този код предоставя удобен за потребителя интерфейс за игра на игра на C++ компилатор и кодът продължава да се изпълнява, докато потребителят избере опцията за изход.

вътр основен ( )
{
вътр гл ;

докато ( 1 ) {
cout << ' ----------МЕНЮ----------' << 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

Това е пълен код за проектиране и изпълнение на текстово базирана игра на тик-так-палеца.



#include
#include<списък>
#include
#include<низ>
#include
използвайки пространство от имена std ;

typedef структура {
вътр * ред ;
} WinList ;


клас Играч {
частен :
име на низ ;
вътр резултат ;
публичен :
Играч ( ) : Играч { '' } { }
Играч ( низ n ) : резултат { 0 } , име { н } { }

невалиден Спечелени ( ) {
//увеличете резултата
резултат ++ ;
}
вътр getScore ( ) { връщане това - > резултат ; }

низ getName ( ) { връщане това - > име ; }
} ;

клас Игра {
частен :
въглен дъска [ 9 ] ;
вътр празенИндекс [ 9 ] ;
вътр gameOn, againstComputer ;
вътр празен брой ;
WinList winlist [ 8 ] ;

невалиден displayBoard ( ) {
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 ;
}

невалиден компютърен вход ( ) {
вътр поз ;
поз = ранд ( ) % 10 ;
ако ( празенИндекс [ поз ] == 1 ) {
ако ( празен брой < 0 )
връщане ;
компютърен вход ( ) ;
} друго {
cout << „Избор от компютър:“ << поз + 1 << endl ;
празенИндекс [ поз ] = 1 ;
празен брой - = 1 ;
дъска [ поз ] = 'О' ;
}

}

невалиден playerInput ( Играч и играч ) {
вътр поз ;
cout << endl ;
cout << ' \T ' << играч. getName ( ) << 'Завъртете:' ;
cout << ' \T Въведете позицията ' <> поз ;
поз - = 1 ;
ако ( празенИндекс [ поз ] == 1 ) {
cout << '-----Позицията не е празна-------' << endl ;
playerInput ( играч ) ;
} друго {
празенИндекс [ поз ] = 1 ;
празен брой - = 1 ;
играч. getName ( ) . сравнявам ( 'Играч I' ) == 0 ? дъска [ поз ] = 'Х' : дъска [ поз ] = 'О' ;
}

}

невалиден checkWin ( Играч и p1, Играч и p2 ) {
вътр i,j,k ;
bool знаме = невярно ;
въглен първи_символ ;
за ( i = 0 ; i < 8 ; i ++ ) {
първи_символ = дъска [ печеливш списък [ i ] . ред [ 0 ] ] ;

ако ( ( първи_символ ! = 'Х' ) && ( първи_символ ! = 'О' ) ) {
знаме = невярно ;
продължи ;
}
знаме = вярно ;
за ( й = 0 ; й < 3 ; й ++ ) {
ако ( първи_символ ! = дъска [ печеливш списък [ i ] . ред [ й ] ] ) {
знаме = невярно ;
прекъсвам ;
}
}
ако ( знаме ) {
gameOn = 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 ) && ( gameOn ! = 0 ) ) {

ако ( срещу компютър )
ръка == 1 ? компютърен вход ( ) : playerInput ( p2 ) ;
друго
ръка == 1 ? playerInput ( p1 ) : playerInput ( p2 ) ;
ръка = ! ръка ;
displayBoard ( ) ;
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 << 'Играч I:' << p1. getScore ( ) << ' \T Компютър: ' << p2. getScore ( ) << endl ;
друго
cout << 'Играч I:' << p1. getScore ( ) << ' \T Играч II: ' << p2. getScore ( ) << endl ;
}

публичен :
Игра ( ) : празен брой { 0 } , gameOn { 1 } , срещу Компютър { 0 } {
топлина ( ) ;
печеливш списък [ 0 ] . ред = нов вътр [ 3 ] { 0 , 1 , 2 } ;
печеливш списък [ 1 ] . ред = нов вътр [ 3 ] { 3 , 4 , 5 } ;
печеливш списък [ 2 ] . ред = нов вътр [ 3 ] { 6 , 7 , 8 } ;
печеливш списък [ 3 ] . ред = нов вътр [ 3 ] { 0 , 3 , 6 } ;
печеливш списък [ 4 ] . ред = нов вътр [ 3 ] { 1 , 4 , 7 } ;
печеливш списък [ 5 ] . ред = нов вътр [ 3 ] { 2 , 5 , 8 } ;
печеливш списък [ 6 ] . ред = нов вътр [ 3 ] { 0 , 4 , 8 } ;
печеливш списък [ 7 ] . ред = нов вътр [ 3 ] { 2 , 4 , 6 } ;
}

невалиден топлина ( ) {
gameOn = 1 ;

празен брой = 0 ;
srand ( време ( 0 ) ) ;
за ( размер_т аз = 0 ; аз < 10 ; аз ++ ) {
празенИндекс [ аз ] = 0 ;
дъска [ аз ] = ( аз + 1 ) + '0' ;
празен брой ++ ;
}
празен брой -- ;
}

невалиден onePlayerGame ( ) {
//Създаване на плейър
Играч p ( 'Играч I' ) ;
Играч c ( 'Компютър' ) ;
cout << '       ----------------------' << endl ;
cout << ' \T Играч I: X \T Компютър: О' << endl ;
cout << '       ----------------------' << endl ;
cout << endl ;
срещу компютър = 1 ;
играя ( c,p ) ;

}

невалиден Игра за двама играчи ( ) {
//Създаване на плейър
Играч p ( 'Играч I' ) ;
Играч c ( 'Играч II' ) ;
cout << '       ----------------------' << endl ;
cout << ' \T Играч I: X \T Играч II: O' << endl ;
cout << '       ----------------------' << endl ;
cout << endl ;
срещу компютър = 0 ;
играя ( c,p ) ;
}
} ;

вътр основен ( )
{
вътр гл ;

докато ( 1 ) {
cout << ' ----------МЕНЮ----------' << 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. След като първият мач приключи, компилаторът пита за реванша. Потребителят избира от опциите и програмата се връща в основния раздел. След избор на опция три, компилаторът съществува изпълнение на код.

Заключение

Текстово базираните игри разчитат на текстови знаци и интерфейс на командния ред за взаимодействие с играча. Те нямат графични изображения, звуци или анимации. Потребителят въвежда командата през прозореца на конзолата. Удобната за потребителя текстова игра с тик-так-палец е изградена с помощта на C++. Той използва различни команди, за да направи игра, която може да се играе с компютър или друг друг играч.