zoukankan      html  css  js  c++  java
  • 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;
    
    };
    

      

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

  • 相关阅读:
    关于迭代器模式的个人理解
    设计模式之迭代器模式详解(foreach的精髓)
    关于备忘录模式的个人理解
    设计模式之备忘录模式详解(都市异能版)
    关于桥接模式的个人理解
    桥接模式详解(都市异能版)
    设计模式之 中介者模式
    关于命令模式个人的理解 撤销 重做的实现
    剑指offer 连续子数组的最大和
    剑指offer 删除链表中重复的结点
  • 原文地址:https://www.cnblogs.com/smh2015/p/9694217.html
Copyright © 2011-2022 走看看