homework-06

先说我的填充部分

        public void playPrev(GoMove gm) //如果没有上一步
        {
            if (m_gmLastMove == null)
            {
                return;
            }
            Grid[m_gmLastMove.Point.X, m_gmLastMove.Point.Y].removeStone();//删除这个点
            m_gmLastMove = gameTree.peekPrev();//更新上一个点
            if (gm.DeadGroup != null)//原来的点有气
                foreach (Point pt in gm.DeadGroup)
                {
                    repaintOneSpotNow(pt);
                    Grid[pt.X, pt.Y].setStone(gm.DeadGroupColor);
                }
            optRepaint();//重画棋盘
        }

这个只要知道变量是干什么的就很好写了。

 

 

其余注释在github中

 

关于这程序的问题,乍一看,最严重的问题就是,只有一个源代码文件。

然后我在程序最上方注意到了这个:

/**
 *  Go Applet
 *  1996.11        xinz    written in Java
 *  2001.3        xinz    port to C#
 *  2001.5.10    xinz    file parsing, back/forward
 */

瞬间就理解了。

 

1996年的时候写的java代码,到了2001年就做了移植工作,思路应该还是原来java的。所以这个程序应该就算作是1996年的程序。

看来这些年软件工程在不断有着巨大的飞跃。

 

另外的问题就是程序的外观没有一种圆润感,特别是棋子没有质感,可以考虑将棋子换成贴图,而不是使用图形库直接描出来。各种元素也都可以换成贴图的形式。

原来是这样:

可以变成这样:

 

每颗棋子上标好顺序,简洁有力

 

还有就是可以配上音效,下棋,杀棋。有了音效就如同上阵杀敌一般

 

还有就是给出局势图:

把当前的气的标出来,也有利于新手学习。

 

最最最大的问题还是,不能把所有代码都放到一个文件中。

 

 

 

 

查找字符串在课上大家都已经谢过了,现在给出lambda表达式查找字符个数的代码:

 

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    int count=0;
    string str("hello, world");
    for_each(str.begin(), str.end(),[&count](char c) {
        if (c=='l') {
            count++;
        }
    });
    cout << count << endl;
    return 0;
}

 查看文件、编译、运行截图(保证可用,代码在github中):

posted on 2013-11-25 12:00  不想嚣张  阅读(168)  评论(0编辑  收藏  举报

导航