写在前边:

  本来上学期就已经完成这个大作业,临近考试太忙。

  而且老师最后要查重,就没有把代码放上来。

  如需整个工程,移步http://download.csdn.net/detail/sdzuiaidanpianji/9452789

  这篇其实应该在动手编程之前就先想好的。

一、需求分析

  1. 有两种对弈模式:人人对弈模式和人机对弈模式
  2. 采用黑屏字符输入输出实现UI(杨老师要求!!)
  3. 采用打分机制实现五子棋AI
  4. 棋盘大小为15*15,棋盘将显示相应的行列号(A-O)
  5. 棋子有两种颜色黑和白,代表着对弈的双方,棋子放在棋盘行列交叉处,黑棋先下
  6. 黑白任一方先连成5个棋子形成的直线(横线、竖线、对角线),则该方赢对方输
  7. 黑白双方都没连成5个棋子形成的直线,且棋盘已满时,为和局
  8. 最后一步下的位置需明显标记

最后完成的界面:

二、设计方案

因为是课程作业,所以将采用c++面向对象语言实现,开发工具采用VS2012 ultimate,操作系统环境win7旗舰版64位。
大致分为三个模块,棋盘模块、棋子模块、旗手模块(电脑和人)、裁判模块、弈情展示模块、游戏模块

棋子模块主要负责记录棋子的颜色,坐标等信息。
棋盘模块主要负责记录更新棋盘的状态信息。
旗手模块主要产生下步棋子,其中电脑旗手通过AI分析产生下步棋子,人旗手通过标准输入获得下步棋子。
裁判模块主要负责记录当前对弈模式(人人对弈模式或者人机对弈模式)、当前结果、当前旗手。
弈情展示模块主要负责刷新棋盘,输出提示信息如结果等。

  游戏模块主要完成游戏初始化,游戏开始,游戏结束等功能。

最后的类视图:

三、系统实现

棋子类Chess

记录棋子信息:颜色和位置。

主要变量:

int color;0为黑棋,1为白旗。

int row;int column;这里行列均为0-14。

主要方法:

int getColor();

void getPosition(int &row,int &coloumn);

 棋盘类ChessPad

记录棋盘状态信息,那些位置没有棋子,哪些位置有棋子,是什么颜色的棋子。

提供添加棋子方法和获得棋盘信息方法。

主要变量:

  int lastrow;int lastcolumn;记录最后一步的位置,实现最后一步下的位置有特殊标记

int chesspadstate[15][15];0为空,没有棋子;1为黑棋;2为白旗。

3为最后一步的黑棋;4为最后一步的白旗。

主要方法:

void addChess(Chess);

void getChessPadState(int chesspadstate[15][15]);

抽象类旗手Chesser

  int color;String name;0为黑方;1为白方。惯例黑方先下

电脑旗手和人旗手的父类,有产生下步棋子的方法。

Chess giveNextChess(const int chesspadstate[15][15]);

电脑旗手类ComputerChesser

Chesser子类,应该有AI对象,根据传入的棋盘状态,计算出下步要下的棋子。

人旗手类PeopleChesser

Chesser子类,从标准输入处获得下步棋子。

裁判类Judge

主要变量:

int currentmode0为人机对弈模式,1为人人对弈模式

int currentchesser0为黑方,1为白方,默认黑方先下

int whoisblack;确定 谁是黑方,谁先下

主要方法:

  int judgeResult(const int chesspadstate[15][15]);0为还未能判定胜负,1为黑方胜,2为白方胜,3为和棋

  void setCurrentmode(int currentmode);

  int  nextChesser();

对弈情况显示类ResultDisplay:

主要实现弈情输出

主要方法:

void display(const int chesspadstate[15][15], String msg);刷新显示

五子棋AI思路http://www.cnblogs.com/songdechiu/p/5768999.html

