ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:152.42KB ,
资源ID:19151848      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19151848.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(五子棋设计文档文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

五子棋设计文档文档格式.docx

1、用户界面需求界面友好、亲切界面简洁、不花哨操作界面直观、不繁琐3:程序运行4:UML5:应用设计模式轻量级模式(享元模式)Flyweight在拳击比赛中指最轻量级,即蝇量级,有些作者翻译为羽量级。这里使用享元模式更能反映模式的用意。享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传

2、入到享元对象内部。外蕴状态与内蕴状态是相互独立的。享元模式的应用享元模式在编辑器系统中大量使用。一个文本编辑器往往会提供很多种字体,而通常的做法就是将每一个字母做成一个享元对象。享元对象的内蕴状态就是这 个字母,而字母在文本中的位置和字模风格等其他信息则是外蕴状态。比如,字母a可能出现在文本的很多地方,虽然这些字母a的位置和字模风格不同,但是所有 这些地方使用的都是同一个字母对象。这样一来,字母对象就可以在整个系统中共享。6:经验总结和体会网络五子棋的开发让我感受到软件的开发是十分辛苦的工作,尤其是一个人独立开发更是困难,因为一个人的知识和能力是有限的,一个好的软件需要一个好的团队,集合大家的

3、知识和力量来共同完成。现在把一些开发的经验总结如下:在工程开发中,系统的分析是整个开发的核心,只有前期进行很好的分析、规划,才能做出好的软件产品,这个阶段要进行很好的策划,精密的分析。尤其是流程的设计,直接关系到系统功能和编码的成败。良好的程序设计风格很重要。这在一个比较大的工程中,程序设计的风格非常重要,这影响到软件的测试以及后期功能扩展,在增量型的开发模型中,混乱的代码会使维护变的十分困难。在多人合作团队开发的时候,你的代码要影响到全局,必须了解到:你的代码是写给别人看。运用高效的测试手段。测试要占开发很大的时间,软件编码以后,并非总能百分百的成功,那就要进行测试。在大程序中,多写异常处理

4、的代码,以及变量合法的检验等,DEBUG中混合使用断点测试以及报告函数,以提高DEBUG效率。善于捕捉最新的技术资料。在每个软件开发过程中,资料是必不可少的,虽然书本上有比较系统的资料,但是真正能运用的还是不多。在开发时,不要急于设计编码,应该学会先查找软件开发中涉及到的各种最新资料,学习他们关于本系统的一些开发经验。学会在编码前,吸取别人的代码的一些优点,然后改进设计,使之更加的完善。网络五子棋的开发让我体会到,要做好软件必须要学会抽象思维,要练好抽象思维,还要学会使用UML软件之类的工具,用UML建模工具建设的时候要一个一个模块设计好,搞清楚,尽可能的把所有的功能分开, 如果有相似性那么就

5、需要抽象然后继承重写来实现自己的功能。7:代码Client.javaimport 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 BorderLa

6、yout(); 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(五子棋);Concretenut.javaimport java.awt.Graphic

7、s;import java.awt.Image;import java.awt.Toolkit;import java.awt.image.ImageObserver;public class ConcreteNut extends Nut Toolkit t = getToolkit(); private String key; Image img; public ConcreteNut(String str) key = str; void draw(Graphics g, int x, int y, ImageObserver obs) if (key.equals(black) img

8、 = t.getImage(images/black.gif elseimages/white.gif g.drawImage(img, x, y, 24, 24, obs);JavaChessFive.javaimport java.awt.Button;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.MouseAdapter;import ja

9、va.awt.event.MouseEvent;import java.awt.geom.Ellipse2D;import java.rmi.Naming;import java.util.ArrayList;import java.util.List;import javax.swing.JOptionPane;public class JavaChessFive extends Panel List points = new ArrayList(); boolean isMy = false, win = false; boolean flag = true;/ 棋子重叠判定 NutFac

10、tory nutFactory = new NutFactory();/ 享元类 MyRemote hello; / TextArea t; TextField tt; Button b1, b2; JavaChessFive() / this.frame = frame; setSize(620,450); setBackground(Color.gray); t = new TextArea(10,25); tt = new TextField(1); b1 = new Button(接收消息 b2 = new Button(发送消息 Panel p1=new Panel(); p1.se

11、tLayout(new GridLayout(2,1); p1.add(t); p1.add(tt); add(East,p1); Panel p2=new Panel(); p2.add(b1); p2.add(b2);South,p2); try hello = (MyRemote) Naming.lookup(rmi:/localhost:8808/RMI_Hello System.out.println(hello.sayHello(); System.out.println(hello.fromstr(); catch (Exception e) e.printStackTrace(

12、); b1.addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent e) try t.append(hello.fromstr() + rn System.out.println(hello.sayHello(); System.out.println(hello.fromstr(); catch (Exception ee) System.out.println(error b2.addMouseListener(new MouseAdapter() hello.sendTo(tt.getText();

13、this.addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent event) int x = event.getX(); int y = event.getY(); paintItem(x, y); repaint(); void paintItem(int x, int y) if (x = 30 & x y = 300) int X = (x + 15) / 30; int Y = (y + 15) / 30; for (Point point : points) if (point.getX() =

14、 X & point.getY() = Y) flag = false; break; if (flag) points.add(new Point(X, Y); flag = true; public void paint(Graphics g) for (int i = 30; i = 9) if (!win) if (win = winJudge(points.get(i) System.out.println(black win else white 9) white win if (win) winDialog(黑棋 else白棋 public boolean winJudge(Po

15、int point) int count = 1; int star = 1;/ 白棋 if (isMy) / 黑棋 star = 0; for (int i = 1; 5; i+) / 纵向往上扫描 for (int j = star; j = 5) return true; i+) / 纵向往下扫描 if (point.getY() - i = points.get(j).getY() i+) / 横向往左扫描 if (point.getX() - i = points.get(j).getX() point.getY() = points.get(j).getY() i+) / 纵向往右

16、扫描 if (point.getX() + i = points.get(j).getX() i+) / 向往左上扫描 point.getY() - i = points.get(j).getY() i+) / 向往右下扫描 point.getY() + i = points.get(j).getY() i+) / 向往左下扫描 i+) / 向往右上扫描 return false; public void init() points = new ArrayList(); win = false; flag = true; public void winDialog(String p) int confirm = JOptionPane.showConfirmDi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1