zoukankan      html  css  js  c++  java
  • c++大作业五子棋-需求分析与设计方案

    写在前边:

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

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

      如需整个工程,移步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

      

  • 相关阅读:
    vb开发最全教程
    javascript javascript面向对象的理解及简单的示例
    javascript jquery封装对象时的错误,求解!我想知道为什么
    c# sql省市联动
    javascript javascript加载类似星座、血型的函数
    c# winform使用IrisSkin2换肤弹不出窗口解决方案
    access + vb + asp 遇到一些问题的总结
    ffmpeg windows下编译ffmpeg
    wffmpeg64.dll调用 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    非托管 调用非托管资源的使用
  • 原文地址:https://www.cnblogs.com/songdechiu/p/4951634.html
Copyright © 2011-2022 走看看