猫史档案馆


室长求助!

用户:萌新大佬萌新大佬查看:78 回复:8 评论:32 创建时间:2021-07-19T17:23:01


这个五子棋怎么错的??!!

#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include<bits/stdc++.h>
using namespace std;

int qp[19][19]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
void printc(const char* s, int color){
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | color | BACKGROUND_INTENSITY | 48);
	printf(s);
	SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7);
}
bool h_(int who,int x,int y){
	bool is_h;
	for(int i=x-3;i<=x;i++){
		is_h=true;
		for(int j=0;j<4;j++){
			if(qp[y][i+j]!=who)is_h=false;
		}
		if(is_h&&(qp[y][i-1]==0&&qp[y][i+4]==0||qp[y][i-1]==who||qp[y][i+4]==who))return is_h;
	}
	return is_h;
}
bool s_(int who,int x,int y){
	bool is_s;
	for(int i=y-3;i<=y;i++){
		is_s=true;
		for(int j=0;j<4;j++){
			if(qp[i+j][x]!=who)is_s=false;
		}
		if(is_s&&((qp[i-1][x]==0&&qp[i+4][x]==0)||qp[i-1][x]==who||qp[i+4][x]==who))return is_s;
	}
	return is_s;
}
bool x_1(int who,int x,int y){
	bool is_x1;
	for(int i=0;i<4;i++){
		is_x1=true;
		for(int j=0;j<4;j++){
			if(qp[y-i+j][x-i+j]!=who)is_x1=false;
		}
		if(is_x1&&((qp[y-i-1][x-i-1]==0&&qp[y-i+4][x-i+4]==0)||(qp[y-i-1][x-i-1]==who&&qp[y-i+4][x-i+4]==who)))return is_x1;
	}
	return is_x1;
}
bool x_2(int who,int x,int y){
	bool is_x2;
	for(int i=0;i<4;i++){
		is_x2=true;
		for(int j=0;j<4;j++){
			if(qp[y-i+j][x+i-j]!=who)is_x2=false;
		}
		if(is_x2&&(qp[y-i+1][x+i-1]==0&&qp[y-i-4][x+i+4]==0||qp[y-i+1][x+i-1]==who||qp[y-i-4][x+i+4]==who))return is_x2;
	}
	return is_x2; 
}
void gotoxy(int x, int y) {
	HANDLE hOut;
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = 2*x;pos.Y = y;
	SetConsoleCursorPosition(hOut, pos);
}
void print(int x,int y){
	if(qp[y][x]==1)printc("●",0);
	else if(qp[y][x]==2)printc("●",7);
	else if(qp[y][x]==3||qp[y][x]==4)printc("●",4);
	else if(y==0&&x==0)printc("┌ ",0);
	else if(y==0&&x==18)printc("┐ ",0);
	else if(y==0)printc("┬ ",0);
	else if(y==18&&x==0)printc("└ ",0);
	else if(y==18&&x==18)printc("┘ ",0);
	else if(y==18)printc("┴ ",0);
	else if(x==0)printc("├ ",0);
	else if(x==18)printc("┤ ",0);
	else if(y==9&&x==9||y==2&&x==2||y==2&&x==15||y==15&&x==2||y==15&&x==15||y==2&&x==9||y==15&&x==9||y==9&&x==2||y==9&&x==15)printc("喵 ",0);
}
int main(){
	int x=9,y=9,o=0,h=0;
	string z[3]={"黑","白"}; 
	system("cls");
	for(int i=0;i<19;i++){
		for(int j=0;j<19;j++){
			print(j,i);
		}
		cout<<endl;
	}
	while(1){
		char a;
		a=_getch();
		if(a=='w'||a==72){
			if(y!=0){
				qp[y][x]=o;
				gotoxy(x,y);
				print(x,y);
				y--;
				o=qp[y][x]; 
				qp[y][x]=h%2+3;
				gotoxy(x,y);
				print(x,y);
			} 
			else{
				gotoxy(0,19);
				printf("wrong step\n");
				system("pause");
				gotoxy(0,19);
				cout<<"											\n								\n								";
			} 
		} 
		else if(a=='s'||a==80){
			if(y!=18){
				qp[y][x]=o;
				gotoxy(x,y);
				print(x,y);
				y++;
				o=qp[y][x]; 
				qp[y][x]=h%2+3;
				gotoxy(x,y);
				print(x,y);
			} 
			else{
				gotoxy(0,19);
				printf("wrong step\n");
				system("pause");
				gotoxy(0,19);
				cout<<"											\n								\n								";
			} 
		} 
		else if(a=='a'||a==75){
			if(x!=0){
				qp[y][x]=o;
				gotoxy(x,y);
				print(x,y);
				x--;
				o=qp[y][x]; 
				qp[y][x]=h%2+3;
				gotoxy(x,y);
				print(x,y);
			} 
			else{
				gotoxy(0,19);
				printf("wrong step\n");
				system("pause");
				gotoxy(0,19);
				cout<<"											\n								\n								";
			} 
		} 
		else if(a=='d'||a==77){
			if(x!=18){
				qp[y][x]=o;
				gotoxy(x,y);
				print(x,y);
				x++;
				o=qp[y][x]; 
				qp[y][x]=h%2+3;
				gotoxy(x,y);
				print(x,y);
			} 
			else{
				gotoxy(0,19);
				printf("wrong step\n");
				system("pause");
				gotoxy(0,19);
				cout<<"											\n								\n								";
			} 
		} 
		else if(a==' '){
			if(o==0){
				qp[y][x]=o=h%2+1;
				gotoxy(x,y);
				print(x,y);
				if(h_(h%2+1,x,y)||s_(h%2+1,x,y)||x_1(h%2+1,x,y)||x_2(h%2+1,x,y)){
					system("cls");
					printf("%s子玩家赢了!!\n",z[h%2].c_str());
					system("pause"); 
					exit(1); 
				}
				h++;
			}
			else {
				gotoxy(0,19);
				printf("wrong step\n");
				Sleep(1000); 
				gotoxy(0,19);
				cout<<"											\n								\n								";
			}
		} 
	}
	return 0; 
}


