• C++ MFC棋牌类小游戏day4


    根据昨天的计划,今天开始做下面的内容。

    1.鼠标点击事件

    2.点击坐标进行处理。(坐标转换)

    3.判断选中的位置是否有效。

    4.确定选中的棋子,设置棋子的状态和棋子所在坐标的状态。

    5.判断移动是否有效

    6.设置移动后棋子的状态和坐标的状态。

    鼠标点击事件在View中进行。如何把棋子移动和坐标转换进行有效的解耦合是当前的问题。

    我开始的想法是Move单独写成一个类,坐标转换单独写一个Common,当触发鼠标左键点击时间时候,调用Move类,Move类中通过坐标转换算法,计算出坐标,暂时先不考虑规则,只实现鼠标单机移动棋子。5和6暂时不考虑。

    Move类跟Piece类中的Move方法有重叠,暂时先不使用Move类,使用move方法试试。

    使用move方法的缺陷是不知道鼠标点击的坐标应该传给哪一类棋子,因为规则还没有指定,刚才想设计Move类是想用Move类做一个过渡,这样的话Move类起到的作用应该是当做规则来使用,用来协调调用哪一个棋子的move方法。这样的话那就把Move类改为Ruler类,后面的规则在里面添加。

    经过排查,终于找到纠结的原因了,是因为自己在前面挖的一个大坑,在初始化棋子的时候,棋子的状态依然是用的Location结构体定义的,没有对棋子的状态进行保存,导致后面无法获得棋子的状态。

    创建一个新的结构体Piece_State,用来记录棋子的状态;

    struct Piece_State
    {
    	int x = 0;
    	int y = 0;
    	int num = 0;//记录棋盘0-24序号
    	bool isSurvice = true;
    	bool isChose = false;
    
    };
    

      

     今天先到这了,代码不完善,先不放了

  • 相关阅读:
    asp.net 实现pdf、swf等文档的浏览
    VS NuGet加载本地程序包
    《大型网站技术架构》读书笔记
    全排列组合算法
    GDI+绘制半圆按钮
    oracle dblink 查询 tns:无法解析指定的连接标识符
    最少有多少鸡蛋(求最小公倍数)
    杨辉三角
    Android开发面试题(一)
    2015年11月系统架构设计师案例分析题
  • 原文地址:https://www.cnblogs.com/smh2015/p/9694217.html
Copyright © 2020-2023  润新知