c++大作业五子棋-需求分析与设计方案的更多相关文章

  1. 大作业NABC分析结果

    大作业NABC分析结果 这次的大作业计划制作一款关于七巧板的游戏软件.关于编写的APP的NABC需求分析: N:需求 ,本款软件主要面向一些在校的大学生,他们在校空闲时间比较多,而且热衷于一些益智类游 ...

  2. < JAVA - 大作业(2)仿qq即时通讯软件 >

    < JAVA - 大作业(2)仿qq即时通讯软件 > 背景 JAVA上机大作业:设计一个仿qq即时通讯软件 任务简要叙述:设计一款仿QQ的个人用户即时通讯软件,能够实现注册,登陆,与好友聊 ...

  3. 软件工程大作业(学生会管理系统)Web端个人总结报告

    软件工程大作业(学生会管理系统)Web端个人总结报告 一.小组信息 1.所在小组:第二组 2.小组选题:学生会管理系统 3.项目源代码链接: Web端源代码:code 小程序端源代码:code APP ...

  4. 数据库大作业--由python+flask

    这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...

  5. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  6. [留念贴] C#开发技术期末大作业——星月之痕

    明天就要去上海大学参加 2015赛季 ACM/ICPC最后一场比赛 —— EC-Final,在这之前,顺利地把期末大作业赶出来了. 在这种期末大作业10个人里面有9个是从网上下载的国内计算机水平五六流 ...

  7. 团队作业2——需求分析&原型设计

    Deadline: 2017-4-14 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目包括后文的三个方面 需求分析 原型设计 编码规范 晚交 - 0分 迟交两周以上 - ...

  8. 【集美大学1411_助教博客】团队作业2——需求分析&原型设计 成绩

    首先要向各位同学道歉,最近助教的工作较多,并且伴随着频繁的出差,评论博客和评分都不及时,以致于同学们都没有得到反馈,在此我要表示歉意.其次,对于第二次团队作业,有两个团队没有提交到班级博客中但按时完成 ...

  9. 【1414软工助教】团队作业2——需求分析&原型设计 得分榜

    题目 团队作业2--需求分析&原型设计 作业提交情况情况 本次作业所有团队都按时提交作业. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 ...

随机推荐

  1. Atitit swt 4.3 4.4 4.5 新特性java attilax总结

    Atitit swt 4.3 4.4 4.5 新特性java attilax总结 1. 4.5 Release - June 3, 20151 1.1. Older Releases1 2. SWT  ...

  2. [译]NeHe教程 - 添加颜色

    原文: Adding Colour 上一节我讲解了如何在屏幕显示三角形和四边形.本节会讲解如何上色.单色(Flat)顾名思义就是只能涂一种实心的颜色.平滑颜色(Smooth)可以在各个顶点混合三种颜色 ...

  3. Visual Studio的 Apache Cordova 插件CTP3.0发布!

    北京时间12号晚23点开始的Connect()活动上,微软发布了一系列激动人心的消息! .NET开源了!以后.NET将可在Linux和Mac OS平台上运行! VS免费了!!如果你是学生,个人开发者, ...

  4. Vim使用技巧(1) -- 普通模式技巧 【持续更新】

    直观的来一张键盘图先 符号快捷键 . //重复上次修改 ^ //光标快速跳转到当前行开头 $ //光标快速跳转到当前行结尾 f{char} //光标快速跳转到当前行下一个{char}字符,{char} ...

  5. NPTL LinuxThreads

    Linux 线程模型的比较:LinuxThreads 和 NPTL 进行移植的开发人员需要了解的关键区别摘要 Vikram Shukla 2006 年 8 月 28 日发布 WeiboGoogle+用 ...

  6. Tautology - poj 3295

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10437   Accepted: 3963 Description WF ...

  7. Weblogic配置故障转移

    前提:实现负载均衡,即当访问项目时,会通过代理服务器将请求分发到不同的服务器上. weblogic的故障转移配置 在项目的WEB-INF目录下创建weblogic.xml <!DOCTYPE w ...

  8. 【WPF学习笔记】之WPF基础:依赖关系属性和通知

    这些天来,对象似乎已经忙得晕头转向了.每个人都希望它们做这做那.Windows® Presentation Foundation (WPF) 应用程序中的典型对象会接到各种各样不同的请求:有要求绑定到 ...

  9. python 利用pymssql连接MSSQL数据库,简单示例

    #-*- coding:GBK -*- import pymssql print 'Connect to the Datebase....' conn = pymssql.connect(host=' ...

  10. &lt;C#入门经典&gt;学习笔记1之初识C#

    序言 选择< C#入门经典第五版>作为自学书籍,以此记录学习过程中的笔记与心得. C#简单介绍 1. C#是一种块结构的语言 2. C#区分大写和小写 C#变量 C#的变量定义与C语言相似 ...