本文实例为大家分享了C++实现简易五子棋游戏的具体代码,供大家参考,具体内容如下
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
//用c++实现五子棋 #include <iostream> #include <cstdlib> #include "getch.h" using namespace std; enum Role{RED=99,BLUE}; class Gobang { char board[15][15]; int key_x,key_y; Role role; public : Gobang( int key_x=7, int key_y=7,Role role=RED):key_x(key_x),key_y(key_y),role(role) {} void start( void ) { for (;;) { show_board(); get_key(); if (check_key()) { show_board(); printf ( "%d\n" ,role); cout << "恭喜" << (role==RED? "红方" : "蓝方" ) << "胜利!" << endl; break ; } change_role(); } } // 显示棋盘 void show_board( void ) { system ( "clear" ); printf ( " " ); for ( int i=0; i<15; i++) { printf ( " %c" , 'A' +i); } printf ( "\n" ); for ( int x=0; x<15; x++) { printf ( "%2d" ,x+1); for ( int y=0; y<15; y++) { if (RED==board[x][y]) { printf ( "\33[31m" ); printf ( " @" ); printf ( "\33[0m" ); } else if (BLUE == board[x][y]) { printf ( "\33[34m" ); printf ( " #" ); printf ( "\33[0m" ); } else { printf ( " *" ); } } printf ( "\n" ); } } // 获取棋子 void get_key( void ) { for (;;) { // 设置光标的位置 printf ( "\33[%d;%dH" ,key_x+2,(key_y+2)*2); switch (getch()) { case 183: key_x>0 && key_x--; break ; case 184: key_x<15 && key_x++; break ; case 185: key_y<15 && key_y++; break ; case 186: key_y>0 && key_y--; break ; case 10: if (RED!=board[key_x][key_y] && BLUE!=board[key_x][key_y]) { board[key_x][key_y] = role; return ; } } } } size_t count_key( int off_x, int off_y) { size_t count = 0; for ( int x=key_x+off_x,y=key_y+off_y; x>=0 && x<15 && y>=0 && y<15 && board[x][y] == board[key_x][key_y]; x+=off_x,y+=off_y) { count++; } return count; } // 检查是否有5子产生 bool check_key( void ) { if (4 <= count_key(0,-1)+count_key(0,1)) return true ; if (4 <= count_key(-1,0)+count_key(1,0)) return true ; if (4 <= count_key(-1,-1)+count_key(1,1)) return true ; if (4 <= count_key(-1,1)+count_key(1,-1)) return true ; return false ; } // 切换角色 void change_role( void ) { role = (RED==role?BLUE:RED); } }; int main() { Gobang b; b.start(); } |
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/shandy1012/article/details/106314917