first commit

master
3259943585@qq.com 7 years ago
commit dd4d8461d3

@ -0,0 +1,287 @@
#include "algorithm"
#include "windows.h"
#include "iostream"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#include "vector"
#include "math.h"
#include "time.h"
#include "string"
#include "map"
using namespace std;
// 去光标
void qgb ( )
{
HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE );
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo ( handle, &CursorInfo );
CursorInfo.bVisible = false;
SetConsoleCursorInfo ( handle, &CursorInfo );
}
// 判断所选位置是否可下 不可下返回-1 可以下返回0
int IsNULL ( int array[3][3], int x, int y )
{
if ( array[x][y] == 0 ) return 0;
return -1;
}
// 打印棋盘
void Print ( int array[3][3] )
{
system( "cls" );
int i, j;
printf ( "\n\n\t井 字 棋\n" );
for ( i = 0; i < 3; i ++ )
{
printf ( "\n\t+-+-+-+\n\t|" );
for ( j = 0; j < 3; j ++ )
{
if ( array[i][j] == 0 ) printf( " " );
if ( array[i][j] == 1 ) printf( "X" );
if ( array[i][j] == -1 ) printf( "O" );
printf( "|" );
}
}
printf ( "\n\t+-+-+-+\n\n" );
}
// 电脑下子
int GO ( int array[3][3] )
{
int i, t;
int k;
for ( i = 0; i < 3; i ++ )
{
t = array[i][0] + array[i][1] + array[i][2];
if ( t == -2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[i][k] == 0 )
{
array[i][k] = -1;
return 0;
}
}
}
}
for ( i = 0; i < 3; i ++ )
{
t = array[0][i] + array[1][i] + array[2][i];
if ( t == -2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][i] == 0 )
{
array[k][i] = -1;
return 0;
}
}
}
}
int j = 0; t = 0;
for ( i = 0; i < 3; i ++ )
{
j += array[i][i];
t += array[i][2-i];
}
if ( t == -2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][2-k] == 0 )
{
array[k][2-k] = -1;
return 0;
}
}
}
if ( j == -2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][k] == 0 )
{
array[k][k] = -1;
return 0;
}
}
}
for ( i = 0; i < 3; i ++ )
{
t = array[i][0] + array[i][1] + array[i][2];
if ( t == 2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[i][k] == 0 )
{
array[i][k] = -1;
return 0;
}
}
}
}
for ( i = 0; i < 3; i ++ )
{
t = array[0][i] + array[1][i] + array[2][i];
if ( t == 2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][i] == 0 )
{
array[k][i] = -1;
return 0;
}
}
}
}
j = 0; t = 0;
for ( i = 0; i < 3; i ++ )
{
j += array[i][i];
t += array[i][2-i];
}
if ( t == 2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][2-k] == 0 )
{
array[k][2-k] = -1;
return 0;
}
}
}
if ( j == 2 )
{
for ( k = 0; k < 3; k ++ )
{
if ( array[k][k] == 0 )
{
array[k][k] = -1;
return 0;
}
}
}
while ( 1 )
{
srand ( time ( 0 ) );
i = rand ( ) % 3;
j = rand ( ) % 3;
if ( IsNULL ( array, i, j ) == 0 )
{
array[i][j] = -1;
break;
}
}
return 0;
}
// 平局返回0;正方胜返回1;负反胜利返回-1;否则返回6;
int Check ( int array[3][3] )
{
int i, t;
for ( i = 0; i < 3; i ++ )
{
t = array[i][0] + array[i][1] + array[i][2];
if ( t == -3 ) return -1;
if ( t == 3 ) return 1;
}
for ( i = 0; i < 3; i ++ )
{
t = array[0][i] + array[1][i] + array[2][i];
if ( t == -3 ) return -1;
if ( t == 3 ) return 1;
}
int j = 0; t = 0;
for ( i = 0; i < 3; i ++ )
{
j += array[i][i];
t += array[i][2-i];
}
if ( t == -3 || j == -3 ) return -1;
if ( t == 3 || j == 3 ) return 1;
for ( i = 0; i < 3; i ++ )
{
for ( j = 0; j < 3; j ++ )
{
if ( array[i][j] == 0 ) return 6;
}
}
return 0;
}
int CP ( int array[3][3] )
{
int t = Check ( array );
Print ( array );
if ( t == 0 )
{
printf ( "\t 平局!");
system ( "pause" );
return 0;
}
if ( t == 1 )
{
printf ( "\t 恭喜你 赢了! ");
system ( "pause" );
return 0;
}
if ( t == -1 )
{
printf ( "\t 很抱歉 输了! ");
system ( "pause" );
return 0;
}
return -1;
}
int main ( )
{
system ( "title 井字棋小游戏--BY:nanshao_zz" );
qgb ( );
int array[3][3];
memset ( array, 0, sizeof ( array ) );
Print ( array );
int x, y, t;
while ( 1 )
{
scanf ( "%d %d", &x, &y );
x --;
y --;
if ( x > 2 || y > 2 || x < 0 || y < 0 )
{
printf( "\t输入范围: 1-3 " );
continue;
}
if ( IsNULL ( array, x, y ) == -1 )
{
printf ( "所选位置已存在! " );
continue;
}
array[x][y] = 1;
t = CP ( array );
if ( t == 0 ) return 0;
GO ( array );
t = CP ( array );
if ( t == 0 ) return 0;
}
return 0;
}

Binary file not shown.
Loading…
Cancel
Save