




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、辽 宁 工 业 大 学Java语言程序设计课程设计(论文)题目: 网络版游戏井字棋 院(系): 软 件 学 院 专业班级: 软件工班 学 号: 13 学生姓名: 指导教师: 峰 教师职称: 讲 师 起止时间: 201013.6.20 课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号 1313学生姓名专业班级软件班课程设计(论文)题目网络版游戏井字棋课程设计(论文)任务任务与要求:(1). 掌握面向对象程序设计语言JAVA的基本语法(2). 掌握JAVA面向对象设计的思想,(3). 掌握VJAVA6.0与MyEclips JAVA 开发工具的使用 (4). 运用标准JAVA
2、规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩 成绩: 指导教师签字: 2014 年 06 月 24 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第1章 课程设计目的与要求11.1设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1功能分析32.2.2面向对象设计42.3程序实现72.3.1源码分析72.3.2运行结果12第3章 总结14参考文献15第1章 课程设计目的与要求1.1设计目的将理论教学中涉及到
3、的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生淮南房管局在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程JAVA语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学
4、模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。1.3预备知识熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,
5、确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述随着计算机技术和互联网的飞速发展,游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一。电脑游戏的出现为人民提供了新的娱乐平台,丰富了人们的业余生活。因此与游戏有关的软件深受广大青少年的喜爱。随着近几年来软件技术的不断进步和不断发展,软件游戏的操作要求越来越简单,大多数游戏普通人学几分钟就能会玩,婶子老年人也慢慢爱上了它。随着电子计算机一代又一代实现更新,性能越来越高,计算速度越来越快,硬件方面的不断发展促使了软件技术也迅速发展。许多游戏的设计软件人才在工作之余时常喜爱编一种能与人斗智的游戏,以此来锻炼编程的
6、能力,这种游戏花样繁多,但其特点都是利用计算机软件事先设计好的分析和判断能力反过来与人较量,如今,游戏软件已经为时间各国的人使用,所谓游戏软件通常是指各种程序和动画效果相结合起来的软件产品。现在游戏软件产业已经受到了广泛的关注,它年轻又潜力而且吸引人,让人们日益丰富的生活需求得到满足。而井字棋游戏的诞生更是吸引着不同年龄段的人群,无论男女老少都可以玩,也都喜欢玩,而当前微型计算机已经是在广大人群中流行者,用电脑来下井字棋更是一种时尚。现在网络上出现了各种各样的井字棋软件,有大师级的,新手级的等等。这些都满足了不同人群的需要,所以当前井字棋越来越被许多人所熟悉。目前的井字棋程序的发展也非常快,从
7、最初的双人发展到人机,然后到现在的网络对战,已经受到越来越多人的喜爱和重视。井字棋不但容易上手,而且它区别于别的游戏,它不但能使人娱乐,而且能使人的头脑变的更加聪明。而井字棋有两种对战模式,一是人机对战,二十人人对战。这些给人无限乐趣的用途正式人工智能的杰作。正因为这样它鼓励着人们对它不断的研究,这在很大程度上促进了人工智能的发展,反过来人工智能的理论和技术上的突破能够使井字棋程序更加完美,更受欢迎。2.2 系统设计这是一个具有简单功能的井字棋游戏。本设计的主要完成的是井字棋的人机对弈问题,即计算机与人交替落子,当行、列或对角有连续三个以上(包括三个)相同一方棋时,则判定一方胜利,如果所有位置
8、都已经下满,且没有哪一方赢棋,则为和局。本设计的程序实现了井字棋的人机对弈,具体功能为:1.在程序界面中挥之游戏棋盘,可以是三乘三,四乘四,五乘五。显示游戏状态,其中游戏状态包括难度等级,有初级,中级和高级三种模式。还包括哪方先下,当前轮到哪方下等等。2.玩家执红,计算机为蓝方。3.可以设置谁先下,设置游戏难度等级,设置棋盘块数。要完成此设计则需判定胜负函数及一计算机自行落子函数,一旦这两个函数完成则此程序主要部分可完成。本次设计提高了我们程序设计能力、培养自学能力。提高了我们的分析问题以及解决问题的能力。还提高了我们收集资料、查找参考书的能力以及锻炼书写报告的能力。2.2.1功能分析此设计是
9、具有简单功能的井字棋游戏。本设计的主要完成的是井字棋的人机对弈问题,即计算机与人交替落子,当行、列或对角有连续三个以上(包括三个)相同一方棋时,则判定一方胜利,如果所有位置都已经下满,且没有哪一方赢棋,则为和局。具体功能模块图如下:网络版游戏-井字棋棋盘设定难易程度某方先玩游戏游戏结果三乘三棋盘四乘四棋盘五乘五棋盘初级中级高级玩家先手电脑先手开始结束退出赢平手输图2.1系统功能模块图这是一个智能型的井字棋游戏,机器可以模拟人与用户对弈。当轮到机器来下的时候,机器会根据当前棋局的形势,利用极大极小算法算出一个评价值,判断如何下才对自身最有利,同时也是对方来说对不利的,然后下在评价值最高的地方。机
10、器在搜索评价值的时候不用扩展不必要的结点,从而提高机器计算的效率。2.2.2面向对象设计这是一个智能型的井字棋游戏,机器可以模拟人与用户对弈。当轮到机器来下的时候,机器会根据当前棋局的形势,利用极大极小算法算出一个评价值,判断如何下才对自身最有利,同时也是对方来说对不利的,然后下在评价值最高的地方。机器在搜索评价值的时候不用扩展不必要的结点,从而提高机器计算的效率。系统流程图如下图所示:初始化manTurn=1选择棋盘选择难易程度选择先下一方电脑先下人下棋子某方是否赢棋ifmanTurn=1棋盘状态保存某方是否赢棋结束YesNoYes不作处理No图2.2游戏流程图井字棋是一个流传已久的传统游戏
11、。游戏由两个人轮流来下,分别用“X”和“O”来代替自身的棋子。双方可以在轮到自己下的时候,可以用棋子占领其中一个空的格子。如果双方中有一方的棋子可以连成一条直线,则这一方判胜,对方判负。当所有的格子都被占领,但双方都无法使棋子连成一条直线的话,则判和棋。这是一个智能型的井字棋游戏,机器可以模拟人与用户对弈。当轮到机器来下的时候,机器会根据当前棋局的形势,利用极大极小算法算出一个评价值,判断如何下才对自身最有利,同时也是对方来说对不利的,然后下在评价值最高的地方。另外利用-剪枝,使机器在搜索评价值的时候不用扩展不必要的结点,从而提高机器计算的效率。游戏时一方是电脑,另一方是玩家。所以,这类游戏在
12、开始时有两种方式:一种是玩家先走;另一种是电脑先走。这是我们要考虑的第一个问题。然后,设计游戏的棋盘数和难易级别等,棋盘数分为三乘三、四乘四、五乘五,以及难易级别分为初级、中级和高级三个级别。当游戏结束后,又要提示玩家游戏结果,如“恭喜您,您赢了”、“笨蛋,你输了”和与电脑平手的结果。还有一部分设计的是游戏的管理界面,分为游戏开始、结束和退出。然后测试该游戏,是否达成预想结果,完成预想功能。 在用户界面方法,用一个33的井字格来显示用户与机器下的结果。当要求用户输入数据的时候会有提示信息。用户在下的过程中可以中途按下“0”退出。当用户与计算机分出了胜负后,机器会显示出比赛的结果。总体E-R图如
13、下图2-2所示:nnnnn玩家设置棋盘三乘三四乘四五乘五某方先玩玩家先下电脑先下难度级别初级中级高级玩游戏结果输平手赢游戏开始结束退出mm图2.3游戏总体E-R图2.3程序实现2.3.1源码分析import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.lang.*;import java.util.*;/import com.borland.jbcl.layout.*;public class ChessFrame extends JFrame/游戏界面参数private Container conte
14、ntPane;private JPanel upPanel;private JPanel leftPanel;private JPanel centerPanel;private JPanel rightPanel;private JPanel downPanel;private JComboBox level; /游戏级别private JComboBox size; /棋盘大小private JRadioButton cb1; /单选按钮,玩家先手private JRadioButton cb2; /单选按钮,电脑先手private JButton b4; /开始private JButt
15、on 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; /程序参数private int startturn; /先下棋的一方,1代表玩家,2代表电脑private int a; /棋盘信息,0代表无棋子,1代表玩家下的棋子,2代表电脑
16、下的棋子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()super(井字棋人机作战);/调用界面初始化函数frameInitnew();/退出程序WindowListener w=new WindowAdapter()publi
17、c 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()=level) /级别c_level=level.getSelectedIndex();else if(e.getSource()=size) /根据棋盘大小隐藏部分按钮c_siz
18、e=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(false);b14.setVisible(false);b24.setVisible(false);b34.setVisible(false);b44.setVisible(fal
19、se);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);b31.setVisible(true);b32.setVisible(true);b04.setVisible(false);b14.setVisible(false);
20、b24.setVisible(false);b34.setVisible(false);b44.setVisible(false);b40.setVisible(false);b41.setVisible(false);b42.setVisible(false);b43.setVisible(false);elseb03.setVisible(true);b13.setVisible(true);b23.setVisible(true);b33.setVisible(true);b30.setVisible(true);b31.setVisible(true);b32.setVisible(t
21、rue);b04.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.setSelected(false);cb1.updateUI();cb2.updateUI
22、();startturn=1;else if(e.getSource()=cb2)cb1.setSelected(false);cb2.setSelected(true);cb1.updateUI();cb2.updateUI();startturn=2;else if(e.getSource()=b4) /开始按钮/调用内部函数,初始化棋盘 beginChess();else if(e.getSource()=b5) /结束按钮endChess();else if(e.getSource()=b6) /exitSystem.exit(0);elsefor(int ii=0;iic_size;
23、ii+)for(int jj=0;jjc_size;jj+)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;j5;j+)bij.addActionListener(ch);level.addActionListener(ch);size.addActionListener(ch);cb1.addActionListener(ch);cb2.addActionListener
24、(ch);b4.addActionListener(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=To
25、olkit.getDefaultToolkit().getScreenSize();this.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);/将整个界面划分成五个区域,东南西北中/西为棋盘/北为欢迎词/中为空白区/东为命令按钮及棋局状况/南为游戏结果/初始状态为3乘3棋盘,级别为低级,电脑先手c_size=3; startturn=2;c_level=0;chessboardFormed(); /形成棋盘/其他是固定的,所以不需单独形成函数/北区,欢迎词b1=new
26、 JLabel( 欢迎来到井字棋世界!,JLabel.CENTER);b1.setFont(new java.awt.Font(Times,Font.PLAIN, 25);b1.setForeground(Color.darkGray);b11=new JLabel( ,JLabel.CENTER);b12=new JLabel( ,JLabel.CENTER);upPanel=new JPanel();upPanel.setLayout(new GridLayout(3,1);upPanel.setPreferredSize(new Dimension(500, 80);upPanel.ad
27、d(b11);upPanel.add(b1);upPanel.add(b12);contentPane.add(upPanel,BorderLayout.NORTH);/南区,棋局结果,初始状态为空b3=new JLabel( * ,JLabel.CENTER);b31=new JLabel( ,JLabel.CENTER);b32=new JLabel( ,JLabel.CENTER);b3.setFont(new java.awt.Font(Times,Font.PLAIN, 25);b3.setForeground(Color.darkGray);downPanel=new JPanel
28、();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();2.3.2运行结果本设计中的难易程度分为三个级别,分别为:初级,中级和高级。玩家可以根据
29、自己的需要来选择适合自己的难易程度进行游戏。具体如下图所示:图2.4玩家游戏难易程度选择界面游戏在开始时有两种方式:一种是玩家先走;另一种是电脑先走。这是我们要考虑的第一个问题。然后,设计游戏的棋盘数和难易级别等,棋盘数分为三乘三、四乘四、五乘五,以及难易级别分为初级、中级和高级三个级别。当游戏结束后,又要提示玩家游戏结果,如“恭喜您,您赢了”、“笨蛋,你输了”和与电脑平手的结果。还有一部分设计的是游戏的管理界面,分为游戏开始、结束和退出。然后测试该游戏,是否达成预想结果,完成预想功能。具体界面设计如下:图2.5玩家赢界面第3章 总结井字棋游戏的诞生更是吸引着不同年龄段的人群,无论男女老少都可以玩,也都喜欢玩,而当前微型计算机已经是在广大人群中流行者,用电脑来下井字棋更是一种时尚。现在网络上出现了各种各样的井字棋软件,有大师级的,新手级的等等。这些都满足了不同人群的需要,所以当前井字棋越来越被许多人所熟悉。目前的井字棋程序的发展也非常快,从最初的双人发展到人机,然后到现在的网络对战,已经受到越来越多人的喜爱和重视。通过本次课程设计,从看到设计要求,到选择课题再到自己构思,设计数据结构,构造算法,编写源代码,再到上机调试,我充分认识到书本上的知识只是数据结构的基础知识,认识到将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年青海货运从业资格证考试试卷题库
- 小学英语命题试卷创意
- 小学英语试卷模式
- 健身馆员工合同范本
- 减水剂供货合同范本
- FOB买卖合同范本
- 美容师初级习题库及答案
- 工业锅炉司炉模考试题与答案
- 个人年度简短的工作总结
- 中级电工模拟习题含参考答案
- LLC经验教训卡模板
- 中建幕墙方案
- 宁夏设施蔬菜产业集约化育苗模式分析与探讨
- 新闻采访与写作课件第九章采访的实施访问
- 网络服务器配置与管理-Windows-Server-2003-篇第1章-Windows-Server2003服务器基础
- 内蒙古大中矿业有限公司(东五分子铁矿)矿山地质环境保护与土地复垦方案
- 初中物理学霸笔记
- 新人教版四年级下册小学数学全册课时练(一课一练)
- 辨脏腑兼病证候
- 浅谈幼儿入园适应性问题及其解决对策 论文
- 《酷虫学校 第1 12册 注音版 》读书笔记思维导图PPT模板下载
评论
0/150
提交评论