C++ 实现对战AI五子棋

简介: C++ 实现对战AI五子棋

前言:

    为了能够快速上手一门语言,我们往往在学习了基本语法后,采用写一个小项目的方式来加深理解语言的语法及运用,本文采用c++去实现对战AI五子棋,采用面向对象开发的一款游戏,里面应用了类和对象以及vector容器等知识。

 

一、项目效果展示

image.png

二、游戏思路

image.png

三、游戏框架

image.png

我们这里创建四个类(可以简单的理解为加强版的结构体),玩家类、AI类、棋盘类、棋盘控制类,将玩家类、AI类、棋盘类作为参数传给棋盘控制类,棋盘控制类获取这三个类的信息,从而可以控制游戏的运行,而玩家和AI要进行下棋操作时,需要棋盘信息,所以在玩家和AI类设置棋盘类。

 

根据上面分析,我们搭建好框架,先实现棋盘类功能,再实现AI和玩家类,最后实现棋盘控制类

 

四、棋盘类实现

4.1  用棋盘类构造函数初始化

4.1.1  checkerboard.h

image.png image.png image.png


4.2  棋盘类初始化函数

注:

 

这个初始化函数和棋盘类构造函数的初始化一样,为什么再初始化一次呢?因为我们后面进行游戏运行时,一局结束,再来一局还需要再调用一次棋盘初始化,而定义棋盘类只能调用一次构造函数,所以再创一个棋盘类初始化函数

4.2.1  checkerboard.h

image.png

4.2.2   checkerboard.cpp

image.png image.png


4.3  检查鼠标点击是否有效

注:

 

虽然代码很长,但是思路很简单,先计算点击位置(x,y) 附近的4个落棋位置的实际坐标位置,然后再计算点击位置到这四个落棋位置之间的距离,如果落棋位置与点击位置距离小于棋子大小的0.4倍,就认为这个落棋位置是玩家想要落棋的位置,存储在pos中。若此时该位置没有其他棋子,则为有效点击,返回真。

 

4.3.1 checkerboard.h

棋盘类外:

image.png

棋盘类内:

image.png

4.3.2 checkerboard.cpp

image.png image.png image.png image.png image.png


4.4   下棋

功能:实现记录最后一次落子的位置以及最后一次下棋是玩家方还是AI方,在棋盘二维数组记录落子数据。

 

4.4.1 checkerboard.h

棋盘类外:

image.png

棋盘类内:

image.png

4.4.2 checkerboard.cpp

image.png

4.5  判断棋盘是否下满

4.5.1 checkerboard.h

4.5.2 checkerboard.cpp

image.png

五、玩家类实现

5.1  用玩家类构造函数初始化

5.1.1  chess_player.h

image.png

5.2  玩家下棋

5.2.1 chess_player.h

image.png

六、AI类实现

6.1 用AI类构造函数初始化

6.1.1  AI.h

image.png

image.png

6.2  AI计算权值最高的棋盘空白位置

计算棋盘空白位置的权值,首先对该位置的横、竖、上斜、下斜四个方位做判断,以该位置为起点,每个方位只需要在单方向上判断4个棋子位,反方向判断四个棋子位,统计连续的白子或者黑子个数,根据下面的表格给出相应权重值,选择出累计权值最高的位置为AI落子点。

image.png

 

七、主函数

image.png

 

相关文章
|
10天前
|
存储 人工智能 C++
【PTA】L1-064 估值一亿的AI核心代码(详C++)
【PTA】L1-064 估值一亿的AI核心代码(详C++)
11 1
|
20天前
|
人工智能 测试技术 开发工具
C++中的AI编程助手添加
Fitten Code是一款适用于多种编程环境,如VS Code和Visual Studio的AI编程助手插件。它能自动生成代码、提供实时建议和解决方案,帮助调试错误,支持80多种语言,包括Python、C++等。用户可以通过插件的智能补全功能提高编码速度,使用AI问答解决编程问题,还能生成代码注释、单元测试,检查和修复潜在的代码错误。Fitten Code是免费的,并且提供代码编辑和转换功能,增强开发效率。
26 1
|
1月前
|
存储 人工智能 C++
C++ 实现对战AI五子棋
C++ 实现对战AI五子棋
125 0
|
5天前
|
人工智能
当AI“复活”成为产业:确保数字生命技术始终用于正途的探讨
随着科技的飞速发展,AI技术日益成熟,我们迎来了一个令人瞩目的时代——当AI“复活”不再是科幻电影的情节,而是逐渐成为现实世界的产业,这其中就包括所谓的“数字生命”技术。在这一背景下,通过人物已有影像、声音、语言等内容的学习,克隆数字化的人物形象成为了可能,创造出数字化的“复活”形象。但是正如电影《流浪地球2》所展示的那样,图恒宇将女儿的意识上传到超强计算机,创造出拥有自我意识的数字图丫丫,这一技术奇迹引发了关于伦理、法律和社会责任的深刻探讨,所以说当AI“复活”技术逐渐从实验室走向产业化,我们不得不面对一个严峻的问题:如何确保这项技术始终用于正途?那么本文就来聊聊如何确保数字生命技术始终用于
15 1
当AI“复活”成为产业:确保数字生命技术始终用于正途的探讨
|
1天前
|
机器学习/深度学习 人工智能 搜索推荐
AI在市场营销技术中的崛起:转变数字营销策略
AI在市场营销技术中的崛起:转变数字营销策略
|
1天前
|
人工智能 安全 开发者
技术乐观主义者和末日论者在硅谷展开的关于AI潜藏的危险的激烈辩论
技术乐观主义者和末日论者在硅谷展开的关于AI潜藏的危险的激烈辩论
|
1天前
|
人工智能 算法 安全
AI技术的未来发展与挑战
【6月更文挑战第15天】本文将探讨AI技术的未来发展和可能面临的挑战。随着科技的进步,AI已经在许多领域发挥了重要作用,但同时也带来了一些挑战。我们将从技术、伦理和社会角度来探讨这些问题。
15 6
|
2天前
|
数据采集 存储 人工智能
利用AI技术改善数字化转型项目的九种方法
利用AI技术改善数字化转型项目的九种方法
|
2天前
|
人工智能 搜索推荐 智能硬件
2024已然过半,AI技术卷到哪儿了?
【6月更文挑战第15天】2024已然过半,AI技术卷到哪儿了?
|
3天前
|
人工智能 自然语言处理 搜索推荐
AI技术创业有哪些机会?
AI技术创业有哪些机会?
7 0

热门文章

最新文章