五子棋设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1:序言
程序简介:随着计算机网络的迅猛发展,异地计算机之间的通信变得十分便捷。这也为异地间的用户通过网络来进行下棋提供了可能。
网络五子棋软件利用TCP/IP协议,在异地的玩家之间建立起TCP连接,并用它来交换棋局的各种数据信息。所以,网络五子棋软件在下棋以前必须要对相关的网络参数进行设置,才能实现玩家双方的成功连接。连接成功后,玩家双方轮流下棋,并将每一步下棋的信息通过网络传送给对方,使得双方棋盘上的棋子保持一致。
与单机版五子棋软件相同,网络版五子棋软件也提供了倒计时器、“认输”、“与棋”与“悔棋”等功能。但这些功能的都就是通过网络来实现的,所以,实现过程较单机版要复杂。
在胜负判别方面,单机版五子棋软件与网络版五子棋软件并没有什么不同,只就是网络版的玩家双方各自有一套胜负判别的程序。当一方玩家下一步棋后,她的胜负判别程序就执行一次,然后再将落子的信息传送给对方,对方的胜负判别程序也将执行一次。这样就完成一次胜负的判别过程。
另外,网络版五子棋的双方可能相距邀远,双方的语言交流没有单机版方便。所以,网络版五子棋还必须提供聊天功能。
2:需求分析
⑴功能需求
①能通过网络进行下棋
②符合五子棋的基本规则
③提供水平坐标与垂直坐标功能
④提供双方的倒计时功能
⑤能在棋子上显示的落子的顺序数
⑥提供玩家之间的聊天功能
⑵环境需求
①10/10Mbps共享式HUB一台
②装有Windows95/98/NT/XP操作系统的计算机两台
③计算机的CPU不低于PII450,内存不小于64M
④10/10Mbps自适应网卡每台计算机各一块,SB兼容声卡各一块,5类双绞
线若干米
⑤每台计算机都应配置有TCP/IP协议⑶用户界面需求
①界面友好、亲切
②界面简洁、不花哨
③操作界面直观、不繁琐
3:程序运行
4:UML
5:应用设计模式
轻量级模式(享元模式)
Flyweight在拳击比赛中指最轻量级,即"蝇量级",有些作者翻译为"羽量级"。这里使用"享元模式"更能反映模式的用意。
享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键就是区分内蕴状态(Internal State)与外蕴状态(External State)。内蕴状态就是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。
外蕴状态就是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享
元对象内部。外蕴状态与内蕴状态就是相互独立的。
享元模式的应用
享元模式在编辑器系统中大量使用。一个文本编辑器往往会提供很多种字体,而通常的做法就就是将每一个字母做成一个享元对象。享元对象的内蕴状态就就是这个字母,而字母在文本中的位置与字模风格等其她信息则就是外
蕴状态。比如,字母a可能出现在文本的很多地方,虽然这些字母a的位置与字模风格不同,但就是所有这些地方使用的都就是同一个字母对象。这样一来,字母对象就可以在整个系统中共享。
6:经验总结与体会
网络五子棋的开发让我感受到软件的开发就是十分辛苦的工作,尤其就是一个人独立开发更就是困难,因为一个人的知识与能力就是有限的,一个好的软件需要一个好的团队,集合大家的知识与力量来共同完成。
现在把一些开发的经验总结如下:
①在工程开发中,系统的分析就是整个开发的核心,只有前期进行很好的分析、规划,才能做出好的软件产品,这个阶段要进行很好的策划,精密的分析。尤其就是流程的设计,直接关系到系统功能与编码的成败。
②良好的程序设计风格很重要。这在一个比较大的工程中,程序设计的风格非常重要,这影响到软件的测试以及后期功能扩展,在增量型的开发模型中,混乱的代码会使维护变的十分困难。在多人合作团队开发的时候,您的代码要影响到全局,必须了解到:您的代码就是写给别人瞧。
③运用高效的测试手段。测试要占开发很大的时间,软件编码以后,并非总能百分百的成功,那就要进行测试。在大程序中,多写异常处理的代码,以及变量合法的检验等,DEBUG中混合使用断点测试以及报告函数,以提高DEBUG效率。
④善于捕捉最新的技术资料。在每个软件开发过程中,资料就是必不可少的,虽然书本上有比较系统的资料,但就是真正能运用的还就是不多。在开发时,不要急于设计编码,应该学会先查找软件开发中涉及到的各种最新资料,学习她们关于本系统的一些开发经验。学会在编码前,吸取别人的代码的一些优点,然后改进设计,使之更加的完善。
网络五子棋的开发让我体会到,要做好软件必须要学会抽象思维,要练好
抽象思维,还要学会使用UML软件之类的工具,用UML建模工具建设的时候要一个一个模块设计好,搞清楚,尽可能的把所有的功能分开, 如果有相似性那么就需要抽象然后继承重写来实现自己的功能。
7:代码
Client、java
import java、awt、BorderLayout;
import java、awt、Color;
import java、awt、Frame;
import java、awt、event、WindowAdapter;
import java、awt、event、WindowEvent;
public class Client extends Frame {
JavaChessFive p;
Client(String s)
{
super(s);
p=new JavaChessFive();
setLayout(new BorderLayout());
setBounds(100,100,620,418);
add(p);
setBackground(Color、WHITE);
validate();
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System、exit(0);
}
});
}
public static void main(String[] a)
{
new Client("五子棋");
}