欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    五子棋设计报告完整版.docx

    • 资源ID:27723356       资源大小:30.40KB        全文页数:14页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    五子棋设计报告完整版.docx

    1、五子棋设计报告完整版计算机网络设计报告题 目: 局域网五子棋设计 班 级: 计算机08.2班 姓 名: 颜晓云 指导教师: 杨松波 2011年 7 月 15日目 录1、概论 - 2 -2、功能介绍 - 2 -3、程序流程图 - 2 -4、实现代码 - 3-5、总结体会 - 9-6、参考文献 - 9 -第一章 绪论 主要运用了GUI(用户图形界面)和API(应用程序借口)来实现。当然,Event监听器等也是这个程序的重要部分。程序没有用到图片的引用,棋盘和棋子的设计完全是应用坐标来绘制,再加入按钮、及实现本游戏的用户界面布局。程序编写的思路来源于网上和书上的资料,程序在编写过程中遇到的问题主要集

    2、中在前期的棋盘绘制和后期的棋子算法。第二章 功能介绍(1)程序在设计初就定义黑棋先行,白棋随后。从第一个棋子开始开始相互顺 序落子。(2)通过坐标索引算出最先在棋盘的横向、竖向、斜向形成连续的相同色五棋 子的一方为胜利。(3)在游戏过程中或下完时可选择重新开始。(4)赢家对话框提示。第三章 程序流程图第四章 实现代码import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Point;import java.awt.

    3、event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel; public class ChessFrm extends JF

    4、rame implements ActionListener int step; JButton butnStart = new JButton(重新开始); FiveChess chess = new FiveChess(); FlowLayout flow = new FlowLayout(); JPanel panelPaint=new JPanel(),panelEast=new JPanel();/panelPaint为画五子棋的面板 ChessFrm(String s) super(s); setBounds(100, 100, 600, 600); setLayout(new B

    5、orderLayout(); setVisible(true); setResizable(false); add(panelPaint); panelEast.add(butnStart); add(panelEast,BorderLayout.EAST); butnStart.addActionListener(this); addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) if(e.getModifiers()=InputEvent.BUTTON3_MASK) return; int x

    6、= e.getX()-3;/鼠标单击位置为在整个窗体中的位置,包括标题栏和侧边 int y = e.getY()-23; System.out.println(鼠标单击位置: + x + , + y); Point index = chess.getIndex(x, y);/得到行列 if (index != null) drawNode(index.x, index.y); step+; if (chess.isWin(index.x, index.y) String str = chess.white ? 黑棋 : 白棋; System.out.println(str + 在第 + ste

    7、p + 步赢了); int option = JOptionPane.showConfirmDialog( ChessFrm.this, str + 在第 + step + 步赢了,是否再来一局, 五子棋, JOptionPane.YES_NO_OPTION); if (option = JOptionPane.YES_OPTION) step = 0;/ 重新置为零 clearExist();/清除已有棋子 chess.restate();/数据清零 repaint(); ); repaint(); validate(); setDefaultCloseOperation(JFrame.EX

    8、IT_ON_CLOSE); public void drawNode(int i, int j) int x = chess.nodeij.x; int y = chess.nodeij.y; int state = chess.nodeij.state; Graphics g = panelPaint.getGraphics(); if (state = 1) g.setColor(Color.black); else if (state = 2) g.setColor(Color.white); g.drawOval(x - 6, y - 6, 12, 12); g.fillOval(x

    9、- 6, y - 6, 12, 12); public void actionPerformed(ActionEvent e) if (e.getSource() = butnStart) if (step != 0) int option = JOptionPane.showConfirmDialog(ChessFrm.this, 是否放弃重来, 五子棋, JOptionPane.YES_NO_OPTION); if (option = JOptionPane.YES_OPTION) clearExist(); chess.restate(); step = 0; repaint(); pu

    10、blic void paint(Graphics gg) / Graphics是在整个窗体描绘 super.paint(gg); Graphics g=panelPaint.getGraphics(); g.setColor(Color.magenta); for (int i = 1; i = FiveChess.row_column; i+) g.drawLine(10, i * FiveChess.interval, 548, i * FiveChess.interval); g.drawLine(i * FiveChess.interval, 10, i * FiveChess.int

    11、erval, 540); drawExistNode(); void drawExistNode() Graphics g = panelPaint.getGraphics(); for (int i = 0; i FiveChess.row_column; i+) for (int j = 0; j FiveChess.row_column; j+) if (chess.nodeij.state = 1 | chess.nodeij.state = 2) if (chess.nodeij.state = 1) g.setColor(Color.black); else if (chess.n

    12、odeij.state = 2) g.setColor(Color.white); g.drawOval(chess.nodeij.x - 6, chess.nodeij.y - 6, 12, 12); g.fillOval(chess.nodeij.x - 6, chess.nodeij.y - 6, 12, 12); public void clearExist() Graphics g = panelPaint.getGraphics(); g.clearRect(0, 0, 600, 600); public static void main(String args) ChessFrm

    13、 cFrm=new ChessFrm(五子棋); class FiveChess boolean white; public static final int bound = 7;/ 在离中心为7的范围内单击为有效单击(即下棋) public static final int row_column = 20; public static final int interval=26;/五子棋之间的距离 Node node; public FiveChess() init(); private void init() node = new Noderow_columnrow_column; for

    14、 (int i = 0; i row_column; i+) for (int j = 0; j row_column; j+) nodeij = new Node(); nodeij.x = (i + 1) * interval; nodeij.y = (j + 1) * interval; Point getIndex(int x, int y) int i = x / interval - 1; int j = y / interval - 1; if (i = -1)/边界 i+; if (j = -1) j+; for (int p = i; p i + 2; p+) for (in

    15、t q = j; q row_column - 1 | q row_column - 1) System.out.println(越界); return null; if (x nodepq.x - bound & x nodepq.y - bound & y = 0 & nodeiup.state = nodeij.state) count+; up-;/ 千万注意自增自减运算 if (count = 5) return true; int down = j + 1;/ 接着垂直向下方向判断 while (down = 5) return true; return false; privat

    16、e boolean horizontal(int i, int j) int count = 1; int left = i - 1;/水平向左判断 while (left = 0 & nodeleftj.state = nodeij.state) count+; left-; if (count = 5) return true; int right = i + 1;/水平向右判断 while (right = 5) return true; return false; private boolean diagonalSE(int i, int j) int count = 1; int n

    17、orth = j - 1; int west = i - 1;/西北方向判断 while (north = 0 & west = 0 & nodewestnorth.state = nodeij.state) count+; north-; west-; if (count = 5) return true; int south = j + 1; int east = i + 1;/接着东南方向判断 while (south row_column & east = 5) return true; return false; private boolean diagonalNE(int i, i

    18、nt j) int count = 1; int north = j - 1; int east = i + 1;/东北方向判断 while (north = 0 & east = 5) return true; int west = i - 1; int south = j + 1;/接着西南方向判断 while (west = 0 & south = 5) return true; return false; void restate() for (int i = 0; i row_column; i+) for (int j = 0; j row_column; j+) nodeij.s

    19、tate = 0; white = false; class Node int x; int y; int state;/ 0无棋子,1黑棋,2白棋第五章 总结与体会 通过这次对JAVA的学习,让我渐渐体会到了JAVA的博大精深。以及怎么学习JAVA,怎么学习计算机语言,怎样对问题进行解决和运用JAVA GUI,查找JAVA API的使用都用了更进一步的理解。 对于Java中的引用,初始化类等,开始我并不是非常的理解,知道就这么做就能实现相应的功能了,并没有很深刻的去理解它为什么要这么做。但是真正的要用Java去做一个东西不理解它是不行的,而且其间这课设涉及到了Java 中的绝大多数的知识点,

    20、如Java图形用户界面设计、Java的异常处理机制、Java中的多线程程序设计、Java输入输出流,要应用这些东西更要求我去好好理解Java的这些规则。好在有一定的C+基础Java 与C+语法类似,并把C+中一些较低级和较难以理解的功能都去掉了,如多继承、指针等,同时Java增强了部分功能。所以理解起来也比较容易。但是理解了Java的规则要把这个课设做好也不是那么容易,最难的部分是如何实现各个功能的划分和类的通讯问题。我在这方面就遇到了不少的问题。总结这次课设,我还是收获不少。虽然界面也不是很美观,有点功能间的连接做的也不是特别的好,但是我能认识到自己的不足,并且在跟同学的交流中也学到了一些他们的设计思路,也知道今后要加强哪些方面的知识。参考文献:1、JAVA编程案例精解 电子工业出版社; 2、 3、


    注意事项

    本文(五子棋设计报告完整版.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开