java五子棋学士学位论文.docx

上传人:b****5 文档编号:26404760 上传时间:2023-06-19 格式:DOCX 页数:33 大小:809.50KB
下载 相关 举报
java五子棋学士学位论文.docx_第1页
第1页 / 共33页
java五子棋学士学位论文.docx_第2页
第2页 / 共33页
java五子棋学士学位论文.docx_第3页
第3页 / 共33页
java五子棋学士学位论文.docx_第4页
第4页 / 共33页
java五子棋学士学位论文.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

java五子棋学士学位论文.docx

《java五子棋学士学位论文.docx》由会员分享,可在线阅读,更多相关《java五子棋学士学位论文.docx(33页珍藏版)》请在冰豆网上搜索。

java五子棋学士学位论文.docx

java五子棋学士学位论文

 

南开大学滨海学院

本科生毕业论文(设计)

 

中文题目:

JAVA五子棋

外文题目:

JAVABackgammon

作业名称:

JAVA五子棋

学号:

12990147、12990187

姓名:

黄宇、徐相如

年级:

2012级

系别:

计算机科学系

专业:

数字媒体技术

(数字影视动画技术与运用方向)

完成日期:

2015年1月12日

指导教师:

刘嘉欣

 

南开大学滨海学院本科论文(设计)诚信声明

本人郑重声明:

所呈交的毕业论文(设计),题目《JAVA五子棋》是本人在指导教师的指导下,独立进行研究工作所取得的成果。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明。

除此之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。

本人完全意识到本声明的法律结果。

 

毕业论文(设计)作者签名:

黄宇、徐相如

日期:

2015年1月12日

 

JAVA五子棋

摘要

五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。

发展于日本,流行于欧美。

容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

如今,JAVA以其独特的可移植性,跨平台性,程序体积小等多个特点成为现今网络上最流行的脚本语言。

Java的跨平台性使它应用于无线手持设备、通讯终端、信息家电等多种热门领域。

Java在多种行业的备受推崇使Java悄然融入日常生活的每一角落。

为了熟悉五子棋的规则以及技巧,与同学,电脑之间进行相互的博弈,决定用JAVA制作一个能实现局域网对战,人机对战功能的五子棋对战程序。

使用JAVA语言开发的五子棋游戏程序,将五子棋游戏移植到网络中更符合现代人娱乐理念,实现单机和双人对战的游戏模式,也可以在游戏当中进行聊天,便于用户实时进行信息交流。

 

关键字:

JAVA游戏,局域网对战,人机对战,聊天,五子棋。

 

JAVABackgammon

Abstracts

BackgammonisatwogamesonpurestrategyboardgamesoriginatedinancientChina'straditionalOthello.DevelopmentinJapan,popularinEuropeandtheUnitedStates.Easytouse,allages,amusing,fascinating;notonlyenhancethethinkingability,intelligence,andrichinphilosophy,andtohelpself-cultivation.Today,JAVAitsuniqueportability,cross-platform,theprogram,smallsizeandothercharacteristicsbecomethemostpopularscriptinglanguageonthenetworktoday.Java'scross-platformsothatitappliedtowirelesshandhelddevices,communicationterminals,informationappliances,andotherhotareas.JavainavarietyofindustrieshighlyrespectedJavaquietlyintoeverycornerofdailylife.Familiarwiththerulesandskillsofbackgammon,Betweenstudentswitheachotheroracomputergame,decidedtocreateaLANBattleandman-machinewarBackgammonBattleprogramwithJAVA.BackgammongamesusingJAVAlanguagedevelopmentprogram,thebackgammongameportedtothenetworkmoreinlinewiththeconceptofmodernentertainment,stand-aloneanddoubleplayagainstthegamemode,youcanalsochatinthegame,whisperchatfeaturessuchasuser-friendlyreal-timeexchangeofinformation.

 

Keywords:

JAVAgames,LANgaming,human-computergaming,chat,algorithm

 

目录

摘要3

Abstracts4

第一章绪论7

背景7

第二章开发工具与语言简介8

2.1Java简介8

2.2Eclipse开发环境简介9

2.3JAVA的优缺点10

第三章程序的源代码与实现12

3.1界面12

3.1.1按钮12

3.1.2棋盘与棋子实现13

3.1.3文本框代码14

3.1.4布局15

3.2按钮功能实现16

3.2.1监听16

3.2.2连接17

3.2.3认输17

3.2.4新游戏18

3.2.5悔棋19

3.3基础逻辑22

3.3.1下棋22

3.3.2输赢24

3.4联网29

3.4.1联网对战29

参考文献38

第6章结束语39

致谢40

第一章绪论

