博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
homework-06
阅读量:6656 次
发布时间:2019-06-25

本文共 1863 字,大约阅读时间需要 6 分钟。

1) 把程序编译通过, 跑起来。

读懂程序,在你觉得比较难懂的地方加上一些注释,这样大家就能比较容易地了解这些程序在干什么。

注释请见GitHub...

把正确的 playPrev(GoMove) 的方法给实现了。

1 public void playPrev(GoMove gm) 2 { 3         Point p = gm.Point;//要被移除的点 4         m_colorToPlay = gm.Color;//获取此点的颜色,继续后不改变颜色 5         clearLabelsAndMarksOnBoard();//清除信息 6         m_gmLastMove = gameTree.peekPrev();//获取上一步信息 7         bDrawMark = true;//清除highlight 8         Grid[p.X, p.Y].die();//清除此点 9         if (gm.DeadGroup != null)//恢复被吃掉的点10         {11                 foreach (Point pp in gm.DeadGroup)12                 {13                         Grid[pp.X, pp.Y].setStone(gm.DeadGroupColor);14                 }15         }16         optRepaint();//重绘17         return; 18 }
View Code

2)根据你选择的教材 (三本之一或更多),点评一下这个程序设计方面的不足,例如:

编码风格

呵呵了...程序结构性比较差...变量函数过程命名比较随意...不容易读懂...

用单屏显示器来读程序真的是很费劲啊...

当然也有优点...比如每个函数过程的长度都没有超过一个显示器的宽度...

程序架构,有哪些不符合良好的设计,这个程序的设计模式 (MVC等) 是高端大气国际化的么? 等等。 

MVC是神马...

最大的感觉就是混乱...比如关于棋谱的文件操作and界面UI设计and下棋过程混在了一起...

导致这份代码长度超出了我的想象...

建议可以用多个.cs文件将各个部分分开写...也方便查阅不同的部分的内容与debug...

程序的错误处理,文件处理,UI 等等

真的有错误处理么!

文件处理应该有错误处理...(感谢编译大作业让我知道了一个道理:你永远不能认为用户会输入你想要的内容...)

可惜我不会使用.sgf文件...要不我就编几步错误的棋谱...

好像我没有找到关于这方面的错误处理...

UI看着还算友好...但是也没有任何美化...

如果点击最大化时程序内各个部分的大小能够随着框架变大而变大就好了...

3) 程序的注释

注释请见GitHub...

4)选择题:

对于功能上的小问题, 那么你怎么改进呢? 请选出 1-2个你想做的改进,然后运用你的各种编程技术和能力把这些改进给实现了(必须明确指出改进/增加了哪一个功能)。

把所有的改进都实现之后,把代码签入GitHub,经历了这一番改动,你的程序和别的同学的程序就很不一样了。

改进一:可以将每个人每一步所下子的信息显示在信息框内,不过这个改动需要改变的是在撤销操作时同时清除此步的信息。

改进二:代码中的计算当前子与连通部分的气的代码是采用递归方式的...我不禁想起上学期密码学郭华老师所讲...尽量不要用递归...可以改成压栈式非递归...

如果大家有时间并有兴趣,可以做一些大的改进:

a) 如果我要把这个程序变成一个可以人机对战的小游戏 (假设你的AI 模块已经写好,这里我们就可以让一个函数返回一个合法的位置就可以), 那这个程序的架构应该怎么变化?  请把这个功能写出来。

首先选定玩家执黑还是执白,轮到AI时,调用AI模块返回一个点的左边,在棋盘上显示即可。

b) 如果我想让这个程序变成两个用户可以通过网络对战,这个程序的架构要怎么变化?

服务器真心不懂啊...上次我们组服务器端是王文涛所写...

不过我觉得可以用ftp协议上传你提交的点的坐标,然后从ftp上下载对方提交的坐标,在客户端显示即可。

转载于:https://www.cnblogs.com/yimingzou/p/3440994.html

你可能感兴趣的文章
马哥数据库mysql笔记_马哥学习笔记五MYSQL初步
查看>>
通信原理知识点总结_通信原理课程总结(一)
查看>>
mysql中想选出最新的日期_mysql – 从特定日期开始选择最新版本
查看>>
mysql 二进制日志恢复_使用mysql二进制日志恢复数据
查看>>
mysql 统计信息收集_Oracle 收集统计值 收集统计信息
查看>>
MySQL安装显示路径冲突_linux下的mysql安装路径冲突怎么办
查看>>
django mysql增删查_使用django连接数据库 对数据库 增删改查
查看>>
mysql初次安装_Mysql初始安装
查看>>
mysql源码包最新版本_1mysql源码安装到时候要更新
查看>>
python win32ui_Python win32ui.CreateWindowFromHandle方法代码示例
查看>>
mysql 序列重置不好用_二十九、MySQL 序列使用
查看>>
python字频统计软件_python统计文本中字频的方法
查看>>
java数据类型有哪几种_java数据类型有哪些
查看>>
java 空对象_Java中的空对象模式
查看>>
java课程设计 计算器_Java课程设计-计算器
查看>>
java 什么是内部类_什么是JAVA内部类?
查看>>
java web套打_XMReport-提供web项目Java套打解决方案
查看>>
java获取图片分辨率_java获取远程图片分辨率
查看>>
java label 超链接_java – 如何在JLabel中添加超链接?
查看>>
java foreach 源码_java Foreach与迭代器(示例代码)
查看>>