回复

上一页第 1 页 / 共 1 页下一页
醉醉白凰醉醉白凰

好家伙没错啊

点赞0


评论

跑了吗

没运行怎么知道错没错呀

运行了啊

你多大了?

211行对不对()()

12哈哈哈哈哈

一样

几月的呀

别找到了个师姐就尴尬了

9哈哈哈哈

还好是师妹

不对,你过生日了没

我是五月的

我今年12啊

还好,我以为你是08九月的……

等等,你是女生吧,别搞错了

当然啊()()

我先退了

不要啊


醉醉白凰醉醉白凰

而且为啥斜着判断不了……

点赞0


评论

对,这就是问题

啊这,我去看看

这不就是个遍历的问题嘛……


醉醉白凰醉醉白凰

编译项目变更...
--------
- 项目文件名: C:\Users\小毛人\Desktop\项目1.dev
- 编译器名: TDM-GCC 4.9.2 喵-bit Release

生成 makefile...
--------
- 文件名: C:\Users\小毛人\Desktop\Makefile.win

正在处理makefile...
--------
- makefile处理器: C:\Program Files (x86)\Dev-Cpp\MinGW喵\bin\mingw32-make.exe
- 命令: mingw32-make.exe -f "C:\Users\小毛人\Desktop\Makefile.win" all

mingw32-make.exe: Nothing to be done for 'all'.

编译结果...
--------
- 错误: 0
- 警告: 0
- 输出文件名: C:\Users\小毛人\Desktop\项目1.exe
- 输出大小: 1.84323310852051 MiB
- 编译时间: 0.13s

点赞0


评论

真的一点错也木有报……

我说的是结果问题,不是编译问题


醉醉白凰醉醉白凰

什么啊,我触摸板用不了了,难道是我手没电了!?

 

点赞0


评论


醉醉白凰醉醉白凰

你斜着判断在第几行啊

点赞0


评论


醉醉白凰醉醉白凰

为什么木有注释啊啊啊啊啊

点赞0


评论


CaTionalCaTional

其实我很好奇啊,也不是杠啊就什么的。你用了万能表头,还要conio.h和cstdio.h干嘛呢?都用了.h的表头,还using什么std啊?那个数组也是一言难尽。还有部分if...else的可以用其他比如switch...case代替啊。纯属萌新观点啊,我也不是特别懂啊,也就是略懂略懂而已。

点赞0


评论

习惯了

有小号吗,可以加一个

using那个是自动补全,我也懒得弄了

switch用不惯

纯属习惯,个人观点,就像缩进是tab还是四个空格一样

没有,抱歉

但是这样不美观,也不合理

学C++肯定要知道底层啊,这样写会怎么样要知道啊


醉醉白凰醉醉白凰

说实话感觉代码有 点脏诶诶诶

你可以先去整理一下喂

点赞0


评论