摘要:先整理一下之前的内容: 1.画了棋盘,把棋盘的每个点的状态都保存起来。 2.画棋子,分别用tiger类和people类画了棋子,并且保存了棋子的初始状态。 下面开始设计棋子的移动: 1.单机棋子,选中要移动的棋子 触发鼠标单机事件,传递窗口坐标。 把窗口坐标转换成棋盘坐标。 判断棋盘坐标是否有棋子,
阅读全文
摘要:根据昨天的计划,今天开始做下面的内容。 1.鼠标点击事件 2.点击坐标进行处理。(坐标转换) 3.判断选中的位置是否有效。 4.确定选中的棋子,设置棋子的状态和棋子所在坐标的状态。 5.判断移动是否有效 6.设置移动后棋子的状态和坐标的状态。 鼠标点击事件在View中进行。如何把棋子移动和坐标转换进
阅读全文
摘要:今天开始设计小人棋子。 画法跟画虎一样,唯一不一样的是小人在刚开始会有重叠的情况,所以画起来可能比虎的棋子能够难一点。 我打算用Location结构体中的num来标记每个棋盘坐标存在棋子的个数,isHavePiece来标记坐标是否存在棋子。 这样的话,需要在虎棋子那边把这两个变量插入数据,而且需要把
阅读全文
摘要:dc.DrawText(_T("hello"), -1, //全部 &rect, DT_SINGLELINE| //在一行 DT_CENTER| //水平居中 DC_VCENTER); //上下居中 dc.TextOut(100,100,_T("hello")); CFont font; font.
阅读全文
摘要:反思了一下昨天的设计,觉得略有不足,我决定把棋盘做成单例模式。这样的话需要重新设计棋盘类,emmm,是新建棋盘类。 Baord类 成员变量: Location coordinate;//棋子坐标 bool isHavePiece;//记录是否有棋子 CRect rect;//备用 vector<Lo
阅读全文
摘要:数组清零 ::ZeroMemory(首地址,大小);
阅读全文
摘要:窗口类能够使用messagebox int ret = MessageBox(_T("内容"), _T("标题"), MB_OKCANCLE| //MB_OB MB_YESNOCANCLE 按钮 MB_ICONINFORMATION| //MB_ICONQUESTION 图标 MB_DEFBUTTO
阅读全文
摘要:好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏。 我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单纯为了证明一下我到底还是不是个程序员。。。 这个小游戏是我小时候玩过的一种棋盘类游戏,可能只在我们那
阅读全文
摘要:预定义函数对象和函数适配器 预定义函数对象基本概念:标准模板库STL提前定义了很多预定义函数对象,#include <functional> 必须包含。 1使用预定义函数对象: 算术函数对象 预定义的函数对象支持加、减、乘、除、求余和取反。调用的操作符是与type相关联的实例 加法:plus<Typ
阅读全文
摘要:函数对象:重载函数调用操作符的类,其对象常称为函数对象。 函数对象属于类对象,能突破函数概念,保持类的状态 谓词: 一元函数对象:函数参数1个; 二元函数对象:函数参数2个; 一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式 谓词可以使一个仿函数,也可以是一个回调函数。 二元谓词
阅读全文
摘要:算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。 <algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 <numeric>体积很小,只包括几个在序列上面进行简单数学
阅读全文
摘要:Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述。 deque的使用场景:比如排队购票系统,对排队者的存储可以采用deque,支持头端的快速移除,尾端的快速添加。如果采用vector,则头端移除时,会
阅读全文
摘要:set set是一种集合容器,所包含的元素是唯一的,集合中的元素按一定顺序排列,元素插入过程是按排序规则插入,所以不能插入指定位置 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树,插入和删除比vector快。 set不能直接存取元素 set<int> s1;//默认情况下是从小到大 相当于
阅读全文
摘要:priority_queue优先级队列 最大值优先级队列(队头是最大值) 最小值优先级队列(队头是最小值) priority_queue<int> q1;//默认定义为最大值优先级队列 priority_queue<int,vector<int>,less<int>>;//提前定义好的预定义函数 谓
阅读全文
摘要:list双向链表 高效进行插入删除数据 不可以随机存取元素,所以不支持at()和[]操作符。it可以++ --,不能it+5 节点序号从0开始 list<int> l; l.push_back(1);//尾插法 it++; it++; l.inserrt(it,100);//在2号位置插入元素,原来
阅读全文
摘要:queue队列 先进先出 queue<int> q1; q1.push();//插入元素 q1.front();//求队头元素 q1.pop();//删除队头元素 q1.empty();//判断队列是否为空 元素全部抛出队列 while(!q1.empty()) { int tmp = q1.fro
阅读全文
摘要:stack栈 先进后出 stack<int> s ; s.push();//元素入栈 //出栈 while(!s.empty()){ int tmp = s.top(); s.pop(); }
阅读全文
摘要:deque双端数组 deque<int> dq; deque<int>::iterator it; dq.push_back();//尾部插入元素 dq.push_front();//头部插入元素 dq.pop_back();//尾部删除元素 dq.pop_front();//头部删除元素 根据迭代
阅读全文
摘要:string 查找和替换 vector 删除
阅读全文
摘要:迭代器类别: 输入迭代器(只读迭代器)、输出迭代器(只写迭代器)、正向迭代器、双向迭代器、随机访问迭代器 逆向遍历 for(vector<int>::reverse_iterator rit = v1.rbegin();rit!= v1.rend();rit++) { cout<<*rit<<" "
阅读全文
摘要:string的初始化 string(); string(const string &str); string(const char* str); string(int n,char c); 遍历 1.数组方式(重载数组) 2.迭代器string::iterator 3.ai()能抛出异常 字符指针和
阅读全文
摘要:vector 尾部添加或移除元素快,在中部或头部插入或移除元素比较费时。 vector<CA> v;//CA必须保证能够被拷贝 vector<int> v1; v1.pushback(1);//尾部插入元素 int a = v1.back();//获取尾部元素 v1.pop_back()//删除尾部
阅读全文
摘要:容器 算法 迭代器 仿函数 适配器 空间配置器 13个类库 #include <algorithm> #include <deque> #include <functional> #include <iterator> #include <vector> #include <list> #inclu
阅读全文
摘要:cout.flush() cout.put() 输出一个字符 char* p = "hello"; cout.write(p,sttrlen(q)-3) 输出字符串,能够选定长度。二进制流输出 cout<<"<Start>" cout.width(30)//插入30个字符 cout.fill(‘*’
阅读全文
摘要:cin cin.get() 每次只读缓冲区一个字符,不能接收空格 cin.getline() 读缓冲区一行,能够接收空格 cin.ignore(2) 忽略缓冲器2个字节 int i = cin.peek(); 读缓冲区,有数据的话返回缓冲区第一个数据asc码,如果没有数据程序阻塞。 char c c
阅读全文
摘要:C++类型转换 static_cast 静态类型转换,如int转char reinterpreter_cast 重新解释转换,强制转换 dynamic_cast 明明商理解是动态类型转换,如子类和父类之间多态类型转换 const_cast 字面理解就是去const属性 转换格式: TYPE B =
阅读全文
摘要:设置映射模式 Y轴改为向上 dc.SetMapMode(MM_LOENGLISH);//低精度 dc.SetMapMode(MM_HIENGLISH);//高精度 文本对齐 dc.SetTextAlign(TA_CENTER|TA_BOTTOM); 背景模式 透明 dc.SetBkMode(TRAN
阅读全文