随着科技突飞猛进的发展,电脑已经进入了家家户户,而现在越来越多的热门词汇也与电脑有了关系,与电脑有关的知识也越来越受学生的喜爱,很多学生在高考填写志愿时会选择与计算机有关的学科,如数字媒体技术,影视动画,网络编程等。

同时,许多公司里的有关计算机软件开发的项目有越来越高的薪酬,计算机人才也是供不应求。

当然,软件的日益更新和增加也不再满足人们的需求。

于是,很多人便自己动手开发自己所需要的软件,只有自己才最清楚自己是需要什么样的软件。

Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能,多线程等特点。

而且与c++相比,它通俗易懂而且操作性更强,并且除去了指针等方面的要求。

通过一定的学习,人们可以使用Java开发工具开发出功能齐全,满足特殊需求的应用程序,对于学习者掌握一定的技能和开拓思维都有很大的帮助。

五子棋游戏是一款较为常见的小游戏,通过双方下棋来实现胜负。

我制作的五子棋游戏是通过两种模式,单机和联网,让玩家自己来决定所需的游戏模式,然后进行游戏。

并有悔棋和人机对战等附加功能。

在实现过程中学到了许多的专业知识,同时也巩固了在课堂上学的一系列知识。

我作为一名学生,在系统的学习了JAVA语言之后,这次的课程设计正好将我学习过的JAVA语言中的各种技术综合起来。

开发编写一个小游戏,这不仅是对自己学习的技能的一次检验,也能系统的将学过的知识复习巩固。

通过研究这一款益智游戏,可以自己动手实现想要的游戏效果。

而且在开发研究过程中,我们可以复习所学过的许多Java语言知识,对所学的知识进行系统性复习,并在研究中得出了自己的心得体验。

更可以在开发过程中得到许多的乐趣,使知识有一定的提高。

背景

五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。

有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。

在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:

“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。

”李善注引三国魏邯郸淳《艺经》中曰:

“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。

这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。

因而规则简单的五子棋也可能出自当时,并是用石子作棋子。

亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。

 

在古代,五子棋棋具虽然与围棋相类同,但是下法却是完全不同的。

正如《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜”。

在五子棋的实现价值方面相比之下是无法和围棋相比的,但刚好是这点,造就了五子棋在社会可推广的路。

学棋不是为了出成绩,因为冠军永远只有一个。

棋是培养习惯的一个载体。

他的作用是为社会培养更多懂得思考他人的社会人才。

由于五子棋比围棋简单易学,更符合目前社会的发展。

所以他不需要是难度很大的规则。

当然对不同层次的选手使用不同的规则也是可行的,关键看其产生的社会价值。

在目前国内连基础培训都很少的时候,我想规则根本不需要考虑

而对于棋子其本身来说,它的价值也是非凡的。

有人说过,现阶段五子棋的价值主要体现在它的休闲性、趣味性,而并非复杂性、竞技性,五子棋现阶段还不被人熟知,更谈不上职业化,但只要好好抓住了现阶段五子棋的价值进行发展,相信在不久五子棋就会逐步被广大群众所了解和认识,认识到它更深的价值,那时五子棋就不仅仅是简单的小游戏,职业化也并非天方夜谭了。

相信这一天终会到来,因为五子棋本身的价值,因为古人的智慧,也因为你我的努力。

 

因此,JAVA制作一个五子棋的程序比较有意义,贴近我们的生活,而且是我们比较感兴趣的项目,由此展开这个程序的制作。

 

第二章开发工具与语言简介

2.1Java简介

Java编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java不同于一般的编译执行计算机语言和解释执行计算机语言。

它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。

不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。

但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。

与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。

全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。

“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。

这与微软公司所倡导的注重精英和封闭式的模式完全不同。

Sun公司对Java编程语言的解释是:

Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

Java平台是基于Java语言的平台。

这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的 C#语言。

Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java、C、VB、C++依次排名前4位,这排名本身不说明什么,但至少也是工业界对编程语言使用上一个侧面的反映。

Java编程语言与众不同之处在于:

Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM对字节码进行解析和运行)。

编译只进行一次,而解释在每次运行程序时都会进行。

编译后的字节码采用一种针对JVM优化过的机器码形式;解释器是JVM的实现。

Java具有众多优点,比如平台无关性,安全性,面向对象,健壮式,分布式等。

与c++相比,Java去掉了其中的指针运算、结构、typedefs、#define、需要释放内存等功能,减少了平常出错的50%,让Java的语言功能很精炼。

而且,因为Java很小,所以整个解释器只需215K的RAM,并增加了一些很有用的功能。

 

2.2Eclipse开发环境简介

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具。

Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。

许多软件开发商以Eclipse为框架开发自己的IDE。

 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。

它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。

JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。

它提供建造块和构造并运行集成软件开发工具的基础。

EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。

虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。

Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。

由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。

这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。

EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。

Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的许可协议。

