#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int n;
bool isokw(char mp[21][21]){
for(int i=1;i<=19;i++){
for(int j=1;j<=19;j++){
if(mp[i][j]=='W'){
int cnt=1;
for(int c=j+1;c<=19;c++){
if(mp[i][c]!='W'){
break;
}
cnt++;
}
for(int c=j-1;c>=1;c--){
if(mp[i][c]!='W'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
cnt=1;
for(int r=i+1;r<=19;r++){
if(mp[r][j]!='W'){
break;
}
cnt++;
}
for(int r=i-1;r>=1;r--){
if(mp[r][j]!='W'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
cnt=1;
for(int r=i+1,c=j+1;r<=n&&c<=n;r++,c++){
if(mp[r][c]!='W'){
break;
}
cnt++;
}
for(int r=i-1,c=j-1;r>=1&&c>=1;r--,c--){
if(mp[r][c]!='W'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
}
}
}
return false;
}
bool isok(char mp[21][21]){
for(int i=1;i<=19;i++){
for(int j=1;j<=19;j++){
if(mp[i][j]=='B'){
int cnt=1;
for(int c=j+1;c<=19;c++){
if(mp[i][c]!='B'){
break;
}
cnt++;
}
for(int c=j-1;c>=1;c--){
if(mp[i][c]!='B'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
cnt=1;
for(int r=i+1;r<=19;r++){
if(mp[r][j]!='B'){
break;
}
cnt++;
}
for(int r=i-1;r>=1;r--){
if(mp[r][j]!='B'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
cnt=1;
for(int r=i+1,c=j+1;r<=n&&c<=n;r++,c++){
if(mp[r][c]!='B'){
break;
}
cnt++;
}
for(int r=i-1,c=j-1;r>=1&&c>=1;r--,c--){
if(mp[r][c]!='B'){
break;
}
cnt++;
}
if(cnt>=5){
return true;
}
}
}
}
return false;
}
int main(){
while(1)
{
puts("**五子棋炸弹小游戏**");
puts(" 谁想陪我玩一玩? ");
puts(" ——编程兔制造");
char mp[21][21];
int maxsize = 15;
ST1:;
sleep(2);
system("cls");
puts(" 请选择棋盘的大小:默认是15*15,最大19*19 ");
int ms;
scanf("%d",&maxsize);
sleep(2);
system("cls");
printf(" 请确认:棋盘的大小是%d*%d \n", maxsize, maxsize);
// puts(" 如果正确,请打Y,否则请打N");
// char ch;
// scanf("%c", ch);
// if(ch == 'N')
// {
// goto ST1;
// }
n=maxsize;
memset(mp, '.', sizeof mp);
while(1)
{
sleep(2);
system("cls");
for(int i=1;i<=maxsize;i++){
for(int j=1;j<=maxsize;j++){
printf("%c ", mp[i][j]);
}
printf("\n");
}
puts("现在黑方落子:请选择坐标(X, Y)");
int x, y;
scanf("%d%d",&x,&y);
mp[x][y]='B';
sleep(2);
system("cls");
if(isok(mp)){
puts("黑方胜利!");
break;
}
for(int i=1;i<=maxsize;i++){
for(int j=1;j<=maxsize;j++){
printf("%c ", mp[i][j]);
}
printf("\n");
}
puts("现在白方落子:请选择坐标(X, Y)");
scanf("%d%d",&x,&y);
mp[x][y]='W';
if(isokw(mp)){
puts("白方胜利!");
}
}
puts("下一轮!");
sleep(2);
system("cls");
puts("如果还想玩,请输入1,否则,输入0");
int v;
scanf("%d",&v);
if(v!=1)
{
break;
}
sleep(2);
system("cls");
}
return 0;
}
又:禁止所有人转载!