C++ MFC棋牌类小游戏day2

反思了一下昨天的设计,觉得略有不足,我决定把棋盘做成单例模式。这样的话需要重新设计棋盘类,emmm,是新建棋盘类。

Baord类

成员变量:

Location  coordinate;//棋子坐标

bool isHavePiece;//记录是否有棋子

CRect rect;//备用

vector<Loaction> all_Board;//整个棋盘

方法:

int  Coordinate_Px(Location  loc,CRect &rect);

int  Px_Coordinate(CRect rect,Location  &loc);

先这样吧,不够再加

 这样的话,棋子应该也需要重新设计一下

PaintPiece方法只负责话棋子,位置通过棋盘类中的Px_Coordinate转换

嗯。。。。。今天留下了一堆问题,明天有时间的话去解决

1.Tiger棋子画失败,应该是View的OnSize传的cx和cy的问题

2.搞清楚cx和cy的值是什么

3.嗯。。。我的逻辑应该没问题

链接:https://pan.baidu.com/s/1UlTCEDepaOPHVtynxGbtmQ 密码:t3nw

 找到上面的问题了

1.问题一出在OnSize这边,传输的cx和cy都是0

在网上搜了一下,好像也有网友遇到过这个情况,看到过一位博主提到重绘,待会试一下,现在我是通过OnPaint传的值

试过Invalidate(),并没什么用,以后再查一下

2.问题二在画棋子时候我resize了vector的大小,导致前两个空间已经存了0,注释掉即可

 有发现一个大bug,棋子位置不随着窗口大小改变,本来是以为OnSize和Onpaint的问题,通过调试发现是tiger和board里面的vector没有清除,导致内部数据无限累加,使用ersase(beg,end)清理一遍就ok了。

需要添加free board类的释放方法。

    

原文地址:https://www.cnblogs.com/smh2015/p/9682788.html