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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

人工智能 井字棋Word格式文档下载.docx

1、本设计的主要完成的是井字棋的人机对弈问题,即计算机与人交替落子,当行、列或对角有连续三个以上(包括三个)相同一方棋时,则判定一方胜利,如果所有位置都已经下满,且没有哪一方赢棋,则为和局。本设计的程序实现了井字棋的人机对弈,具体功能为:1.在程序界面中挥之游戏棋盘,可以是三乘三,四乘四,五乘五。显示游戏状态,其中游戏状态包括难度等级,有初级,中级和高级三种模式。还包括哪方先下,当前轮到哪方下等等。2.玩家执红,计算机为蓝方。3.可以设置谁先下,设置游戏难度等级,设置棋盘块数。要完成此设计则需判定胜负函数及一计算机自行落子函数,一旦这两个函数完成则此程序主要部分可完成。本次设计提高了我们程序设计能

2、力、培养自学能力。提高了我们的分析问题以及解决问题的能力。还提高了我们收集资料、查找参考书的能力以及锻炼书写报告的能力。功能分析此设计是具有简单功能的井字棋游戏。具体功能模块图如下:这是一个智能型的井字棋游戏,机器可以模拟人与用户对弈。当轮到机器来下的时候,机器会根据当前棋局的形势,利用极大极小算法算出一个评价值,判断如何下才对自身最有利,同时也是对方来说对不利的,然后下在评价值最高的地方。机器在搜索评价值的时候不用扩展不必要的结点,从而提高机器计算的效率。面向对象设计系统流程图如下图所示:图1游戏流程图井字棋是一个流传已久的传统游戏。游戏由两个人轮流来下,分别用“X”和“O”来代替自身的棋子

3、。双方可以在轮到自己下的时候,可以用棋子占领其中一个空的格子。如果双方中有一方的棋子可以连成一条直线,则这一方判胜,对方判负。当所有的格子都被占领,但双方都无法使棋子连成一条直线的话,则判和棋。另外利用-剪枝,使机器在搜索评价值的时候不用扩展不必要的结点,从而提高机器计算的效率。游戏时一方是电脑,另一方是玩家。所以,这类游戏在开始时有两种方式:一种是玩家先走;另一种是电脑先走。这是我们要考虑的第一个问题。然后,设计游戏的棋盘数和难易级别等,棋盘数分为三乘三、四乘四、五乘五,以及难易级别分为初级、中级和高级三个级别。当游戏结束后,又要提示玩家游戏结果,如“恭喜您,您赢了”、“笨蛋,你输了”和与电

4、脑平手的结果。还有一部分设计的是游戏的管理界面,分为游戏开始、结束和退出。然后测试该游戏,是否达成预想结果,完成预想功能。 在用户界面方法,用一个33的井字格来显示用户与机器下的结果。当要求用户输入数据的时候会有提示信息。用户在下的过程中可以中途按下“0”退出。当用户与计算机分出了胜负后,机器会显示出比赛的结果。总体E-R图如下图2所示:图2游戏总体E-R图程序实现源码分析import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.lang.*;import java.util.*;/import com

5、.borland.jbcl.layout.*;public class ChessFrame extends JFrame/游戏界面参数private Container contentPane;private JPanel upPanel;private JPanel leftPanel;private JPanel centerPanel;private JPanel rightPanel;private JPanel downPanel;private JComboBox level; /游戏级别private JComboBox size; /棋盘大小private JRadioBut

6、ton cb1; /单选按钮,玩家先手private JRadioButton cb2; /单选按钮,电脑先手private JButton b4; /开始private JButton b5; /结束private JButton b6; /退出按钮private JButton b; /棋盘按钮private JLabel b1; /欢迎词private JLabel b11;private JLabel b12;private JLabel b2; /棋局状况private JLabel b3; /棋局结果private JLabel b31;private JLabel b32;/程序

