【五子棋实战】第1章 项目架构与开发思路

news2024/12/24 8:52:16

【五子棋实战】第1章 项目总览

  • 前言
    • ## 项目技术栈
    • ## 项目可配置性
  • 博客目录
  • 项目预览
  • 项目代码获取
  • 项目架构
    • ## 架构:前端页面 + 算法接口
    • ## 前端页面
    • ## 算法接口
  • 开发思路

前言

  五子棋是一种古老而受欢迎的棋类游戏,本博客将介绍如何使用前端和算法接口来制作一个五子棋游戏。

  此次实战项目包含项目的所有代码教学的系列博客,分别放在公众号、CSDN,以便广大读者能够更好地学习、实践与二开。

## 项目技术栈

  前端:Web基础知识、JQuery、AJAX、响应式设计;
  后端算法接口:Python、Flask库、Numpy库、博弈树极大极小值alpha-beta剪枝算法、Python项目部署(Windows平台打包exe、Linux平台部署服务)

## 项目可配置性

  · 支持只使用后端接口服务,界面自定义
  · 接口支持win、linux平台
  · 接口提供电脑攻击权重设置、棋盘大小、电脑递归深度设置
  · 前端页面支持响应式设计
  · 前端页面支持棋盘大小、背景、线宽、行距自适应配置
  · 提供五子棋“悔棋”功能,提供难度选择功能(只需要修改递归深度)


博客目录

  【五子棋实战】第1章 项目架构与开发思路
  【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法
  【五子棋实战】第3章 算法包装成第三方接口


项目预览

  本项目自适应各种设备屏幕大小,电脑端与手机端效果如下,支持更多自定义操作:

在这里插入图片描述
在这里插入图片描述


项目代码获取

  回复

  本项目的文件结构如下:
在这里插入图片描述
  Gobang-api存放接口代码;Gobang-ui存放前端界面代码。


项目架构

## 架构:前端页面 + 算法接口

  为了实现一个完整的五子棋游戏,选择采用前端页面和算法接口相结合的架构。前端负责展示游戏画面和用户交互,而算法接口则负责实现五子棋的核心算法。

  目的是开发出一个前端页面和算法接口弱耦合性的项目,只要开发出一个后端接口,每次输入棋盘的值,接口就可以返回下一步要下棋的位置。这样大家可以自定义自己的前端页面,不必局限于语言,界面用QT、Web、Python做都可以。

## 前端页面

  技术选型:主要用Web基础写页面,五子棋绘图用的是canvas画布。额外注意一下响应式设计。

## 算法接口

  预期目标:以接口访问的形式去获取下一步应该落子的坐标。要无状态,就是说算法里面的一些变量不依赖棋局的进行一次次保存,而是每次输入一个棋局,它去计算当前最优点返回。

  输入输出:输入就是棋盘值,一个二维数组,每个位置存的值表示三种状态:黑、白、空。输出可能会多一些,但是最主要的就是下一步落子的x、y坐标,可能还会有当前的玩家是谁、棋局step等等,这个我们会在后续接口设计的章节里面详细介绍。

  封装接口:当算法设计好之后,我们期望能把它部署到服务器,作为一个第三方去调用,甚至你可以去提供按次收费的五子棋第三方服务。

  接口部署:接口开发好了之后,需要使用,可以在本地使用,也可以部署到服务器。所以还会讲解如何在Windows、Linux平台部署接口。

  技术选型:这种轻量级的算法,首先排除Java;C++应该是首选但是我不会;JS是次首选但是开放成接口不方便,而且我们的算法是很吃CPU的,JS性能也不好;最后考虑使用Python,写法简单,开放接口简单,部署简单


开发思路

  在确定好项目的架构和技术选型之后,我们需要拆分任务,明确开发思路,给自己排期:

  1、了解博弈树极大极小值alpha-beta剪枝算法,代码实现;

  2、将算法包装成第三方接口的形式;

  3、实现接口在Win、Linux的部署;

  4、开发前端页面,注意响应式、面向对象设计、可配置性;

  5、实现游戏的业务逻辑并进行联调,完成五子棋游戏制作;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matplotlib-直方图、箱型图

1. 直方图 hist函数来创建一个直方图。下面是对各个参数的解释: x:要绘制直方图的数据序列。bins:指定直方图的边界范围和间隔。这里使用range(40, 110, 6)表示边界从40到110,间隔为6。facecolor:直方图的填充颜色。…

unity UGUI源码分析(4)Text与TextMeshPro

这一篇博客用于分析Text的内容的更新机制,并分析text mesh pro。 首先我们分析Text的文字是如何渲染出来的。 PupulateWithErrors方法会根据字符串生成顶点数据。其实Text会根据所给定的字符串生成相关的图集,然后对图集进行采样就可以渲染出文字了。由…

【五子棋实战】第3章 算法包装成第三方接口

【五子棋实战】第3章 算法包装成第三方接口 使用Flask开放接口 ## 定义接口输入 ## 开放接口、跨域配置、数据解析 数据预处理 ## 数据检查与异常捕获 ## 预处理数据 ## 定义接口输出 开启接口 继续学习下一篇实战! 我们在上一章实现了博弈树负值极大alpha…

