服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++实现简易的五子棋游戏

C++实现简易的五子棋游戏

2022-11-22 12:28shandy1012 C/C++

这篇文章主要为大家详细介绍了C++实现简易的五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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();
}

效果图:

C++实现简易的五子棋游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/shandy1012/article/details/106314917

延伸 · 阅读

精彩推荐
  • C/C++C语言新建临时文件和临时文件名的方法

    C语言新建临时文件和临时文件名的方法

    这篇文章主要介绍了C语言新建临时文件和临时文件名的方法,分别是mkstemp()函数和mktemp()函数的使用,需要的朋友可以参考下...

    C语言教程网6002021-03-09
  • C/C++windows下在vim中搭建c语言开发环境的详细过程

    windows下在vim中搭建c语言开发环境的详细过程

    这篇文章主要介绍了windows下在vim中搭建c语言开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    其铄7072021-11-05
  • C/C++C语言结构体计算内存占用问题解析

    C语言结构体计算内存占用问题解析

    这篇文章主要介绍了C语言结构体计算内存占用问题解析,本文通过案例来解析了C语言计算结构体内存的方式和方法,需要的朋友可以参考下...

    luffy54593942021-11-21
  • C/C++C语言 栈与数组的实现详解

    C语言 栈与数组的实现详解

    栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个...

    m0_520126564962022-11-09
  • C/C++C++实现猜牌小游戏

    C++实现猜牌小游戏

    这篇文章主要为大家详细介绍了C++实现猜牌小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    qq_11612947267772021-09-14
  • C/C++C语言实现餐饮管理系统

    C语言实现餐饮管理系统

    这篇文章主要为大家详细介绍了C语言实现餐饮管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    在zai5392022-10-25
  • C/C++C语言结构体,枚举,联合体详解

    C语言结构体,枚举,联合体详解

    下面小编就为大家带来一篇全面了解C语言结构体,枚举,联合体。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Ja_king_9802022-01-17
  • C/C++C指针原理教程之C内嵌汇编

    C指针原理教程之C内嵌汇编

    在学习 C 语言内嵌汇编的实验过程中,发现内嵌汇编极容易造成段错误。...

    myhaspl7162021-07-21