井字棋游戏 代码分析

本文详细分析了一个使用Visual C++.NET 2003开发的井字棋小游戏,包括游戏界面显示、鼠标追踪、游戏逻辑及人工智能算法。程序通过人机对战模式,实现了棋盘的绘制、棋子放置以及胜负判断等功能。
摘要由CSDN通过智能技术生成

井字棋游戏

 

开发工具:Visual C++.NET 2003

程序员:黄江斌

程序功能:井字棋小游戏,人机对战版

时间:2005828

 

界面如下图:

 

程序分析:

 

CtictactoeView::CtictactoeView()//程序中关键变量赋初值

{

       // TODO: 在此处添加构造代码

       int i , j;

       for( i = 0 ; i < 3 ; i++ )

              for( j = 0 ; j < 3 ; j++ )

                     myGraph[i][j] = 0;

       currX = -1;

       currY = -1;

       whosTurn = 1;

       whosFirst = 1;

}

 

void CtictactoeView::OnDraw(CDC* pDC)//程序界面、游戏状态的显示

{

       CtictactoeDoc* pDoc = GetDocument();

       ASSERT_VALID(pDoc);

       if (!pDoc)

              return;

 

       // TODO: 在此处为本机数据添加绘制代码

       CBitmap bitmap[9];

       CBitmap *pOldBitmap;

       CDC MemDC;   

       int i , j;

       int myTop = 5;

       int myLeft;

       int mySize = 100;

 

       MemDC.CreateCompatibleDC( pDC );

 

       for( i = 0 ; i < 3 ; i++ )

       {

              myTop = 5 + 105 * i;

              myLeft = 5;

              for( j = 0 ; j < 3 ; j++ )

              {

                     myLeft = 5 + 105 * j;

                     if( myGraph[i][j] == 0 )

                     {

                            bitmap[ 3 * i + j ].LoadBitmap( IDB_BACKGROUND );

                     }

                     else if( myGraph[i][j] == 1 )

                     {

                            bitmap[ 3 * i + j ].LoadBitmap( IDB_CROSS );

                     }

                     else if( myGraph[i][j] == 2 )

                     {

                            bitmap[ 3 * i + j ].LoadBitmap( IDB_ROUND );

                     }

                     else

                     {

                            bitmap[3 * i + j ].LoadBitmap( IDB_CHOOSE );

                     }

                     pOldBitmap = MemDC.SelectObject( &bitmap[ 3 * i + j ] );

                     pDC->BitBlt( myLeft , myTop , mySize , mySize , &MemDC , 0 , 0 , SRCCOPY );

                     MemDC.SelectObject( pOldBitmap );

              }

       }

}

 

void CtictactoeView::OnMouseMove(UINT nFlags, CPoint point)//跟踪鼠标位置

{

       // TODO: 在此添加消息处理程序代码和/或调用默认值

       this->point = point;

 

       int x , y;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值