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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

JAVA黑白棋课程设计Word文档下载推荐.docx

1、指导教师评语及成绩成绩: 指导教师签字: 2010年12月24日目 录第1章 课程设计的目的与要求 11.1 课程设计目的 11.2 课程设计的实验环境 11.3 课程设计的预备知识 11.4 课程设计要求 1第2章 课程设计内容 22.1课程设计主要内容 22.2概要设计 22.3详细设计 52.4测试分析 17第3章 课程设计总结 18参考资料 19第1章 课程设计的目的与要求1.1 课程设计目的JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次

2、全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求

3、学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。第2章 课程设计内容2.1课程设计主要内容Java语言的学习热潮并没有因为时间的推移而消退,相反,由于计算机技术的发展所带来新应用的出现,Java越来越流行,这种情况是以往程序设计语言在其生存周期内所不多见的。Java语言之所以

4、这样长盛不衰,一是因为其众多的技术特点与现今的应用十分合拍,可以覆盖大部分的需求;二是因为SUN公司不断推出新的版本,完善Java自身的功能。有了这两点,Java语言成为程序员首选的程序设计开发工具就在情理之中了。黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。一般棋子双面为黑白两色,故称“黑白棋”。因为行棋之时将对方棋子翻转,变为己方棋子,故又称“翻转棋”。棋子双面为红、绿色的称为“苹果棋”。 黑白棋的前身是英国人发明的翻转棋(Reversi),后来由日本的长谷川五郎加以改进,并改称为奥赛罗棋(Othello),国内习惯上称之为黑白棋。这个棋类游戏在西方较为流行,但

5、在中国起步较晚,还不很普及。黑白棋作为一个棋类竞技运动,在民间十分流行,为了熟悉黑白棋规则及技巧,以及研究简单的人工智能,决定用Java开发黑白棋游戏。主要完成了人机对战功能,有很好的可扩展性。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。尽管黑白棋的规则比较简单,但它所包括的丰富战略,不亚于那些相当“经典”的策略游戏。其中人工

6、智能部分,由于采用了大量的搜索算法,其中很多被利用到各方面。2.2概要设计近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表,其它像围棋的“手淡”、象棋的“将族”等也以其优秀的人工智能深受棋迷喜爱。越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感兴趣,而黑白棋游戏程序的开发实现这个课题,正好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈),

7、让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这个课题就是和人工智能中的博弈论领域紧密相关的。这个题目核心是人工智能和Soc

8、ekt编程,并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以,趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是很实用且很有必要的。电脑究竟能否最终战胜人脑?这是大家一直在探索的问题。自从1997年黑白棋程序Logistello战胜冠军棋手村上健以来,电脑程序已经把人类棋手远远抛在后面。目前,程序可以记住大量的开局定式、可以正确地判断局面的优劣、可以思考到二十几步之后的局面,这都是人类棋手远不能及的。然而,电脑的这一切又都是人类所赋予的,因此究竟电脑和人

9、脑孰优孰劣,还难以定论。2.2.1 自定义说明吃子规则:采用夹吃的原则,左图用红色标记的是黑方可落子的位置。当黑方落子之后,则夹在两黑子中间的白子都将变为黑子。右图是落子后的棋盘布局,蓝色标记的是白方可落子的位置。夹子的方向包含:水平、竖直、斜对角2.2.2 程序流程图(1)落棋位置判断:(2)输出成绩:(3)输出最后的胜利者结果:2.2.3 各模块功能及程序说明落棋位置的判断模块:判断落子后棋盘的变化,判断棋手的落棋位置和次数,两方交换走棋。成绩输出模块:判断输出哪个棋手的分,在不同的位置输出,清空成绩,判断哪方胜利。输出胜利者信息模块:开始判断最后的结果,将两人分数分别输出。 2.2.4

10、程序结果一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己棋子的数目多于对方。按键盘上的方向键可以上下左右移动棋子,按回车键可以摆放棋子,同时也可以用鼠标左键操作。在同上操作下到最后谁的棋子多,谁赢。2.3详细设计程序详细设计代码如下:import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.*;import java.util.*;import java.awt.Font;public class Main public static void main(Stri

11、ng args) BlackAndWhiteDesign b = new BlackAndWhiteDesign(); class BlackAndWhiteDesign extends Frame implements Runnable Go Background = new Go(); boolean stepColor = true; int PORT; Socket sendSocket;/主动连接Socket PrintWriter writer;/用来发送message boolean stopFlag; boolean isInitiative; Point messagePoi

12、nt; Panel panel1 = new Panel(); Panel panel2 = new Panel(); Panel panel3 = new Panel(); CheckboxGroup checkboxGroup1 = new CheckboxGroup(); Checkbox checkbox1 = new Checkbox(); Checkbox checkbox2 = new Checkbox(); Label label1 = new Label(); TextField textField1 = new TextField(10); Panel PtextField

13、1 = new Panel(); Button button1 = new Button(); Label label2 = new Label(); Choice choice1 = new Choice(); Button button2 = new Button(); Button button3 = new Button(); BorderLayout borderLayout3 = new BorderLayout(); Panel panel4 = new Panel(); Panel panel4_1 = new Panel(); Panel panel4_2 = new Pan

