1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| #include <windows.h> #include <bits/stdc++.h> #include<conio.h> const int n=19; int map[30][30]; int x,y,sx=0,sy=2; const int fig[9][2]={{0,0},{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{1,1},{-1,1},{1,-1}}; void SetPos(int x,int y) { COORD pos; HANDLE handle; pos.X=x; pos.Y=y; handle=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(handle,pos); } void setColor(unsigned short ForeColor=7,unsigned short BackGroundColor=0){ HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle,ForeColor+BackGroundColor*0x10); } void end(bool player) { if(player==0) MessageBox(NULL,"BLACK player wins!","WIN!",MB_OK); if(player==1) MessageBox(NULL,"WHITE player wins!","WIN!",MB_OK); } bool checkst(int x,int y) { if(x<1||y<1||x>n||y>n) return 0; return 1; } int main() { start: x=y=10; system("cls"); system("color 68"); system("title BLACK play"); system("mode con cols=42 lines=23"); setColor(0,6); std::cout<<" ┌ ┐"<<std::endl; std::cout<<" ├ 五子棋 ┤"<<std::endl; std::cout<<" └ ┘"<<std::endl; memset(map,0,sizeof(map)); setColor(8,6); for(int i=1;i<=n;i++) { std::cout<<" "; for(int i=1;i<=n;i++) std::cout<<"○"; std::cout<<std::endl; } SetPos(sx+x*2,sy+y); int st=0; while(true) { char ch=_getch();
if(ch=='a') if(!checkst(--x,y))x++; if(ch=='d') if(!checkst(++x,y))x--; if(ch=='w') if(!checkst(x,--y))y++; if(ch=='s') if(!checkst(x,++y))y--; SetPos(sx+x*2,sy+y); if(ch=='e') { if(map[x][y]==0) { int t=st%2; if(st&1) { system("title BLACK play"); setColor(15,6); map[x][y]=2; } else { system("title WHITE play"); setColor(0,6); map[x][y]=1; } st++; std::cout<<"●"; SetPos(sx+x*2,sy+y); int a[9]={0}; for(int i=1;i<=8;i++) { int tx=x,ty=y; while(checkst(tx,ty)&&map[tx][ty]==t+1) { tx+=fig[i][0]; ty+=fig[i][1]; a[i]++; } } for(int i=1;i<=4;i++) { if(a[i*2]+a[i*2-1]-1>=5) { end(t); goto start; } } } SetPos(sx+x*2,sy+y); } } }
|