7、参数private int startturn; /先下棋的一方,1代表玩家,2代表电脑private int a; /棋盘信息,0代表无棋子,1代表玩家下的棋子,2代表电脑下的棋子private int result; /棋局结果,1代表玩家赢,2代表电脑赢,3代表平手private int c_size; /棋盘大小,本游戏中有3乘3,4乘四,5乘5三种棋盘private int c_level; /游戏级别,低级,中级,高级分别对应0,1,2private int x; /玩家出的棋子所在位置的行号private int y; /玩家所出棋子所在的列号public ChessFrame(

8、)super(井字棋人机作战);/调用界面初始化函数frameInitnew();/退出程序WindowListener w=new WindowAdapter()public void windowClosing(WindowEvent e)ChessFrame.this.dispose();System.exit(0);this.addWindowListener(w);/定义响应鼠标单击的事件ActionListener ch=new ActionListener()public void actionPerformed(ActionEvent e)if(e.getSource()=le

9、vel) /级别c_level=level.getSelectedIndex();else if(e.getSource()=size) /根据棋盘大小隐藏部分按钮c_size=size.getSelectedIndex()+3;if(c_size=3)b03.setVisible(false);b13.setVisible(false);b23.setVisible(false);b33.setVisible(false);b30.setVisible(false);b31.setVisible(false);b32.setVisible(false);b04.setVisible(fals

10、e);b14.setVisible(false);b24.setVisible(false);b34.setVisible(false);b44.setVisible(false);b40.setVisible(false);b41.setVisible(false);b42.setVisible(false);b43.setVisible(false);else if(c_size=4)b03.setVisible(true);b13.setVisible(true);b23.setVisible(true);b33.setVisible(true);b30.setVisible(true)

11、;b31.setVisible(true);b32.setVisible(true);elseb04.setVisible(true);b14.setVisible(true);b24.setVisible(true);b34.setVisible(true);b44.setVisible(true);b40.setVisible(true);b41.setVisible(true);b42.setVisible(true);b43.setVisible(true);else if(e.getSource()=cb1) /控制单选按钮cb1.setSelected(true);cb2.setS

12、elected(false);cb1.updateUI();cb2.updateUI();startturn=1;else if(e.getSource()=cb2)cb1.setSelected(false);cb2.setSelected(true);startturn=2;else if(e.getSource()=b4) /开始按钮/调用内部函数,初始化棋盘 beginChess();else if(e.getSource()=b5) /结束按钮endChess();else if(e.getSource()=b6) /exitfor(int ii=0;iic_size;ii+)for

13、(int jj=0;jjjj+)if(e.getSource()=biijj)x=ii; y=jj;playchess();/end else/end actionPerformed/end actionlistener/将所有按钮加入监听器for(int i=0;i5;i+)for(int j=0;jj+)bij.addActionListener(ch);level.addActionListener(ch);size.addActionListener(ch);cb1.addActionListener(ch);cb2.addActionListener(ch);b4.addAction

14、Listener(ch);b5.addActionListener(ch);b6.addActionListener(ch);this.setVisible(true);/end Chessframe/界面初始化函数private void frameInitnew()contentPane=this.getContentPane();/界面的大小和位置this.setSize(500,500);this.setResizable(false);Dimension frameSize=this.getSize();Dimension screenSize=Toolkit.getDefaultT

15、oolkit().getScreenSize();this.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);/将整个界面划分成五个区域,东南西北中/西为棋盘/北为欢迎词/中为空白区/东为命令按钮及棋局状况/南为游戏结果/初始状态为3乘3棋盘,级别为低级,电脑先手c_size=3;c_level=0;chessboardFormed(); /形成棋盘/其他是固定的,所以不需单独形成函数/北区,欢迎词b1=new JLabel( 欢迎来到井字棋世界!,JLabel.CEN

16、TER);b1.setFont(new java.awt.Font(Times,Font.PLAIN, 25);b1.setForeground(Color.darkGray);b11=new JLabel(b12=new JLabel(upPanel=new JPanel();upPanel.setLayout(new GridLayout(3,1);upPanel.setPreferredSize(new Dimension(500, 80);upPanel.add(b11);upPanel.add(b1);upPanel.add(b12);contentPane.add(upPanel,

17、BorderLayout.NORTH);/南区,棋局结果,初始状态为空b3=new JLabel( * b31=new JLabel(b32=new JLabel(b3.setFont(new java.awt.Font(b3.setForeground(Color.darkGray);downPanel=new JPanel();downPanel.setPreferredSize(new Dimension(500, 60);downPanel.setLayout(new GridLayout(3,1);downPanel.add(b31);downPanel.add(b3);downPanel.add(b32);contentPane.add(downPanel,BorderLayout.SOUTH);/东区,包括游戏级别选择,棋盘大小选择,先手方选择,以及开始,结束退出按钮rightPanel=new JPanel();运行结果本设计中的难易程度分为三个级别,分别为:初级,中级和高级。玩家可以根据自己的需要来选择适合自己的难易程度进行游戏。具体如下图所示:图3玩家游戏难易程度选择界面游戏在开始时有两种方式:具体界面设计如下:图4玩家赢界面

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

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