井字棋
两个玩家,一个打圈,一个打叉,轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。如果双方都下得正确无误,将得和局。
参考如下:
项目分析
需要的函数
1.play函数——制定游戏规则
包括下棋的顺序,输赢的确定,棋盘的布置,下棋的方法,一局游戏结束后的输出
2.draw函数——输出游戏棋盘
棋盘位置不变,故使用
COORD c = { 0, 2 };
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c );
使得下落后的棋子可以覆盖在棋盘上。
控制保存棋盘的数列——输出到棋盘上
3.checkVictory函数——判断是否有输赢确定
判断有无输赢,返回游戏结果
4.玩家下棋函数——接受信息
将玩家下的子放入保存棋盘的数列;
5.电脑玩家下棋
制定电脑下棋的规则,将下一步棋保存至棋盘数列;
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
enum players {
Computer, Human, Draw, None }; //编号
const int iWin[8][3] = {
{
0, 1, 2 }, {
3, 4, 5 }, {
6, 7, 8 }, {
0, 3, 6 }, {
1, 4, 7 }, {
2, 5, 8 }, {
0, 4, 8 }, {
2, 4, 6 } };
//可能赢的情况
//定义游戏类
class ttt
{
public:
ttt() //无参构造函数
{
_p = rand() % 2; //轮流走,随机顺序
reset(); //重置
}
void play()
{
int res = Draw; //draw为2
while( true )
{
drawGrid(); //调用函数——给出棋盘
while( true )
{
if( _p )