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

    五子棋Java课程设计.docx

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

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

    五子棋Java课程设计.docx

    1、五子棋Java课程设计面向对象程序设计课程设计报告实验时间: 2010年10月26日 实验班级: * 实验报告总份(片)数: 1 份(片)实验指导老师: * * 设计小组湖南省吉首市吉首大学课程设计报告简单的游戏五子棋小组成员(姓名、学号):*(组长) * * *一、实验分工姓名职责*编写程序、修改程序、设计流程图、设计实验报告*修改程序、分析运行结果、搜索相关资料*修改程序、分析运行结果、整理实验报告二、开发环境(实验编译以及测试环境)硬件环境:CPU:Intel 奔腾双核E5200 主频 2.5GHz内存:2G软件环境:操作系统:Windows 7编程环境 JDK7.0开发工具:Eclip

    2、se SDK三、使用环境(用户运行环境)硬件环境:CPU主频在500MHZ以上,内存在128M以上软件环境:JAVA运行环境 + Windows XP或Windows 2000 以上操作系统第一章 总体设计1.1设计的目的面向对象程序设计课程设计是计算机科学与技术专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。本课程设计主要目的在于加深学生对面向对象基础理论和基本知识的理解,掌握面向对象程序设计的基本方法,进一步使学生综合运用所学知识和增强实际动手能力。通过课程设计,学生在下述各方面的能力应该得到锻炼:1. 通过本次设计,实现对本学期内容的回顾与综合运用,包括类

    3、的建立,用类创建对象,方法的调用,图形组件的使用方法,图形界面的布局形式,事件处理机制,文件对话框的使用,文件操作的基本方法,数据读写的基本用法等。2. 对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 3. 掌握自顶而下的设计方法,将大问题进行模块化、对象化,领会面向对象程序设计的方法。4. 熟练掌握JAVA语言(C#)的基本语法,灵活运用各种预定义类、线程和事件处理。1.2本系统的主要功能 本系统可以实现电脑可以自动下棋,扫描整个棋盘记录连在一起的黑白棋子数,实现人与电脑有次序的下棋,判断人与电脑的胜负,为电脑下棋提供帮助1.3系统包含的类及类之间的关系。本系统共包6个J

    4、ava源文件。类之间的关系如图1-1所示。1.4 Java源文件及其功能表1-1 java源文件及其功能序号文件名主要功能备注1Chess本程序的主函数初始化棋盘2Autoplay实现电脑可以自动下棋分为8种情况3Scan扫描整个棋盘记录连在一起的黑白棋子数为判断胜负服务4Sort实现人与电脑有次序的下棋黑棋白棋有序的下5Judge判断人与电脑的胜负可以在文本框中显示胜负结果6Evaluate电脑估计为电脑下棋提供帮助1.5 项目构建思路此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。终于,在大家的共同努力之下,完成了这个小型五子棋游戏。游戏编辑思路,五子棋是一种互动性的益智游戏。需

    5、要棋盘、棋子、棋手、裁判。首先,我们绘制一个五子棋棋盘,关键代码如下:/绘制棋盘函数 public void paint(Graphics g) for (int i=40;i=400;i=i+20) g.drawLine(40,i,400,i); /绘制棋盘 行 for(int j=40;j=400;j=j+20) g.drawLine(j,40,j,400); /绘制棋盘 列 g.fillOval(97,97,6,6); /使用当前颜色填充外接指定矩形框的椭圆 g.fillOval(337,97,6,6); g.fillOval(97,337,6,6); g.fillOval(337,33

    6、7,6,6); g.fillOval(217,217,6,6); 其次,我们生成两种颜色不一样的棋子,关键代码如下:黑色棋子代码如下:/ChessPoint_black 类 继承 Canvas类class ChessPoint_black extends Canvas implements MouseListener ChessPad chesspad=null; ChessPoint_black(ChessPad p) setSize(20,20); /设置棋盘每一小格的长宽 addMouseListener(this); chesspad=p; public void paint(Grap

    7、hics g) g.setColor(Color.black); /设置黑色棋子的颜色 g.fillOval(0,0,18,18); /使用黑色填充椭圆棋子 白色棋子代码如下:class ChessPoint_white extends Canvas implements MouseListener ChessPad chesspad=null; ChessPoint_white(ChessPad p) setSize(20,20); addMouseListener(this); chesspad=p; public void paint(Graphics g) /绘制棋子的颜色 g.set

    8、Color(Color.white);/设置为白色 g.fillOval(0,0,18,18);/填充白子 再次,为实现双方行棋,我们实现了电脑自动下棋的函数,一共分为8种情况,关键代码如下:class AutoPlay /AutoPlay类实现电脑可以自动下棋 int x,y; /X统计玩家的连起来的棋子数 /Y电脑玩家的连起来的棋子数 void autoPlay(int chesspad,int a,int b) int randomNumber=(int)(Math.random()*8)+1; /获取一个随机数 switch(randomNumber) /分情况实现电脑自动下棋 cas

    9、e(1): /通过a,b的值 执行不同的运算,最后返回不同的/值。达到执行不同的操作。if(chesspada-1b-1=0) x=a-1;y=b-1; if(chesspada-1b+1=0) x=a-1;y=b+1; else if(chesspada-2b-2=0) x=a-2;y=b-2; else x=a-3;y=b-3; break; case(2): if(chesspada-1b=0) x=a-1;y=b; else if(chesspada-2b=0) x=a-2;y=b; else x=a-3;y=b; break; case(3): if(chesspada-1b+1=0

    10、) x=a-1;y=b+1; else if(chesspada-2b+2=0) x=a-2;y=b+2; else x=a-3;y=b+3; break; case(4): if(chesspadab+1=0) x=a;y=b+1; else if(chesspadab+2=0) x=a;y=b+2; else x=a;y=b+3; break; case(5): if(chesspada+1b+1=0) x=a+1;y=b+1; else if(chesspada+2b+2=0) x=a+2;y=b+2; else x=a+3;y=b+3; break; case(6): if(chess

    11、pada+1b=0) x=a+1;y=b; else if(chesspada+2b=0) x=a+2;y=b; else x=a+3;y=b; break; case(7): if(chesspada+1b-1=0) x=a+1;y=b-1; else if(chesspada+2b-2=0) x=a+2;y=b-2; else x=a+3;y=b-3; break; case(8): if(chesspadab-1=0) x=a;y=b-1; else if(chesspadab-2=0) x=a;y=b-2; elsex=a;y=b+3; break; 第四,为规范双方行棋的先后顺序,我

    12、们实现了一个判断函数,关键代码如下:class Sort /sort类 实现人与电脑有次序的下棋 public void sort(int shape) int temp; for(int i=0;i19;i+) for(int j=0;j19;j+) for(int h=1;h=h;w-) if(shapeijw-1shapeijw) /如果前者小于后者,则交换 temp=shapeijw-1; shapeijw-1=shapeijw; shapeijw=temp; 第五,脑只是简单的执行代码,没有智能思考的能力。在行棋之前,他需要对整个棋盘上的棋子做一个判断,然后决定该怎么行棋,关键代码如

    13、下:class Evaluate /Evaluate类 int max_x,max_y,max; public void evaluate(int shape) int i=0,j=0; for(i=0;i19;i+) for(j=0;j19;j+) switch(shapeij0) /电脑根据传进来的三维数组决定该怎么行棋, case 5: shapeij4=200; break; case 4: switch(shapeij1) case 4: shapeij4=150+shapeij2+ shapeij3; break; case 3: shapeij4=100+ shapeij2+ s

    14、hapeij3; break; default: shapeij4=50+ shapeij2+ shapeij3; break; case 3: switch(shapeij1) case 3: shapeij4=75+ shapeij2+ shapeij3; break; default: shapeij4=20+ shapeij2+ shapeij3; break; case 2: shapeij4=10+shapeij1 +shapeij2 +shapeij3; break; case 1: shapeij4=shapeij0+shapeij1 +shapeij2 +shapeij3;

    15、default : shapeij4=0; int x=0,y=0; max=0; for(x=0;x19;x+) for(y=0;y19;y+) if(maxshapexy4) max=shapexy4; max_x=x; max_y=y; 第六,在双方行棋后,我们需要判断那一方赢。裁判的功能代码如下/判断人与电脑的胜负class Judge static boolean judge(int a,int color) int i,j,flag; for(i=0;i19;i+) /行 flag=0; for(j=0;j19;j+)/列 if(aij=color) flag+; /棋子计数器 i

    16、f (flag=5) /如果棋子数等于5 return true; /返回true else flag=0; /返回false for(j=0;j19;j+) flag=0; /棋子计数器 for(i=0;i19;i+) if(aij=color) /每一列的棋子颜色一样 flag+; if(flag=5) /棋子数为5 return true; /返回true 否则返回true else flag=0; for(j=4;j19;j+) flag=0; int m=j; for(i=0;i=0;j-) flag=0; int m=j; for(i=0;i=0;i-) flag=0; int n

    17、=i; for(j=0;j=0;j-) flag=0; int m=j; for(i=18;i=j;i-) if(aim+=color) flag+; if(flag=5) return true; else flag=0; return false; 最后,我们最终的程序是急于可视化的,所以,需要容器及组建来实现,关键代码如下:class ChessPad extends Panel implements MouseListener,ActionListener /创建棋盘 int array=new int1919;/创建二维数组,生成棋盘 Sort sort=new Sort(); in

    18、t i=0; /控制棋子颜色 int x=-1,y=-1,棋子颜色=1; Button button=new Button(重新开局); /确定按钮 TextField text_1=new TextField(请黑棋下子), /创建文本组件 并初始化第一个 text_2=new TextField(), text_3=new TextField(); ChessPad() /ChessPad函数的构造函数 setSize(440,440); / setLayout(null); setBackground(Color.pink); /设置背景为粉色 addMouseListener(this

    19、); add(button);/向组件添加指定的重新开局菜单 button.setBounds(10,5,60,26); /移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 button.addActionListener(this); /添加指定的操作侦听器,以接收来自此按钮的操作事件 add(text_1); text_1.setBounds(90,5,90,24); add(text_2); text_2.setBounds(290,5,90,24); add(text_3); text_3.setBounds(200,5,80,

    20、24); for(int i=0;i19;i+) for(int j=0;j19;j+) arrayij=0; /初始化数组为0 for(int i=0;i19;i+) for(int j=0;j19;j+) for(int h=0;h5;h+) scanp.shapeijh=0; scanc.shapeijh=0; /初始化三维数组为0 text_1.setEditable(false); text_2.setEditable(false); /设置文本组件为不可编辑 第二章 模块功能介绍2.1主类Chess(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称控制棋

    21、子颜色inti重新开局ButtonButton请黑棋下子TextFieldtext_1请白棋下子TextFieldtext_2这是第+i+步TextFieldtext_3(2)方法见表2-2表2-2 主要方法方法名称返回类型功能备注ChessPad()初始化棋盘设置棋盘颜色,ChessPad()Void paint (Graphics g)对棋子等图像进行初始化设置棋子大小,颜色等Void paint (Graphics g)Public void mousePressed(MouseEvent e)鼠标的实践监听单击实践public void mousePressed(MouseEvent

    22、e)public void paint(Graphics g)画出图像控制图像的大小范围public void paint(Graphics g)public void mousePressed(MouseEvent e)处理按下鼠标的事件选中下棋的位置public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)处理鼠标离开的事件本步下棋结束public void mouseReleased(MouseEvent e)public void mouseExited(MouseEvent e)处理鼠标离

    23、开棋盘时鼠标离开组件不实现任何事件public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)处理发生单击的事件实现下棋以及重新开始游戏public void mouseClicked(MouseEvent e)(3)源代码见文件Chess.java中的公共类 Chess2.2类Autoplay(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称统计玩家的连起来的棋子数intX电脑玩家的连起来的棋子数IntY(2)方法见表2-4表2-4 主要方法方法名功能备注void autoPlay(

    24、int chesspad,int a,int b)分情况实现电脑自动下棋使用switch语句分为8种情况来下棋(3)源代码见文件Chess.java中的Autoplay类2.3类Scan(1)成员变量见表2.5表2-5 Scan成员变量描述变量类型名称统计棋盘种五个连起来的棋子数数组int shape控制行数inti控制列数intj(2)方法见表2.6表2-6 Scan方法名功能备注 void scan(int chesspad,int colour)判断棋盘上连在一起的黑白棋子个数。(3)源代码见文件Chess.java中的Scan类第三章 功能测试及运行效果3.1系统主界面图3-1初始化棋

    25、盘效果,玩家为黑棋。图3-2可以统计下棋步数,与下棋的位置。图3-3可以实现胜负的判断,并终止游戏。3.2参考文献面向对象程序设计Java(第二版).西安电子科技大学出版社2006【教材】张孝祥. Java就业培训教程M. 北京:清华大学出版社,2003陈国君等编著.Java2程序设计基础.北京:清华大学出版社,20063.3工作总结一个编程语言最强大的地方不是它是容易学,或者难学,而是它拥有一个强大的库。JAVA是一个完全面向对象的语言,JAVA的命名规则是很容易让人接受的。而且容易被编程人员记住。经过实践训练,对JAVA的综合应用能力有了较大的提高,另外对JAVA的特点有了更深层次的认识。这次实践中使用的代码虽然不长,但类与类之间也有很强的逻辑关系,这就是面向对象语言的最大优势,这样可使我们更轻松的运用JAVA。经过努力,查阅相关资料,终于完成该课题,虽然效果不是很好,但亲手做过之后还是很有成就感的。通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上


    注意事项

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

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




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

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

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

    收起
    展开