最适合入门的100个深度学习实战项目

🚨注意🚨:最近经粉丝反馈,发现有些订阅者将此专栏内容进行二次售卖,特在此声明,本专栏内容仅供学习,不得以任何方式进行售卖,未经作者许可不得对本专栏内容行使发表权、署名权、修改…

Linux系统安装nginx+入门笔记

安装过程 1.加载wget命令 yum install wget 2.拉取安装包 wget https://nginx.org/download/nginx-1.16.1.tar.gz 3.解压安装包 tar -zxvf nginx-1.16.1.tar.gz 4.执行这个命令自动配置一下 5.编译安装 make make install 6.查看nginx安装的位置 whereis nginx 7.…

基于Python的反爬虫技术的研究设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

链表刷题(4~8)

目录 反转链表 返回中间节点 倒数k个节点 链表分割 判断回文 反转链表 单链表刷题时我们遇到过一个反转链表,那时我们采用的是头插的方式达到反转的效果,那能不能把指针反过来呢?答案是可以的。 这里用三个指针是为了记录后面节点的数据&…

SpringBoot+Vue 的智慧养老系统(Java 项目,附源码,数据库)

作者:程序员徐师兄 个人简介:7 年大厂程序员经历,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流! 各类成品java毕设 。javaweb,ssh,ssm,springboot等等项…

Jira 8.4.1在Windows环境下的安装和配置

一. Jira安装的环境准备 1.JDK1.8的下载和安装 Jira的运行是依赖java环境的,也就是说需要安装JDK并且要是1.8以上版本。(网上搜一下教程) 2.MySQL数据库的下载和安装(网上搜一下教程) 数据库版本:MySQL5.6,版本太高有时会出现连接不到的…

从双目标定到立体匹配:pyton实践指南

文章目录 前言标定立体匹配文章已经同步更新在3D视觉工坊啦,原文链接如下: 前言 立体匹配是计算机视觉中的一个重要领域,旨在将从不同角度拍摄的图像匹配起来,以创建类似人类视觉的3D效果。实现立体匹配的过程需要涉及许多步骤&a…

华为OD机试真题B卷 Java 实现【统计每个月兔子的总数】,附详细解题思路

一、题目描述 有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。 例如:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子,假如兔子都…

dvwa靶场通关(七)

第七关:SQL Injection(sql注入) low 我们输入 1,出现报错信息,根据报错信息可知,查询语句是单引号闭合的字符型 接着判断字段数 1 order by 3# 报错 1 order by 2# 正常 所以字段数就是2 利用联合查询爆出数据库名…

农村小子背井离乡北漂的这些年

人生虽不尽人意、生活也并不完美、可生活依旧很美 1. 写在前面 由于工作变动及其他种种原因吧,很长的一段时间内没有再去写文章。始于2019年初夏,止于2020年初冬,再次落笔于2023年的夏季。恰好今天是端午节,祝大家端午安康 白驹过…

springboot第28集:springboot一些概念

DataScopeAspect 数据过滤处理 此切面在执行带有ControllerDataScope注解的方法之前进行数据权限过滤。首先获取当前登录用户,然后判断当前用户是否为超级管理员。如果不是超级管理员,则获取权限字符,默认使用上下文中的权限字符。接下来&am…

【计算机组成原理】2、二进制和十六进制转换,进制相减、内存地址偏移计算与容量计算

文章目录 一、进制转换1.1 二进制转十六进制1.2 十六进制转二进制 二、进制相减2.1 十六进制 三、内存地址偏移计算3.1 根据首末地址,求存储容量3.2 根据末地址 和 存储容量,求首地址 一、进制转换 1.1 二进制转十六进制 因 2 4 16 2^416 2416&#…

leetcode300. 最长递增子序列(动态规划-java)

最长递增子序列 leetcode300. 最长递增子序列题目描述解题思路代码演示: 二分法改进(N * logN)动态规划专题 leetcode300. 最长递增子序列 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/longest-increasing-subsequenc…

C++标准输出

C将输入和输出看作字节流,输入时,程序从输入流中抽取字节,输出时,程序将自己插入到输出流中,流充当了程序与流源或流目标之间的桥梁,也就是说C通过流与硬件,文件相关联,流赋予了C程序…

[数字图像处理]第六章 彩色图像处理

第六章 彩色图像处理 引言 ​ 彩色图像处理可分为两个主要领域:全彩色处理和伪彩色处理。在第一类中, 通常要求图像用全彩色传感器获取,如彩色电视摄像机或彩色扫描仪。在第二类中,问题是对一种特定的单色灰度或灰度范围赋予一种…

设计模式之装饰者模式笔记

设计模式之装饰者模式笔记 说明Decorator(装饰)目录装饰者模式示例类图快餐类炒饭类炒面类装饰者类鸡蛋类培根类测试类 说明 记录下学习设计模式-装饰者模式的写法。JDK使用版本为1.8版本。 Decorator(装饰) 意图:动态地给一个对象添加一些额外的职责。 结构: 其中&#x…

【Neo4j教程之CQL命令基本使用】

🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…