学下dalao玩下五子棋
#include <conio.h>
#include <windows.h>
#include<stdio.h>
#include<stdlib.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevinstance, PSTR szCmdLine, int iCmdShow);
int main(){
newgame:system("cls");
printf("\n\n\n\n\n\n\t\t\t五子棋游戏\n\t\t\t退出游戏请按Esc键");
printf("\n\t\t\t开始新游戏请按除Esc键任意键");
printf("\n\t\t\t\t游戏出品----zeng");
int ng;
ng=getch();
if(ng==27)
exit(1);
int w=1;
int wei[70][70]={0};
int g[50][50]={0};
system("mode con cols=66 lines=35");
void f(int w,int wei[70][70],int g[50][50]);
int pd(int w,int wei[70][70],int g[50][50]);
int x = 10,y = 10;
int gu;
g[x][y]=1;
f(w,wei,g);
g[x][y]=0;
while(1)
{
gu = getch();
if(gu==80&&x+1<30){
x++;
while(wei[x][y]!=0)
x++;
}
else if(gu==72&&x-1>1){
x--;
while(wei[x][y]!=0)
x--;
}
else if(gu==75&&y-1>0){
y--;
while(wei[x][y]!=0)
y--;
}
else if(gu==77&&y+1<30)
{
y++;
while(wei[x][y]!=0)
y++;
}
g[x][y]=1;
if(gu==13&&w==1&&wei[x][y]==0)
wei[x][y]=1,w=-1;
else if(gu==13&&w==-1&&wei[x][y]==0)
wei[x][y]=2,w=1;
f(w,wei,g);
if(gu==13&&pd(w,wei,g)==1)
{
MessageBox(NULL, TEXT("恭喜白棋玩家获胜!\n单击确定开始新游戏"), TEXT("游戏结束!"), MB_OK);
goto newgame;
}
if(gu==13&&pd(w,wei,g)==2)
{
MessageBox(NULL, TEXT("恭喜黑棋玩家获胜!\n单击确定开始新游戏"), TEXT("游戏结束!"), MB_OK);
goto newgame;
}
g[x][y]=0;
}
return 0;
}
void f(int w,int wei[70][70],int g[50][50])
{
system("cls");
int i,t;
int x,y;
int n=15,m=15;
for(i=1;i<=n;i++)
{
if(i==1)printf("┌─");
else if(i==n)printf("└─");
else printf("├─");
for(t=1;t<m;t++)
{
if(i==1)printf("┬─");
else if(i==n)printf("┴─");
else if(wei[i][t]==1)
printf("●");
else if(wei[i][t]==2)
printf("○");
else if(g[i][t]==1)
printf("▉");
else if(g[i][t+1]==1)printf("┼ ");
else printf("┼-");
}
if(i==1)printf("┐");
else if(i==n)printf("┘");
else printf("┤");
printf("\n");
}
printf("操作说明:方向键移动方形光标,回车键在光标所在位置落子\n");
printf("\n ");
return ;
}
int pd(int w,int wei[70][70],int g[50][50])
{
int i,t;
int j,k;
int x=0,y=0;
for(i=1;i<=35;i++)
for(t=1;t<=35;t++)
{
if(wei[i][t]==1)x++;
else x=0;
if(x>=5)return 1;
if(wei[i][t]==2)y++;
else y=0;
if(y>=5)return 2;
}
for(i=1;i<=35;i++)
for(t=1;t<=35;t++)
{
if(wei[t][i]==1)x++;
else x=0;
if(x>=5)return 1;
if(wei[t][i]==2)y++;
else y=0;
if(y>=5)return 2;
}
for(i=-35;i<35;i++)
for(t=1;t<=35;t++)
{
if(wei[t][t+i]==1&&t+i>=0)x++;
else x=0;
if(x>=5)return 1;
if(wei[t][t+i]==2&&t+i>=0)y++;
else y=0;
if(y>=5)return 2;
}
for(i=1;i<=66;i++)
for(t=0;t<=66;t++)
{
if(wei[t][i-t]==1&&i-t>=0)x++;
else x=0;
if(x>=5)return 1;
if(wei[t][i-t]==2&&i-t>=0)y++;
else y=0;
if(y>=5)return 2;
}
return 0;
}