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

简介: 五子棋是一种古老而受欢迎的棋类游戏,本博客将介绍如何使用前端和算法接口来制作一个五子棋游戏。此次实战项目包含项目的所有代码、教学的系列博客,分别放在公众号、CSDN,以便广大读者能够更好地学习、实践与二开。

前言

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

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


## 项目技术栈

  前端:Web基础知识、JQuery、AJAX、响应式设计;

  后端算法接口:Python、Flask库、Numpy库、博弈树极大极小值alpha-beta剪枝算法、Python项目部署(Windows平台打包exe、Linux平台部署服务)


## 项目可配置性

 · 支持只使用后端接口服务,界面自定义

 · 接口支持win、linux平台

 · 接口提供电脑攻击权重设置、棋盘大小、电脑递归深度设置

 · 前端页面支持响应式设计

 · 前端页面支持棋盘大小、背景、线宽、行距自适应配置

 · 提供五子棋“悔棋”功能,提供难度选择功能(只需要修改递归深度)

 · 项目二开自由度很高





博客目录

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

 【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法

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

 【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上

 【五子棋实战】第5章 开发五子棋前端页面

 【五子棋实战】第6章 调用接口进行联调




项目预览


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




项目代码获取


本项目的文件结构如下:



  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、实现游戏的业务逻辑并进行联调,完成五子棋游戏制作;



相关文章
|
13天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
7天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
9天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
12天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
40 6
|
13天前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
10天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
32 2
|
14天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
54 4
|
19天前
|
缓存 运维 监控
后端开发中的微服务架构实践与挑战#### 一、
【10月更文挑战第22天】 本文探讨了微服务架构在后端开发中的应用实践,深入剖析了其核心优势、常见挑战及应对策略。传统后端架构难以满足快速迭代与高可用性需求,而微服务通过服务拆分与独立部署,显著提升了系统的灵活性和可维护性。文章指出,实施微服务需关注服务划分的合理性、通信机制的选择及数据一致性等问题。以电商系统为例,详细阐述了微服务改造过程,包括用户、订单、商品等服务的拆分与交互。最终强调,微服务虽优势明显,但落地需谨慎规划,持续优化。 #### 二、
|
19天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
41 1
|
22天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
40 2