现代C++作业2 与 围棋homework-06
本文第一部分是现代C++作业2,第二部分是对围棋程序的部分建议,还有一些修改和优化体现在Github里面的代码中。
首先是现代C++作业。
1. 了解Lambda的用法。计算“Hello World!”中,字母e和l的个数。
int count (char s [], char ch )
{
int num = ;
for_each( s, s + sizeof(s), [&](char c){
num += (c == ch); });
return num;
}
// 统计字母e:count(s, 'e');
// 统计字母l:count(s, 'l);
//Lambda表达式可以类比Java中的匿名函数,能使程序更干净
2. 练习使用智能指针。打印“Hello World”右移循环n位的结果。
代码的思路就是老师上课讲的,分两段打印。只不过这里通过unique_ptr保证函数结束后堆上的内容得到释放。
但是,我觉得自己写的不好,因为智能指针用的不够自然:为了将字符串分两段,不得不使用不安全的strncpy。没有老师一个'\0'的赋值简洁。
我主要受限制于智能指针的赋值上。
代码如下:
void ShiftPrint (char s [], int n )
{
int len = strlen( s);
n %= len;
unique_ptr<char []> p (new char [len + ]);
strncpy( p. get() + len - n, s, n);
p[ len] = '\0';
cout << p. get();
}
int main ()
{
char s[] = "Hello World!";
ShiftPrint(s , );
return ;
}
非智能指针的:
智能指针能这么简洁吗?求指导啊求指导
void good(char[] str, int n){
len = strlen(str);
n %= len;
cout << str + (len - n);
str[len - n] = '\0';
cout << str;
}
然后是围棋游戏。
首先肯定游戏有很多好的地方,不过以下主要说我看到的不足...
1. 交互方面
1.1 标题没有经过仔细考虑(_WinForm是默认的,应该改掉),后面改成了中文“华夏围棋”,更有感觉。
1.2 如果没有 icon,左上角那里不应该显示出来系统默认的图标。
1.3 右下角的文本框考虑不周到,如果仅仅为了提示信息,那么不能允许编辑,否则就出现了下面的结果(被我编辑了):
以上问题,见下图:

1.4 窗体大小不应该可以调节,最大化按钮应该被禁用,否则会出现布局错乱,如下:

1.5 这里说一个很好的设计,程序在刚下完的棋子上加了一个亮点,简洁的提示了刚下的棋子是哪一个。不过在真正下棋的时候还是感觉不够直观,尤其是棋子数量多的时候。建议加一个区域,以文字提示现在是谁的tern

2. 功能篇
2.1 还是右下角的输入框,经过测试觉得它在游戏开始后就不再有作用了,那么这样的空间利用,有些小浪费。可以用来记录棋谱注释~
2.2 未打开棋谱直接下棋的时候,按“save”没作用,应该保存当前棋谱就好了。
2.3 下棋存在误退出风险。退出前应有“是否确认退出”,或“是否保存当前棋谱”的提示
3. 代码篇
3.1 一个工程不能把全部代码放到一个文件里。可以按照MVC分散代码到多个文件。
3.2 一些if后面的{}最好不省略,便于维护
3.3 运行分析还能看到其他结果:

