前些时候考完试自己编的带有胜负判定的五子棋。
操作方法:WSAD或↑↓←→移动下棋位置,Space或Enter放置。
如果游戏出现bug,欢迎大家在评论区反馈。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <math.h> #include <algorithm> #include <conio.h> #include <windows.h> using namespace std; #define fblack() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE) #define fwhite() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); ][] , mx = , my = , turn = , nap; char ch; void go(int x , int y) { COORD pos = {x , y}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut , pos); } void pmap() { puts(""); puts(" ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │↘│↙│ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │↗│↖│ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘\n"); } void movemouse(int ax , int ay , int bx , int by) { go( + ay * - , ax * - ); printf(" "); go( + ay * - , ax * - ); printf(" "); go( + ay * - , ax * ); printf(" "); go( + ay * - , ax * ); printf(" "); go( + by * - , bx * - ); printf("↘"); go( + by * - , bx * - ); printf("↙"); go( + by * - , bx * ); printf("↗"); go( + by * - , bx * ); printf("↖"); go( , ); } void changechess(int x , int y , int p) { go( + y * - , x * - ); ) { fblack(); printf("●"); } else { fwhite(); printf("●"); } map[x][y] = p; fblack(); go( , ); } bool judge(int lx , int ly , int p) { int x , y , n; x = lx; y = ly; n = ; && map[x][y] == p) { n ++ ; x -- ; } x = lx + ; y = ly; && map[x][y] == p) { n ++ ; x ++ ; } ) { ; } x = lx; y = ly; n = ; && map[x][y] == p) { n ++ ; y -- ; } x = lx; y = ly + ; && map[x][y] == p) { n ++ ; y ++ ; } ) { ; } x = lx; y = ly; n = ; && y >= && map[x][y] == p) { n ++ ; x -- ; y -- ; } x = lx + ; y = ly + ; && y <= && map[x][y] == p) { n ++ ; x ++ ; y ++ ; } ) { ; } x = lx; y = ly; n = ; && y <= && map[x][y] == p) { n ++ ; x -- ; y ++ ; } x = lx + ; y = ly - ; && y >= && map[x][y] == p) { n ++ ; x ++ ; y -- ; } ) { ; } ; } int main() { system("color 70"); system("mode con cols=80 lines=35"); pmap(); ) { while(ch = getch()) { ) { ch = getch(); && my > ) //l { movemouse(mx , my , mx , my - ); my -- ; } && my < ) //r { movemouse(mx , my , mx , my + ); my ++ ; } && mx > ) //u { movemouse(mx , my , mx - , my); mx -- ; } && mx < ) //d { movemouse(mx , my , mx + , my); mx ++ ; } } else if(ch == 'a') //l { movemouse(mx , my , mx , my - ); my -- ; } else if(ch == 'd') //r { movemouse(mx , my , mx , my + ); my ++ ; } else if(ch == 'w') //u { movemouse(mx , my , mx - , my); mx -- ; } else if(ch == 's') //d { movemouse(mx , my , mx + , my); mx ++ ; } || ch == )&& !map[mx][my]) { changechess(mx , my , turn); nap ++ ; break; } } if(judge(mx , my , turn)) { ) { printf(" 黑方胜!\n\n"); } else { printf(" 白方胜!\n\n"); } break; } ) { printf(" 平局!\n\n"); break; } turn = - turn; } Sleep(); printf(" "); system("pause"); ; }