homework-06&homework-09

homework-06

1) 把程序编译通过, 跑起来 , 把正确的 playPrev(GoMove) 的方法给实现了.

  

public void playPrev(GoMove gm)
        {
            // need to reconstruct
            Point p = gm.Point;
            m_colorToPlay = gm.Color;    // Get current set point and the color of pieces

            clearLabelsAndMarksOnBoard();
            m_gmLastMove = gameTree.peekPrev();

            bDrawMark = true;
            Grid[p.X, p.Y].die();
            if (gm.DeadGroup != null)
            {
                foreach (Point pt in gm.DeadGroup)
                {
                    Grid[pt.X, pt.Y].setStone(gm.DeadGroupColor);
                }
            }
            optRepaint();
            
            //show the movement information
            textBox1.Clear();
            textBox1.AppendText(gm.Comment);
            return; 
        }

2)根据你选择的教材 (三本之一或更多),点评一下这个程序设计方面的不足,例如:编码风格,程序架构,程序的错误处理,文件处理,UI 等等.

  对于这份代码我只能呵呵了,代码基本上时一气合成,没有经过任何重构,读完一遍发现基本是在浪费生命,如果说这时让我们在练习重构的话,用这份这么RAW的代码代价不免太大了吧。

  编码风格:变量命名风格不统一,命令名已没有经过仔细的设计,还存在大量类似textbox1之类的写法。

  程序架构:完全看不出controler和model是如何分离的,识图也是手工控制绘制的,可维护性太差,对于游戏本身而言毫无模块可言,丝毫看不出有不同模块的划分,打谱和下棋完全在同时进行,而且两方面都有严重的bug。大量没有实意的代码让人不知所云,至今不理解mark和label发挥着怎样的作用。

  错误处理:代码直接进行错误判断,没有可圈可点之处。

  UI:实现上注重了很多细节,效果非常不错,但是在架构上没有解耦成独立的view,难以控制。

3) 程序的注释, 请把这个程序中被标成 “zzzz” 的注释都恢复过来。

详见https://github.com/swejlfdc/homework-06/tree/master/buaa_GO

homework-09

1. 了解Lambda的用法

  计算“Hello World!”中

  字母‘e’的个数

  字母‘l’的个数

int count(string&& s, char ch) {
    int ret(0);
    for_each(s.begin(), s.end(), 
        [&ret, &ch](const char& val) { ret += (val == ch); }
    );
    return ret;
}

 

2. 练习使用智能指针

  打印“Hello World!”循环右移n位的结果

  Example:

    n = 1, output = “!Hello World”

    n = 3, output = “ld!Hello Wor"

void RSHT(char* s, int n) {
    int len = strlen(s);
    unique_ptr<char[]> ts(new char[len + 1]);
    n %= len;
    strncpy(ts.get() + len - n, s, n);
    strncpy(ts.get(), s + n, len - n);
    ts[len] = '\0';
    strcpy(s, ts.get());
}

 

posted @ 2013-11-25 09:07  XDRegion  阅读(191)  评论(1编辑  收藏  举报