《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (1)

原创 2011年01月16日 15:48:00

网络五子棋游戏QT类的设计与实现 (1)

 

    讲C++课的第一天,老师就让我们编一个C++的五子棋游戏,虽然她给出一些提示,但我还是觉得不可思议,不知从什么地方开始下手 , 于是,拿起中性笔开始在笔记本上鬼画桃符起来:

    1. 按照面向对象的思想结合实际中下五子棋的经验,整个程序至少应该有两个类,一是棋盘类,二是棋子类。

    2. 对于棋盘,它有哪些属性和行为呢?我们知道,棋盘上有格子,所以有一个尺寸规格的属性;开始下棋时,棋盘上应该是干净的,所以需要一个清理棋盘的行为;要把棋放到棋盘上,所以需要一个放置棋子的行为;下完棋后,还需要一个判断谁赢谁输的行为。

    3. 对于棋子,它有哪些属性和行为呢?是的,有黑棋和白棋;还有它们该往哪儿下呢?那么就需要拥有一个棋盘和放置的位置信息;同时,它也有放置棋子行为,放的位置应该是我们下棋的人给它的,所以棋子需要个读取输入信息的行为。

    4. 根据以上思路,大概编写这两个类的头文件:

      4.1 棋盘类  chessBoard.h

       class ChessBoard

       {

        public:

                   void setChessBoard();  // 清理棋盘

                   void setChess(int x , int y,  int chess);// 放置棋子

                   void judgeVictory(); // 判断胜负

        private:

                   int  board[19][19] ; // 棋盘的规格尺寸,一般设为19

       };

      4.2 棋子类 myChess.h

       class MyChess

       {

        public:

                  void readInfo(); // 读取信息

                  void setChess();// 放置棋子

        private:

                  int chessType; // 棋子的类型

                  int currentX;  // 当前放置的X坐标位置

                  int currentY;  // 当前放置的Y坐标位置

                  chessBoard  * board; //当前拥用的棋盘       

       };

  5. 程序实现的关键应在于:哪个先下哪个后下?如何放置一个棋子到棋盘上?如何判断哪个颜色的棋子胜负?

    5.1 我们规定先让黑棋下。

    5.2 第一次下棋的时候,棋盘的任何位置都可以,其他时候需要判断欲下的位置是否被占用。

    5.3 从当前放置位置向8个方向(上下,左右,左上右下,左下右上)查找相同颜色的棋子,如果找到5个棋子连在一起,则代表该颜色的棋子获胜。

 

  6. 开始编写棋盘类和棋子类的实现文件 chessBoard.cpp 、myChess.cpp 和 主文件main.cpp,其中main.cpp如下:

    int main()
   {
      int ret;
      ChessBoard ourboard;   
      MyChess    mychs;
      ourboard.setChessBoard();
   
     while(1)   
     {

    do{
        cout<<"White,you go:"<<endl<<endl;
        mychs.readInfo('W');
        ret=mychs.setChess(&ourboard);
       }while(ret==1);
   
    if(ret==2) break;
      do{
           cout<<"Black,you go:"<<endl<<endl;
           mychs.readInfo('B');
           ret = mychs.setChess(&ourboard);
         }while(ret==1);
        if(ret==2) break;
      }
    cout<<"Bye,Bye!"<<endl<<endl;

 }

  7. 编译程序,并反复修改有bug的地方,我的五子棋第一版运行结果如下:

   

相关文章推荐

《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (5)

第四版的五子棋游戏界面虽然漂亮多了,但是只能自个跟自个下或者两个人轮着下...

《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (2)

第一版的五子棋游戏实在是太简陋了!谁愿意玩这样的游戏?连我自己都觉得没劲,赶快给它增加一个友好一点的界面吧!...

《华清远见学习手记》之 移植网络版五子棋游戏到FS2410

实验时,网络版五子棋游戏已经成功移植到了FS2410上,在这里将列出移植时的一些主要步骤...

《华清远见学习手记》 之3G智能机器人——视频监控客户端软件的设计与实现

视频监控客户端软件的设计与实现,千里之外操控机器人

《华清远见学习手记》之 ubuntu8.10 下搭建QT4.4.0开发环境

ubuntu8.10 下搭建QT4.4.0开发环境

《华清远见学习手记》 之3G智能机器人——移植lynx2.8.5浏览器到FS2410

本文即将移植的lynx,主要的目的就是用来实现动态IP绑定的,而不是使用它来浏览网页...

《华清远见学习手记》之 移植gspca摄像头驱动到FS2410

移植gspca摄像头驱动到FS2410

《华清远见学习手记》 之3G智能机器人——移植视频监控客户端到我的Nokia E52上

移植视频监控客户端到我的Nokia E52上,随时随地通过手机操控机器人

华清远见c语言学习笔记四

/*  * test.c  *  *  Created on: Jun 29, 2012  *      Author: 孙旭  *      华清远见实验室  */ /*******1...

华清远见C语言学习笔记八

/*  * test.c  *  *  Created on: Jun 29, 2012  *      Author: 孙旭  *      华清远见实验室  */ /*使用链表和文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (1)
举报原因:
原因补充:

(最多只允许输入30个字)