Eclipse的基础是富客户机平台(RichClientPlatform,即RCP)。

RCP包括下列组件:

∙核心平台(启动Eclipse,运行插件)

∙OSGi(标准集束框架)

∙SWT(可移植构件工具包)

∙JFace(文件缓冲,文本处理,文本编辑器)

∙Eclipse工作台(即Workbench,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards))

Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。

Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。

Eclipse的插件机制是轻型软件组件化架构。

在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。

已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。

插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。

Eclipse的设计思想是:

一切皆插件。

Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。

Eclipse基本内核包括:

图形API(SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE)等

2.3JAVA的优缺点

  Java适宜于互联网的开发应用,其中一个原因是它使用了虚拟机,虚拟机是个用来解释Java指令的软件包,可以让Java在任何机器上运行,比如有运行在Mac或UNIX下的虚拟机软件包。

虚拟机并不是Java语言本身,它是个为特定机器编写的解释器软件。

Java的虚拟机策略就相当于世界语,这是个人造的国际语言,目的是使得不同语言之间的翻译和沟通更加容易。

  

  要称作一个通用的计算机语言,Java是最适合不过的,这意味着它可以在所有的计算机上运行,(尽管需要为各种机器编写Java虚拟机软件),可以根据需要提供软部件,并且具有内在的安全机制。

  

  用Java编写的操作系统,称为JavaOS,是个基于语言的操作系统,它看起来似乎没有机会来占据PC市场。

但是它为MicrosoftWindows和MacOS未来的发展提供了线索。

它也许将来会应用到各种仪器设备中,包括电视遥控器和温控器。

  

  基于网络的内容供应商对Java技术很感兴趣,因为它增加了交互性和动画功能,这是吸引观众的关键因素。

对于软件商来说,Java有希望可以让人们采用租用软件的方式,诸如字处理器或者电子表格软件,而无需购买软件,这就改变了目前的商业模式。

  

  Java也使得网络计算机成为现实,无须硬盘的,价值500美元的PC

  

  将可以取代Wintel结构的计算机。

所有这一切都显出Java的重要性,它的支持者把它视作对付微软和盖茨的最后的和最好的希望,这就是为什么一些人对Java表现出狂热的崇拜的原因。

 

第三章程序的源代码与实现

3.1界面

3.1.1按钮

privateJButtongetgameButton(){//游戏按钮

if(gamebutton==null){

gamebutton=newJButton("新游戏");

gamebutton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){//监听器

//TODOAuto-generatedmethodstub

Chess.con.game();

}

});

}

returngamebutton;

}3.1.2棋盘与棋子实现

棋盘是设置一个黄色的背景,在上面绘制线条,棋子是画圆实现。

privatevoiddrawChess(Graphicsg){

for(introw=0;row

for(intcol=0;col

intcolor=Chess.model.getChess(row,col);

if(color==ChessModel.black){

g.setColor(Color.black);

g.fillOval(sx+col*unit-unit/2,sy+row*unit-unit/2,unit,unit);

}

if(color==ChessModel.white){

g.setColor(Color.white);

g.fillOval(sx+col*unit-unit/2,sy+row*unit-unit/2,unit,unit);

}

}

}

g.setColor(Color.red);//刚下的棋子周围加红色矩阵

g.drawRect(sx+unit*(ChessModel.getlastCol()-1)+unit/2,sy+unit*(ChessModel.getlastRow()-1)+unit/2,unit,unit);

}

画棋盘:

privatevoiddrawPanel(Graphicsg){

for(inti=0;i

g.drawLine(sx,sy+i*unit,sx+unit*(ChessModel.width-1),

sy+i*unit);

g.drawLine(sx+i*unit,sy,sx+i*unit,sy+unit

*(ChessModel.width-1));

}

}

棋盘上添加鼠标监听器,获取鼠标点击的位置

publicChessView(){

addMouseListener(newMouseAdapter(){

publicvoidmouseReleased(MouseEvente){

intx=e.getX()-sy;

inty=e.getY()-sx;

introw=y/unit;

intcol=x/unit;

if(y%unit>unit/2){

row++;

}

if(x%unit>unit/2){

col++;

}

Chess.con.mousePressMe(row,col);

}

});

}

3.1.3文本框代码

privateJPanelgetJpanel(){//右边创建一个面板用来接受信息和发送信息

if(jpanel==null){

jpanel=newJPanel();

jpanel.setLayout(newBorderLayout());

jpanel.add(getTextField(),BorderLayout.CENTER);

jpanel.add(getsendButton(),BorderLayout.EAST);

}

returnjpanel;

}

privateJTextFieldgetTextField(){//创建文本输入框

if(textfield==null){

textfield=newJTextField();

textfield.setPreferredSize(newDimension(2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

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

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