撤销弹起的扑克,解决顺子时不能撤销的bug

/////////////CardControl.h

//当撤销弹起的扑克时,设置扑克,解决顺子时不能撤销的bug
bool SetUnShootArea(BYTE cbHeadIndex, BYTE cbTailIndex);


/////////////CardControl.cpp 

//当撤销弹起的扑克时,设置扑克,解决顺子时不能撤销的bug

bool CCardControl::SetUnShootArea(BYTE cbHeadIndex, BYTE cbTailIndex)
{
//设置变量
m_cbTailIndex=INVALID_ITEM;
m_cbHeadIndex=INVALID_ITEM;

//设置扑克
for (BYTE i=0;i<m_cbCardCount;i++)
{
if ((i>=cbHeadIndex)&&(i<=cbTailIndex))
{
m_CardItemArray[i].bShoot=!m_CardItemArray[i].bShoot;
}
}

return true;
}

///////CGameClientView.OnLButtonUp
//交换处理
if ((m_bSwitchCard==true)&&(m_bMoveMouse==true))
{

//by caoyongrong 5/11/2015
// 增加取消选中牌的效果,而且可以鼠标拉动选中
//设置扑克
//m_HandCardControl[MYSELF_VIEW_ID].SetShootCard(NULL,0);


////发送消息
//SendEngineMessage(IDM_LEFT_HIT_CARD,0,0);
//SendEngineMessage(IDM_SORT_HAND_CARD,ST_CUSTOM,ST_CUSTOM);


////更新界面
//CRect rcClient;
//GetClientRect(&rcClient);
//InvalidGameView(0,0,rcClient.Width(),rcClient.Height());
if (m_cbHoverCardItem>m_cbMouseDownItem)
{
m_HandCardControl[MYSELF_VIEW_ID].SetUnShootArea(m_cbMouseDownItem,m_cbHoverCardItem);

}
else
{
m_HandCardControl[MYSELF_VIEW_ID].SetUnShootArea(m_cbHoverCardItem,m_cbMouseDownItem);

}


//发送消息
SendEngineMessage(IDM_LEFT_HIT_CARD,0,0);


//更新界面
CRect rcClient;
GetClientRect(&rcClient);
InvalidGameView(0,0,rcClient.Width(),rcClient.Height());
}

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同也在不少候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
### 关于 IntelliJ IDEA 中 Ctrl+Z 撤销功能失效的解决方案 在使用 IntelliJ IDEA ,如果发现 `Ctrl+Z` 快捷键无法正常撤销操作,可能是由于以下原因导致: 1. **快捷键冲突**:其他软件可能占用了 `Ctrl+Z` 的快捷键[^3]。例如,某些音乐播放器或即通讯工具可能会将此快捷键用于特定功能。 2. **IDEA 设置问题**:IntelliJ IDEA 的快捷键配置可能被更改,导致默认的撤销快捷键不再生效[^2]。 3. **系统级快捷键冲突**:操作系统中可能存在与 `Ctrl+Z` 冲突的全局快捷键[^1]。 以下是解决该问题的具体方法: #### 方法一:检查并修改快捷键设置 可以通过 IntelliJ IDEA 的快捷键设置界面重新配置撤销快捷键: 1. 打开快捷键设置界面:`Ctrl + Shift + Alt + S`[^1]。 2. 在搜索框中输入“Undo”,找到对应的快捷键配置项。 3. 确保 `Undo` 功能绑定到 `Ctrl+Z`,如果已被更改,则重新设置为 `Ctrl+Z`。 #### 方法二:排查外部软件冲突 - 如果确认快捷键设置无误,但仍然无法使用 `Ctrl+Z`,可以尝试关闭其他可能占用该快捷键的软件(如网易云音乐、QQ等)[^3]。 - 测试关闭这些软件后,`Ctrl+Z` 是否恢复正常。 #### 方法三:使用备用撤销快捷键 如果无法直接修复 `Ctrl+Z`,可以尝试使用备用快捷键: - 在 macOS 上,撤销快捷键为 `Command + Z`。 - 在 Windows/Linux 上,也可以通过菜单栏中的“Edit > Undo”手动触发撤销功能。 #### 方法四:重置 IntelliJ IDEA 配置 如果以上方法均无效,可以尝试重置 IntelliJ IDEA 的快捷键配置: 1. 进入设置界面:`File > Settings > Keymap`。 2. 将当前的快捷键方案切换为默认的“Default”方案。 3. 确保所有快捷键恢复到初始状态。 ```python # 示例代码:如何通过代码实现撤销操作(仅作参考) def undo_operation(): try: # 模拟撤销操作 print("Undo operation triggered") except Exception as e: print(f"Error during undo: {e}") ``` ### 注意事项 - 如果问题仍未解决,建议检查是否安装了可能导致冲突的插件,并尝试禁用不必要的插件[^4]。 - 确保 IntelliJ IDEA 已更新至最新版本,以避免潜在的 bug 或兼容性问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值