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;
    
    };
    

      

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

  • 相关阅读:
    微信菜单设置为小程序报错85005错误
    VS2013常用快捷键
    VS2017专业版和企业版激活密钥
    微信小程序image组件binderror使用例子(对应html、js中的onerror)
    本科无学位有哪些途径来获得硕士学位
    asp.net 微信JsSDK
    使用nginx反向代理,一个80端口下,配置多个微信项目
    对称与非对称加密;SSL;HTTPS;AJP
    java 在实例化异常的时候做的事情
    简单理解正向,反向,透明代理
  • 原文地址:https://www.cnblogs.com/smh2015/p/9694217.html
Copyright © 2011-2022 走看看