14、el(); Panel panel4_3 = new Panel(); Label label3 = new Label(黑棋); Label label4 = new Label(白棋 JTextArea BlackNumber = new JTextArea(02 /定义并初始化黑棋计数板 JTextArea WhiteNumber = new JTextArea( /定义并初始化白棋计数板 BlackAndWhiteDesign() try bwInit(); catch(Exception e) e.printStackTrace(); private void bwInit() th

15、rows Exception this.setTitle(网络黑白棋 作者:刘茂龙 new Thread(this).start();/启动监听线程 this.PORT = 1976; this.isInitiative = false;/是否主动连接 this.stopFlag = false;/是否继续监听的标志 this.messagePoint = new Point(); choice1.setBackground(new Color(236, 190, 98); this.choice1.addItem(黑白 this.setBackground(new Color(236, 19

16、0, 98); this.setSize(580,565); this.setResizable(false); this.setVisible(true); checkbox1.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) checkbox1_mouseClicked(e); ); panel1.setLayout(new BorderLayout(); checkbox1.setCheckboxGroup(checkboxGroup1); checkbox1.setLabel(单机 ch

17、eckbox2.addMouseListener(new MouseAdapter() checkbox2_mouseClicked(e); checkbox2.setCheckboxGroup(checkboxGroup1); checkbox2.setLabel(联机 label1.setText(对方地址 button1.setBackground(new Color(236, 190, 98); button1.setLabel(连接 button1.addActionListener(new ActionListener() public void actionPerformed(A

18、ctionEvent e) button1_actionPerformed(e); label2.setText( button2.setBackground(new Color(236, 190, 98); button2.setLabel(开始 button2.addActionListener(new ActionListener() button2_actionPerformed(e); button3.setBackground(new Color(236, 190, 98); button3.setLabel(重新开始 this.button3.setEnabled(false);

19、 button3.addActionListener(new ActionListener() button3_actionPerformed(e); Background.addMouseListener(new MouseAdapter() Background_mouseClicked(e); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) this_windowClosing(e); panel3.setLayout(new GridLayout(9, 1); pan

20、el3.setBackground(new Color(236, 190, 98); panel3.add(checkbox1); panel3.add(checkbox2); panel3.add(label1); PtextField1.add(textField1); panel3.add(PtextField1); panel3.add(choice1); panel3.add(button1); panel3.add(button2); panel3.add(button3); panel3.add(label2); panel4.setLayout(new GridLayout(1

21、, 3); label3.setFont(new Font(h,15,30); panel4_1.add(label3); BlackNumber.setFont(new Font( BlackNumber.setEditable(false); panel4_1.add(BlackNumber); label4.setFont(new Font( panel4_2.add(label4); WhiteNumber.setFont(new Font( WhiteNumber.setEditable(false); panel4_2.add(WhiteNumber); panel4.add(pa

22、nel4_1); panel4.add(panel4_2); panel4.add(panel4_3); this.panel1.add(this.Background,BorderLayout.CENTER); this.panel1.add(panel3, BorderLayout.EAST); this.panel1.add(panel4, BorderLayout.SOUTH); this.add(panel1, BorderLayout.CENTER); this.disableLink();/废掉控件 this.checkboxGroup1.setSelectedCheckbox(

23、this.checkbox1); this.centerWindow(); this.Background.setEnabled(false); void checkbox1_mouseClicked(MouseEvent e) this.button2.setEnabled(true); /disable联机时用的控件 void disableLink() this.textField1.setBackground(new Color(236, 190, 98); this.textField1.setEnabled(false); this.choice1.setEnabled(false

24、); this.button1.setEnabled(false); void checkbox2_mouseClicked(MouseEvent e) this.enableLink(); void enableLink() this.textField1.setBackground(Color.white); this.textField1.setEnabled(true); this.choice1.setEnabled(true); this.button1.setEnabled(true); this.button2.setEnabled(false); void button1_a

25、ctionPerformed(ActionEvent e) this.goToLink(this.textField1.getText().trim(),this.PORT); /开始 void button2_actionPerformed(ActionEvent e) if(e.getActionCommand().equals() this.button3.setEnabled(true); this.checkbox1.setEnabled(false); this.checkbox2.setEnabled(false); this.button2.setLabel(退出 if(thi

26、s.isSingle() this.Background.setEnabled(true); /判断类型 boolean isSingle() return this.checkbox1.getState(); void button3_actionPerformed(ActionEvent e) if (isSingle() int Choose; Choose=JOptionPane.showConfirmDialog(null, 您确定要重新开始吗?, 提示, JOptionPane.YES_NO_OPTION); if (Choose = JOptionPane.YES_OPTION)

27、 this.Background.Restart(); String s1, s2; if (this.Background.BlackNumberc=9) s1=0+Integer.toString(this.Background.BlackNumberc); else s1 = Integer.toString(this.Background.BlackNumberc); if (this.Background.WhiteNumberc=9) s2=+Integer.toString(this.Background.WhiteNumberc); else s2 = Integer.toString(this.Background.WhiteNumberc); this.BlackNumber.setText(s1); this.WhiteNumber.setText(s2); this.button2.set

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

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