4. 其他代码的问题直接在Github上改
现代C++作业2 与 围棋homework-06的更多相关文章
- homework -06 围棋
playPrev功能的实现 public void playPrev(ref GoMove gm) { Point p = gm.Point; m_colorToPlay = gm.Color; cl ...
- 20165226 预备作业3 Linux安装及学习
20165226 预备作业3 Linux安装及学习 Linux安装 一.下载安装VirtualBox 1.首先在官网下载,点开基于VirtualBox虚拟机安装Ubuntu图文教程 找到版本进行下载安 ...
- 20165232 预备作业3 Linux安装及学习
java第三次预作业--Linux安装及命令入门(学习记录) 通过老师给的学习基于VirtualBox虚拟机安装Ubuntu图文教程,我在自己笔记本上安装Linux操作系统,在安装过程中我遇到一些问题 ...
- 20189203《Linux内核原理与分析》第一周作业
实验一 Linux 系统简介 我在这一课中主要学习了Linux是什么,Linux的产生和发展历史,Linux发展中的重要人物以及Linux和Windows在是否收费.软件与支持.安全性等方面存在的一些 ...
- 《linux内核设计分析》 第一周作业
linux 基础入门 课程总结 一.linux系统简介 linux操作系统 整个计算机可以分为 硬件 内核 系统调用 应用程序 操作系统就属于内核和系统调用这两部分 操作系统历史发展 批处理操作系统 ...
- 20165214 预备作业3 Linux安装及学习
一.VirtualBox和Ubuntu的安装 点进VirtualBox的官网后,不知道为什么,我只看到了5.2.6版本...又看到同学反映说5.2.7版本会出现问题,我想可能是工作人员正在补5.2.7 ...
- 20179202《Linux内核原理与分析》第一周作业
实验一 Linux 系统简介 这一节主要学习了Linux的历史,重要人物以及学习Linux的方法.Linux和Windows在是否收费.软件与支持.安全性.可定制性和应用范畴等方面都存在着区别.目前感 ...
- 20165212 预备作业3 Linux安装及学习
20165212 预备作业3Linux安装及学习 Linux虚拟机的安装过程 我像大部分同学一样,通过助教学姐给的Ubuntu下载地址下载映像文件.VB,但是屡次出现问题,不停的闪出一下错误提示窗口: ...
- 20189220 余超《Linux内核原理与分析》第一周作业
实验一 Linux系统简介 通过实验一主要是学习到了Linux 的历史简介,linux与windows之间的区别,主要是免费和收费,软件和支持,安全性,使用习惯,可制定性,应用范畴等.linux具有稳 ...
随机推荐
- UVa 1473 - Dome of Circus 三分
把所有的点都映射到XOZ这个平面的第一象限内,则这个三维问题可以转化二维问题: 求一条直线,使所有点在这条直线的下方,直线与X轴和Z轴围成的三角形旋转形成的圆锥体积最小. 这样转化之后可以看出直线的临 ...
- hadoop2 环境的搭建(手动HA)
1.手工切换ha的环境的搭建(比hadoop1多出来journalnode的配置) namenode:hadoop110和hadoop111 datanode:hadoop112.hadoop113. ...
- Android开发之事件分发和Listener
参考:http://blog.csdn.net/zhongkejingwang/article/details/38141719 http://blog.csdn.net/zhongkejingwan ...
- Android wakelock机制
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁. 如果没有锁了或者 ...
- 强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
Tomcat添加系统服务:service.bat install 启动本服务的时候却提示“windows 不能在本地计算机中起动 Apache Tomcat参考特定错误代码1,若不是Microsoft ...
- SDOI 2010 and SXOI 2014 地精部落 (递推)
用E[i,j]表示共有i个数字,以1..j开头且一开始下降的方案数的总和.则我们有: E[i,j]:=E[I,J-1]+E[i-1,i-j] 我们先来证明上升与下降的方案是一一对应的. 事实上,若有a ...
- 【Java学习笔记】函数使用
package aaa; public class aaa { public static int add(int a,int b) { return a+b; } public static voi ...
- 硬盘结构介绍--mbr及分区
硬盘刚买来使用时需要经过分区然后格式化才能够使用,硬盘经过分区后,分区软件便会写一个主引导扇区,这个扇区位于硬盘的 0 磁道 0 柱面第1扇区(即0区)(注意:该扇区为隐含扇区,0道0面的全部扇区均为 ...
- 在stm32上移植wpa_supplicant(二)
第一层调用的移植和裁剪. wpa_supplicant_init 照论文的指示,删除wpa_params和wpa_global相关的东西.初始化流程也相当简单,driver初始化,eap_regist ...
- Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTab ...