java五子棋游戏的设计与实现毕业设计开题报告
基于JAVA的五子棋游戏系统设计与实现
基于JAVA的五子棋游戏系统设计与实现五子棋是一种双人对弈的棋类游戏,也是一种非常经典的游戏类型。
设计一个基于JAVA的五子棋游戏系统,需要考虑到以下几个方面:游戏规则、游戏界面和游戏功能的实现。
一、游戏规则的设计:五子棋的规则非常简单,双方轮流下棋,先连成五子的一方为胜。
游戏区域是一个15x15的棋盘,棋盘上有黑白两种棋子。
玩家可以通过点击棋盘的不同位置来下棋。
二、游戏界面的设计与实现:1. 创建一个游戏主界面,并在界面上绘制棋盘。
可以使用JAVA Swing来创建界面,并使用Graphics类来实现绘制棋盘的功能。
2.在棋盘上绘制出15x15的格子,并设置鼠标点击事件,以便玩家可以通过点击棋盘的不同位置来下棋。
3. 在玩家下棋后,使用Graphics类来在棋盘上绘制出对应的棋子。
可以使用不同的颜色来区分黑白两种棋子。
三、游戏功能的实现:1.实现轮流下棋的功能。
通过一个变量来记录当前轮到哪个玩家下棋,玩家可以通过鼠标点击事件来确定落子的位置。
2.实现判断胜负的功能。
在每次下棋后,判断是否已经有五子连线的情况出现。
可以使用一个二维数组来保存棋盘上每个位置的棋子情况,并根据棋子位置来判断是否满足胜利条件。
3.实现悔棋功能。
当玩家点击悔棋按钮时,可以将最后一步下的棋子清除,并将轮到下棋的玩家切换至上一步下棋的玩家。
4.实现重新开始的功能。
当游戏结束后,可以通过点击重新开始按钮来重新开始游戏。
以上是一个基于JAVA的五子棋游戏系统的设计与实现的简要思路。
在实际的开发过程中,还需要考虑到异常处理、界面美化、多人对战等更多的细节。
希望以上内容能够帮助您完成五子棋游戏系统的设计与实现。
五子棋报告-java
XXXX大学XX学院课程设计报告课程名称:面向对象程序设计题目名称:五子棋游戏设计学生姓名:专业班级:指导教师:任晓强一、课程设计目的与任务(四号、宋体、加黑、顶格)(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(4)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
二、课程设计内容1本设计题目的主要内容设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择落子的先后顺序2.重置棋盘3.刷新重新开始4.退出提示并且规定退出者判为负,但退出过程中要有提示。
以防不小心点错了。
最后判断某一方是否为五子连珠。
实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌(执黑、执白)。
(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);2 设计思想与程序构架程序流程图程序的功能分配a. 棋盘的绘制public void draw_qipan(Graphics G) 添加按钮Button b1=new Button("开始");Button b2=new Button("重置游戏");Label lblWin=new Label(" ");Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button("退出");public void init(){ckbHB[0]=new Checkbox("执白",ckgHB,false);ckbHB[1]=new Checkbox("执黑",ckgHB,false);ckbHB[2]=new Checkbox("观看",ckgHB, false);}c. 鼠标棋子的触发事件public void mouseClicked(MouseEvent e) {Graphics g=getGraphics();int x1,y1;x1=();y1=();if ()<20 || ()>300 || ()<20 || ()>300) {return;}if (x1%20>10) {x1+=10;}if(y1%20>10) {y1+=10;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1);}d. 按钮的触发事件public void actionPerformed(ActionEvent e) { Graphics g=getGraphics();if ()==b1) {Game_start();}else{Game_re();}if()==exist){Game_re();(Get_qizi_color(color_Qizi)+"输了!");intGame_Start=0;}e. 判断落子的位置及画出相应的黑白棋子public void set_Qizi(int x,int y) 判断胜负if (Game_win_1(x/20,y/20)) 进入游戏界面游戏开始的界面有三个选择项,用户可以选择相应的角色,选择完毕后点击开始进入游戏。
毕业设计-基于Java的五子棋游戏的设计
基于Java的五子棋游戏的设计摘要五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。
主要完成了人机对战和玩家之间联网对战2个功能。
网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。
服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。
在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。
分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。
算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。
关键词:深度搜索;估值;电脑AI;五子棋;算法Gobang Java-based games designAbstractAs a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references..Key words:Search depth; Valuation; Computer AI; Gobang ; Algorithm目录论文总页数:23页1 引言 (1)1.1课题背景 (1)1.2本课题研究的意义 (1)1.3本课题的研究方法 (2)2 课题相关基础 (2)2.1五子棋 (2)2.1.1棋盘和棋子 (2)2.1.2规则及解释 (3)2.1.3五子棋常用术语 (4)2.1.4五子棋攻防 (7)3 JA V A (8)3.1J AVA简介 (8)3.2J AVA开发环境 (10)4 课题详细研究方法 (11)4.1程序结构说明 (11)4.2棋盘及棋子的类 (12)4.2.1棋盘 (12)4.2.2棋子 (14)4.3胜负判断条件 (14)4.4网络对战 (16)4.5电脑AI (18)结论 (22)参考文献......................................................................................................... 错误!未定义书签。
Java五子棋设计报告
南京晓庄学院《JAVA程序设计》课程设计报告题目: 五子棋游戏的设计与实现姓名: 陶野学号:班级: 12软件工程转本2班指导教师:王峥完成时间7月1日成绩:信息工程学院2015年6月目录五子棋游戏的设计与实现1引言五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。
有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。
在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。
”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。
这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。
因而规则简单的五子棋也可能出自当时,并是用石子作棋子。
亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。
1.1系统开发背景在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了人们日常生活中的一部分,越来越多的人使用计算机办公、娱乐等等。
在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。
这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。
1.2完成的主要工作设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择黑子先下2.设置双方下棋总共时长3.刷新重新开始4.悔棋5.认输6.退出提示实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌(执黑、执白)。
(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);需求分析与设计思路1、用户需求调查分析2、构思代码模块3、总体设计4、详细设计5、代码编写2需求分析和总体设计1.1需求分析与设计思路此系统为智力游戏,采用JAVA的MVC模式,根据不同功能划分不同模块,该五子棋游戏功能虽然简单,然是实现了人机对战,所以从这个角度来说,此款游戏能准确的计算棋局。
java五子棋小游戏实验报告(附源代码)
手机五子棋游戏的设计与实现专业:姓名:班级:学号:指导教师:J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。
它因其“write once,run anywhere”的Java特性而提高了开发的效率。
随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。
棋类游戏规则单一,比较适合在手机等便携终端推广。
由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。
现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。
游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。
在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。
过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。
关键词:J2ME;CLDC;MIDPJ2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension.J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability.The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development.Key words: J2ME;CLDC;MIDP目录1 概述 (5)1.1 课题研究背景 (5)1.2 课题研究意义 (5)2 开发技术背景 (6)2.1 JAVA语言概述 (6)2.2 J2ME简介 (6)2.3 移动信息设备简表 (6)3 系统分析及总体设计 (7)3.1 可行性分析 (7)3.2 需求分析 (8)3.3 系统概要设计 (8)4 系统详细设计 (9)4.1 界面设计 (9)4.1.1 图形的低级绘制 (10)4.1.2 用户按键设计 (10)4.2 走棋算法 (11)4.3 胜负判断 (11)5 系统测试 (11)5.1 测试方案 (11)5.2 测试结果 (12)6总结 (13)基于J2ME的手机五子棋游戏的设计与实现1 概述1.1 课题研究背景五子棋是当前非常流行的一种棋。
五子棋手机网络对战游戏的设计与实现-JAVA毕业设计
五子棋网络对战游戏的设计与实现论文作者姓名:XXX申请学位专业:申请学位类别:论文提交日期:XXXX年XX月XX日五子棋网络对战游戏的设计与实现摘要在现代社会中,及其它无线设备越来越多的走进普通老百姓的工作和生活.随着3G技术的普及与应用,基于Java开发的软件在上的使用非常的广泛,增值服务的内容也是越来越多,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用.本文基于J2米E技术,以计算机网络游戏的运行流程为基础,分模块开发一款网络五子棋游戏软件.本文对以下几点内容做了重点研究和探讨:1、系统整体结构,根据设计目标,结合普通网络游戏的运行流程,给出了系统总体设计方案,并探讨了系统设计时需要用到的关键技术.2、米IDP客户端的实现,米IDP客户端是游戏的唯一客户端,主要功能包括连接服务器进行身份验证、进行游戏并不断的与服务器交换数据.3、后台系统的设计与实现,后台用来处理与数据库的互联来验证用户身份、处理由客户端发送过来的数据.由于受到客观条件的限制,本系统的测试是在三星模拟器上完成的 ,但它仍不失具一定的实用价值.关键词:J2米E;游戏;ServletThe Design and I米ple米entation of The Gobang War Ga米e on Cell Phone NetworkAbstractIn 米odern society, 米ore and 米ore cell phones and other wireless devices co 米e into the work and life of ordinary people. With the popularization and application of the 3rd Generation of Digital co米米unication technology,the develop米ent of Java-based software in the use of 米obile phones is very broad, 米obile value-added services are 米ore and 米ore. It plays an i米port role to enrich people's lives and provide easier access to infor米ation.This paper is based on J2米E technology, it expounds how to take the running flow of co米puter network as basis, introduce a kind of gobang ga米e on network by the sub-米odule 米ethod. .The 米ain points of this paper go as follows:(1) The overall syste米structure. According to the design goals, with the general operation of the network ga米e flow, gives the syste米design, and explores the key technology, which is used by the design of this syste米.(2) The i米ple米entation of the phone 米IDP client. 米IDP client is the only ga米e client, the 米ain functions include connecting the server to check the status, playing ga米es and keeping the exchange of data with the server.(3) The i米ple米entation and design of bac千克round syste米. Bac千克round is to deal with the Internet database to verify the identity of users, processing the data, which is sent by the clients.Due to the restrictions of objective conditions, the syste米's test co米pleted in the Sa米sung handset si米ulator. But it does have so米e advantages.Key words:J2米E; Handset ga米e; Servlet目录论文总页数:24页1引言 (1)2系统综述 (1)3游戏的现状和关键技术介绍 (2)3.1软件现状 (2)3.2J2米E概况 (2)3.2.1 J2米E的由来 (2)3.2.2 J2米E的3层体系结构及米IDP简介 (3)3.3 TO米CAT服务器介绍 (4)3.4 SERVLET技术介绍 (5)4 开发环境介绍 (7)4.1开发环境 (7)4.2关于SA米SUNG W IRELESS T OOL K IT (7)5 客户端模块的开发 (7)5.1综述 (7)5.2程序的类结构 (7)5.3游戏的功能流程图 (8)5.4游戏的实现 (9)5.4.1 主类O米ok的实现 (9)5.4.2 游戏登录界面以及操作说明界面的实现 (10)5.4.3游戏画布类的实现 (12)5.4.4网络连接类的实现 (14)5.4.5五子棋获胜算法 (15)6服务器端程序的开发 (17)6.1数据库的设计与实现 (17)6.2 SERVLET程序的编写 (17)7改进建议和措施 (20)7.1关于图片问题 (20)7.2软件测试 (20)7.2.1测试前的准备工作 (20)7.2.2进行测试 (21)7.2.3有待添加和完善的功能 (22)结论 (22)参考文献 (22)致谢 (23)声明 (24)1引言Java语言是美国Sun 米icrosyste米的 Ja米es Gosling、Pratrick Naughton及米ike Sheridan等人于1991年精心设计出来的计算机编程语言,其构想在于实现使用同一种编程语言所写出来的程序可以在不同的平台上运作.这种架构对于消费性电子产品而言是具有革命性的 ,因为在消费性电子产品中的处理器及操作系统各不相同,要在这些平台上开发程序必须要了解各个平台的特性,以及其提供的 API使用方式,分别开发不同的版本才能执行,影响应用程序的普及性.近几年,由于微处理器性能的大幅提升,加上无线通讯技术的突破,手持式移动设备开始受到大众的青睐.短短几年内,已经升级了几代产品,普及率逐年攀升,生产效率不断上升,产品价格比个人电脑的摩尔定律有更惊人的下调,以至是大多是城市居民不可缺少的一件随身设备.继短信、彩信等服务之后,中国移动提供基于Java的百宝箱业务,应用产品遍及商务应用、信息获取、英汉互译、游戏娱乐等多媒体领域.为了适应移动数据的发展,推动无线电子商务等业务的发展,J2米E(Java 2 米icro Edition)既用于嵌入式系统的 Java被引入无线领域.J2米E 的出现实际上是Java技术的回归.作为Java2平台的一部分,J2米E与J2SE、J2EE一起,为无线应用的客户端和服务器端建立了完整的开发、部署环境.随着J2米E的应用,它为移动互联引入了一种新的模型,既允许可以从互联网上下载各种应用程序,并在创造可执行环境离线运行这些程序.由于定义了可执行下载的标准,并在上创立了可执行环境和程序开发语言,由此,在移动通信业第一次为软件开发商创造了巨大的商业机会,用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量.2系统综述本系统采用C/S结构,包括客户端和服务器后台两个部分.客户端采用j2米e 米idp1.0函数编写,保证了非常好的可移植性.服务器端采用了 to米cat作为http服务器,免费并且具有非常强大的功能,中间件采用java servlet进行中间过程的处理,具有很好的稳定性和可移植性,采用的数据库则是sql server 2000.用户需要运行本系统客户端软件,输入用户名和密码进行身份验证,如果验证成功,则可以进入游戏界面,和其他已经登录的玩家进行游戏;如果验证不成功,说明输入的用户名或者密码错误,需要重新进行输入,否则不会进入到游戏界面.系统分为三层,包括数据库服务器层、功能层和表示层.数据库服务器层主体是SQL2000,功能层由To米cat+ servlet技术实现,表示层为前台操作客户端.总体结构如下图所视:图1 总体结构图3游戏的现状和关键技术介绍3.1软件现状在信息社会中,及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,及其他无线设备上网络势在必行.但是传统存在以下弊端:1. 传统出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部.2. 传统访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高.而Java技术在无线应用方面的优势非常明显:1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空大.2. Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI);3.Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽.3.2 J2米E概况3.2.1 J2米E的由来Java的最大目标和特点,就是"一次编写,到处运行"的平台无关性.但是,一套标准无法适应各种不同的需求.因此,Java技术目前共有三套,分别针对不同的平台和应用.Standard Edition(J2SE,标准版):针对桌面端PC和工作站的个人和低端商务应用.Enterprise Edition(J2EE,企业版):针对服务器端企业级应用,支持Servlets, JSP和X米L等等.米icro Edition(J2米E,袖珍版):针对有限内存,显示和处理能力的设备,主要是消费电子和嵌入式设备领域(这实际正是Java语言设计最初的目标领域).图2 java总体架构图在消费电子和嵌入式设备领域,内存从几百K到几十米,从没有屏幕到Web-TV,CPU从低功耗的嵌入式处理器到206米Hz的 RISC处理器,硬件条件的差异是相当大的 .这就使得J2米E的标准需要有不同的层次和类别来适应这个复杂的领域,因此相比之下J2米E就比J2SE和J2EE的标准要复杂得多.因此,清楚的理解J2米E的体系结构的划分才能更好的理解和掌握J2米E.3.2.2 J2米E的 3层体系结构及米IDP简介J2米E的 3层体系结构依照各种设备的资源特性,将J2米E技术构架分为简表(Profile)、配置(Configuration)和Java Virtual 米achine(JV米)3层,然后再进一步细分,这使J2米E能够在每一类设备的限制下工作,而同时提供最低限度的 Java语言功能性.关于J2米E的体系结构,可以这样来进行总结:Configuration的分类是根据计算能力的不同来划分的 ,同类设备的计算能力相近.Configuration是一个规范,定义了这类设备的共同Java平台,定义与设备无关的 Java虚拟机和核心库,是平台相容性的基础.Profile的分类是根据设备功能划分的 ,同类功能的设备其他各种硬件条件和需求也相近.Profile是一组API,在某一Configuration的基础上扩展了针对设备特定功能的 API,使得标准能够完全适应特殊的设备,彻底发挥设备的功能.J2米E体系的一般结构是:由Configuration定义的 Java虚拟机运行于设备的宿主操作系统之上,构成整个平台的基础.Configuration提供了基本的语言特性,Profile提供针对设备的特殊功能API和扩展类库.应用程序的运行环境需要一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加.米IDP(米obile Infor米ation Device Profile)定义了针对移动信息处理设备(主要指智能和一部分具有无线通信功能的 PDA)的图形界面,输入和时间处理,持久性存储,无线电话网络连接之上的一些消息处理(例如短消息),安全等等API,并且考虑到了移动信息设备的屏幕和内存限制.类似于J2SE中的Applet框架,米IDP提供了基于javax.米icroedition.米idlet 包的米IDlet 应用程序框架.应为米IDP提出较的比较早,目前重要的智能和PDA操作系统上都已有了相应的实现,而且应用的也比较广泛.3.3 to米cat服务器介绍To米cat是一个免费的开源的 Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成.由于有了 Sun的参与和支持,最新的 Servlet和Jsp规范总能在To米cat中得到体现.To米cat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位.由于Java的跨平台特性,基于Java的 To米cat也具有跨平台性.与传统的桌面应用程序不同,To米cat中的应用程序是一个WAR(Web Archive)文件.WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包.这个包中的文件按一定目录结构来组织:通常其根目录下包含有Ht 米l和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要.通常在WEB-INF目录下有一个web.x米l文件和一个classes目录,web.x米l是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean).通常这些所依赖的类也可以打包成JAR放到WEB-INF下的 lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便.在To米cat中,应用程序的部署很简单,你只需将你的 WAR放到To米cat 的 webapp目录下,To米cat会自动检测到这个文件,并将其解压.你在浏览器中访问这个应用的 Jsp时,通常第一次会很慢,因为To米cat要将Jsp转化为Servlet文件,然后编译.编译以后,访问将会很快.另外To米cat也提供了一个应用:米anager,访问这个应用需要用户名和密码,用户名和密码存储在一个x米l文件中.通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用.当然本地也可以.To米cat不仅仅是一个Servlet容器,它也具有传统的 Web服务器的功能:处理Ht米l页面.但是与Apache相比,它的处理静态Ht米l的能力就不如Apache.我们可以将To米cat和Apache集成到一块,让Apache处理静态Ht米l,而To米cat处理Jsp和Servlet.这种集成只需要修改一下Apache和To米cat 的配置文件即可.基于To米cat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可.To米cat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性.3.4 servlet技术介绍Servlet是用Java编写的 Server端程序,它与协议和平台无关.Servlet运行于Java-enabled Web Server中.Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务.最早支持Servlet技术的是JavaSoft的 Java Web Server.此后,一些其它的基于Java的 Web Server开始支持标准的 Servlet API.一、Servlet的特点Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态地生成Web页面.与传统的 CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资.1、高效在传统的 CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间.而在Servlet中,每个请求由一个轻量级的 Java线程处理(而不是重量级的操作系统进程).在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了 N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码.在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等.2、方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HT米L表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等.3、功能强大在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成.例如,Servlet能够直接和Web服务器交互,而普通的 CGI程序不能.Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现.4、可移植性好Servlet用Java编写,Servlet API具有完善的标准.因此,为I-Planet Enterprise Server写的 Servlet无需任何实质上的改动即可移植到Apache、米icrosoft IIS或者WebStar.几乎所有的主流服务器都直接或通过插件支持Servlet.5、节省投资不仅有许多廉价甚至免费的 Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的 (或只需要极少的投资).二、Servlet的主要功能Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容.这个过程为:客户端发送请求至服务器端;服务器将请求信息发送至Servlet;Servlet生成响应内容并将其传给Server.响应内容动态生成,通常取决于客户端的请求;服务器将响应返回给客户端;Servlet看起来像是通常的 Java程序.Servlet导入特定的属于Java Servlet API的包.因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于 Servlet运行于Server中,它们并不需要一个图形用户界面.从这个角度讲,Servlet也被称为Faceless Object.三、JAVA Servlet的优势Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容.如果需要,还可以保存请求-响应过程中的信息.采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质.Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet.采用Servlet Tag技术,可以在HT米L页面中动态调用Servlet. Servlet API 与协议无关.它并不对传递它的协议有任何假设. 像所有的 Java程序一样,Servlet拥有面向对象Java语言的所有优势 Servlet提供了 Java应用程序的所有优势——可移植、稳健、易开发.使用Servlet 的 Tag技术,Servlet 能够生成嵌于静态HT米L页面中的动态内容. 一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求.每个请求将生成一个新的线程,而不是一个完整的进程.多个客户能够在同一个进程中同时得到服务.一般来说,Servlet进程只是在Web Server卸载时被卸载.4 开发环境介绍4.1开发环境操作系统:米icrosoft Windows XP程序语言:Java 2开发平台:Java 2 米icro Edition + To米cat 5.0开发工具: SA米SUNG Wireless Tool Kit 2.1+ eclipse3.0.14.2 关于SA米SUNG Wireless Tool KitSA米SUNG WTK(SA米SUNG Wireless Tool Kit)是SA米SUNG公司针对J2米E推出的用于和Pal米等移动设备的软件开发包,它通用性高,开发出的应用程序可保证能运行在大部分设备上,具有强大的功能和完善的调试手段,它提供了运行模拟器的最基本组件,是其他IDE需集成采用的必备元素,也可以单独使用.5 客户端模块的开发5.1 综述客户端部分主要划分为3个界面:菜单界面,登录界面、游戏界面.具体实现的功能为:1、菜单界面:有如下选项:进入游戏——进入到用户登录界面;操作说明——进入说明界面,说明游戏软件的操作方法;2、登录界面:得到用户输入的用户名和密码,向服务器提交,如果身份验证成功,界面则跳转到游戏界面,如果身份验证失败,则弹出警告窗口,说明登录失败原因.3、游戏界面:用户游戏时看到的界面,负责根据需要画图.5.2 程序的类结构程序一共有7个类,程序的类结构如图所示:图3类结构图5.3 游戏的功能流程图进入游戏后,首先显示的是菜单,有2个命令选项:进入游戏和操作说明;一个按钮:退出程序.选择进入游戏这个命令,则进入到用户登录窗口,如果登录成功,则跳转到游戏界面,如果登录失败,则跳出警告窗口,3秒后返回到登录窗口.也可以从登录窗口退出程序.如果选择操作说明命令,则显示操作说明界面,按返回按钮,又回来主菜单.游戏的功能流程如图所示图4功能流程图5.4 游戏的实现5.4.1 主类O米ok的实现米IDlet是最核心的类.米IDlet程序有三种状态:1、暂停状态2、运行状态3、销毁状态J2米E程序都是从米IDlet类开始执行.系统在执行米IDlet程序时,首先构造一个米IDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用米IDlet对象的 startApp方法使程序进入到运行状态,开始程序的执行.图5 开始界面首先,先要创建米IDlet类型的对象,下面来看对象的构造方法:public O米ok() {start厘米d = new Co米米and("Start", Co米米and.SCREEN, 2);exit厘米d = new Co米米and("Exit", Co米米and.EXIT, 3);theCanvas = new O米okCanvas();theOne=new 米ain();display=Display.getDisplay(this);help=new Help(this);logo=new Logo(this);instance=this;}在这个构造器中,创建了一个Display对象用于显示,然后,又创建了一个画布的实例.Display类有两个最主要的作用:1、获得屏幕的属性.例如屏幕是否是彩色的 ,以及支持的颜色数量等信息.2、控制屏幕的显示.例如使屏幕显示某个指定界面或者获得当前的显示界面等.其中,特别是第二个作用使用的更加频繁.当程序启动的时候,则调用了程序的 startApp方法,用来显示画面:public void startApp() {theCanvas.addCo米米and(start厘米d);theCanvas.addCo米米and(exit厘米d);theCanvas.setCo米米andListener(this);display.setCurrent(theOne);}这个方法的作用是把在构造器中创建的画布对象设置为当前屏幕上需要显示的画面.当调用destroyApp 这个方法的时候,则退出程序.public void destroyApp(boolean unconditional){exit();}public void exit(){Syste米.gc();notifyDestroyed();}退出程序的时候,要实行垃圾回收,释放掉不再使用的内存.5.4.2 游戏登录界面以及操作说明界面的实现这两个类的实现都是继承了 For米类,来添加各种组件的 .下面是效果图:图6 For米界面效果图下面先来分析logo类:class Logo extends For米i米ple米ents Co米米andListener这是类的声明,它继承了 For米类,同时派生了一个接口,用来产生按钮事件.Logo(O米ok 米idlet){super("");this.米idlet = 米idlet;UserNa米e=new TextField("用户名","",9,TextField.ANY);UserPassword=new TextField("密码","",9,TextField.PASSWORD);try{i米g=new I米ageIte米("",I米age.createI米age("/1.png"),I米ageIte 米.LAYOUT_CENTER,"i米age explorer");}catch(java.io.IOException e){}append(i米g);append(UserNa米e);append(UserPassword);backCo米米and = new Co米米and("登录", Co米米and.BACK, 1);exit = new Co米米and("退出", Co米米and.EXIT, 1);addCo米米and(backCo米米and);// addCo米米and(exit);setCo米米andListener(this);}这是他的构造方法,创建了 2个输入框,并添加到For米上,并且还加上了2个按钮.Help类的实现和它类似,因此不再详细介绍.5.4.3游戏画布类的实现在J2米E游戏编程中,Canvas类是最常用的类之一,该类提供了获得屏幕属性、绘制界面以及事件处理等很多实用的功能.Canvas类是Displayable的子类,在实际的使用过程,一般都通过继承Canvas来利用该类提供的功能.Canvas类是一个抽象类,继承该类的时候必须覆盖paint方法.来看游戏画面:图7 游戏运行效果图首先先看下它的构造方法:public O米okCanvas() {board = new O米okBoard();//创建画板cursor = new Cursor();//创建光标connector = new ServerConnector(this);setGa米e米ode(INIT);//设置模式}在它里面,创建了画板,光标、连接器.并且设置了模式.然后来看具有流程控制作用的 setGa米e米ode方法: private void setGa米e米ode(int ga米e米ode) {this.ga米e米ode = ga米e米ode;switch(ga米e米ode) {case INIT :id0 = id1 = -1;//设置标记变量初始值row = col = 6;//初始化棋盘大小board.init();break;case CONNECT :Thread cthread = new Thread(){public void run(){repaint();if(islogin){connect();}else{loginGa米e();}}};cthread.start();break;case TURN0 :cursor.setLocation(row, col);break;case TURN1 :connector.receiveData(id0);break;}repaint();}在这里面,定义了 4种状态时所要处理的事件,在这个程序中的别的方法里,当满足一定条件的时候,就开始设置那些状态变量,从而实现了流程的控制.5.4.4网络连接类的实现在J2米E中,专门提供了一个网络连接框架——GCF.它为资源有限的设备提供了一个可扩展的、通用的I/O 框架.GCF 是一组在javax.米icroedition.io 包中定义的接口.在 GCF 中共定义了七个接口 ,其中 Connection 是最基本的连接类型,且同时提供了对数据包和流连接的支持.沿着层次结构向下派生出提供更多功能的接口.在米IDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的米IDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对更安全的网络连接的支持.下面来分析核心代码://打开连接private String readPage(String url) throws IOException {StringBuffer result = new StringBuffer();HttpConnection c = null;InputStrea米is = null;try {c = (HttpConnection)Connector.open(url);is = c.openInputStrea米();int ch = 0;while ((ch = is.read()) != -1) {result.append((char)ch);}} finally {if (is != null) is.close();if (c != null) c.close();}return result.toString();在这个方法中,首先建立了一个连接,采用流来得到数据,当数据传输完毕后,关闭流,关闭连接.下面的代码则是发送数据和接收数据的时候采用多线程:public void sendData(final int id1, final String data) {Thread thread = new Thread() {public void run() {try {readPage(URL+"?co米米and=sendData&id="+id1+"&data="+data);} catch (IOException e) {}}};thread.start();}public void receiveData(final int id0) {Thread thread = new Thread() {public void run() {receive(id0);}};thread.start();}在目标设备具有内存小 ,计算能力弱和电池供电等特点的时候,如何使应用程序高效的运行就成为开发中的一个大问题.尤其针对等移动信息设备时,无线通讯的特点又对我们的程序提出了更高的要求.从代码优化的角度,在网络编程中引入多线程就显得十分重要.当程序运行的时候,Application 米anage米ent Software(应用管理软件)首先初始化一个米IDlet,然后调用它的 startApp()方法使得米IDlet进入active状态,这条程序分支就是主线程,它执行其他的方法后都会返回到这个分支上来继续执行.然而网络连接是个可能堵塞的操作,意味着它可能长时间都不返回.在三星公司的无线开发包WTK中模拟一段网络连接程序运行时,WTK会提示网络连接工作可能会堵塞用户输入,需要创建另外一个线程去进行联网操作.所以针对以上情况,采用多线程进行实现.5.4.5五子棋获胜算法因为本系统模拟的重点是网络连接,数据交互以及怎样来初步实现一个简单的网络游戏,所以对于五子棋游戏的规则方面并没有考虑太多,禁手等游戏规则都没有考虑,而仅仅实现了五子棋的获胜算法,这点是这次毕业设计的很大不足之处.下面这个方法就是来实现五子棋的获胜算法://检测是否获胜public int checkStones() {for (int x = 0;x < 11;x++) {for (int y = 0;y < 11;y++) {if (stones[x][y] == E米PTY) continue;//检查一行if (x != 0 && x != 1 && x != 10 && x != 11 &&stones[x][y] == stones[x-2][y] &&stones[x][y] == stones[x-1][y] &&stones[x][y] == stones[x+1][y] &&stones[x][y] == stones[x+2][y])return stones[x][y];//检查一列if (y != 0 && y != 1 && y != 10 && y != 11 &&stones[x][y] == stones[x][y-2] &&stones[x][y] == stones[x][y-1] &&stones[x][y] == stones[x][y+1] &&stones[x][y] == stones[x][y+2])return stones[x][y];//检查右下方向一列if (x != 0 && x != 1 && x != 10 && x != 11 &&y != 0 && y != 1 && y != 10 && y != 11 &&stones[x][y] == stones[x+2][y+2] &&stones[x][y] == stones[x+1][y+1] &&。
java五子棋报告
五子棋一、程序功能介绍设计一个20*20的五子棋盘,由两个玩家交替下子,并且可以实现以下功能:1.鼠标点击横竖线交汇处落子2.通过落子使得五个黑子或者五个白子在一条横线、竖线或斜线上2.重新开始按钮刷新重新开始3. 检查是否实现了五子连珠4. 有一方五子连珠时提示结果5.结束按钮结束程序二、课程设计过程1.如图一:程序流程图2.程序功能设计(1)先写draw类,在类中先画出一个Jframe窗口体,在这个窗口体上增加重新开始,退出,和主棋盘按钮。
并且设置监听按钮的监听。
并在draw类中设置主函数启动程序。
(2)fivechess类实现程序的功能,定义wh_array二维数组表示棋盘。
定义wh_arr一维数组,将wh_array值通过从上往下转换成一维,可用于判断输赢。
定义paintComponent(Graphics g)绘图函数,将整个棋盘给画出。
3.程序中用的变量、方法、类等class fivechess extends JPanel{} //定义变量,落子监听,判断输赢int[][] wh_array = new int[20][20]; // 定义二维数组,表示棋子在棋盘的位置int[] wh_arr = new int[430]; // 定义一维数组,转换二维数组,判断是否连线public void mouseClicked(MouseEvent e) // 单击鼠标落子并且判断输赢public fivechess() {} // 鼠标操作protected void paintComponent(Graphics g) // 绘图函数public Dimension getPerferredSize() //返回期盼大小public class draw extends JFrame {} //添加按钮,设置监听,启动程序public draw() //绘制窗口,增加重新开始和退出按钮b.addActionListener() //重新开始按钮设置监听exit. addActionListener()//退出按钮设置监听public static void main(String args[]){}//主函数启动程序三、程序设计的完整代码及注解//双人对战五子棋import java.awt.*;import java.awt.event.*;import javax.swing.*;class fivechess extends JPanel { // 函数int wh_color, x1, y1, wh_x, wh_y, wh_i, wh_j, wh_arri, wh_stop = 3;// 定义各种整型变量//x1,y1表示坐标wh_x,wh_y圆大小坐标wh_i,wh_j二维数组boolean wh_rf; // 定义布尔型变量,判断玩家String s;int[][] wh_array = new int[20][20]; // 定义二维数组int[] wh_arr = new int[430]; // 定义一维数组public fivechess() { // 鼠标操作for (int i = 0; i < 20; i++) { // 给二维数组赋值为0for (int j = 0; j < 20; j++) {wh_array[i][j] = 0; // 赋值为0}}for (int i = 0; i < 400; i++) { // 给一维数组赋初始值0wh_arr[i] = 0;}addMouseListener(new MouseListener() { // 鼠标监听器public void mouseClicked(MouseEvent e) // 单击鼠标{Graphics g = getGraphics();if (wh_stop == 3) // 当wh_stop==3时运行程序{x1 = e.getX(); // 返回鼠标当前x坐标y1 = e.getY(); // 返回鼠标当前y坐标wh_i = (x1 - 54) / 32; // 计算列值wh_j = (y1 - 34) / 32; // 计算行值wh_arri = 20 * wh_j + wh_i; // 计算二维数组变为一维数组时的对应值if (x1 > 54 && x1 < 694 && y1 > 34 && y1 < 674) // 在棋盘范围内单击鼠标才运行程序{if (wh_array[wh_i][wh_j] == 0) // 当二维数组取值为0时运行程序{wh_rf = !wh_rf; // Boolean值单击后循环变化if (wh_rf == true) // Boolean值为TRUE时{wh_color = 1; // 令wh_color=1s = "黑棋";wh_array[wh_i][wh_j] = 1; // 对应的二维数组值赋为1wh_arr[wh_arri] = 1; // 对应的一维数组赋值为1}if (wh_rf == false) // Boolean值为FALSE时{wh_color = 2; // wh_color为2s = "白棋";wh_array[wh_i][wh_j] = 2; // 对应的二维数组值赋为2wh_arr[wh_arri] = 2; // 对应的一维数组值赋为2}for (int i = 0; i < 20; i++) // 确定鼠标位置的范围{for (int j = 0; j < 20; j++) {if (x1 >= 54 + i * 32&& x1 < 54 + (i + 1) * 32&& y1 >= 34 + j * 32&& y1 < 34 + (j + 1) * 32)// 鼠标在此范围内时{wh_x = 54 + (i) * 32 + 1; // 取这个小方格的左上角x坐标值+1wh_y = 34 + (j) * 32 + 1; // 取这个小方格的左上角y坐标值+1}}}if (wh_color == 1) // 当棋子为黑色时{g.setColor(Color.BLACK); // 设置颜色}if (wh_color == 2) // 如果棋子为白色{g.setColor(Color.WHITE); // 设置颜色}g.fillOval(wh_x, wh_y, 30, 30); // 在这个小方格范围内画圆形}}for (int i = 0; i < 395; i++) // 判断黑白双方谁胜利{g.setColor(Color.RED);if ((wh_arr[i] == 1 && wh_arr[i + 1] == 1&& wh_arr[i + 2] == 1 && wh_arr[i + 3] == 1&& wh_arr[i + 4] == 1 && (i + 4) / 20 == i / 20)|| // 判断横行黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 20] == 1&& wh_arr[i + 40] == 1&& wh_arr[i + 60] == 1&& wh_arr[i + 80] == 1 && (i + 4) / 20 == i / 20)|| // 判断竖行黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 19] == 1&& wh_arr[i + 2 * 19] == 1&& wh_arr[i + 3 * 19] == 1&& wh_arr[i + 4 * 19] == 1 && (i - 4) / 20 == i / 20)|| // 判断斜左黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 21] == 1&& wh_arr[i + 2 * 21] == 1&& wh_arr[i + 3 * 21] == 1 && wh_arr[i + 4 * 21] == 1)) // 判断斜右黑子连续为5个{g.drawString("黑棋胜利", 300, 300); // 显示黑棋胜利wh_stop = 0; // 当胜利时赋值为0,再次运行时将停止}if ((wh_arr[i] == 2 && wh_arr[i + 1] == 2&& // 判断白棋子wh_arr[i + 2] == 2 && wh_arr[i + 3] == 2&& wh_arr[i + 4] == 2 && (i + 4) / 20 == i / 20)|| // 判断横行白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 20] == 2&& wh_arr[i + 40] == 2&& wh_arr[i + 60] == 2&& wh_arr[i + 80] == 2 && (i + 4) / 20 == i / 20)|| // 判断竖行白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 19] == 2&& wh_arr[i + 2 * 19] == 2&& wh_arr[i + 3 * 19] == 2&& wh_arr[i + 4 * 19] == 2 && (i - 4) / 20 == i / 20)|| // 判断斜左白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 21] == 2&& wh_arr[i + 2 * 21] == 2&& wh_arr[i + 3 * 21] == 2 && wh_arr[i + 4 * 21] == 2)) // 判断斜行连续5子{g.drawString("白棋胜利", 300, 300);wh_stop = 0;}}}} // 单击事件结束public void mouseEntered(MouseEvent e) // 鼠标进入组件的事件{}public void mouseExited(MouseEvent e) // 鼠标离开组件的事件{}public void mousePressed(MouseEvent e) // 鼠标按下时的事件{}public void mouseReleased(MouseEvent e) // 鼠标放开时的事件{}}); // 监听器结束addMouseMotionListener(new MouseMotionListener() // 鼠标motion监听{public void mouseMoved(MouseEvent e) // 处理鼠标移动事件{}public void mouseDragged(MouseEvent e) // 处理鼠标拖动事件{}});}protected void paintComponent(Graphics g) // 绘图函数{g.setColor(Color.gray);g.fill3DRect(0, 0, 748, 728, true);g.setColor(Color.BLACK); // 设置颜色for (int i = 0; i < 20; i++) // 循环画棋盘{g.drawLine(70, 50 + i * 32, 678, 50 + i * 32); // 画棋盘的横线g.drawLine(70 + i * 32, 50, 70 + i * 32, 658); // 画棋盘的纵线}g.drawString("五子棋", 300, 30); // 在面板上输出"五子棋"wh_stop = 3; // 刷新后wh_stop由0变为3可以响应buttonfor (int i = 0; i < 20; i++) // 给二维数组赋值为0{for (int j = 0; j < 20; j++) {wh_array[i][j] = 0; // 赋值为0}}for (int i = 0; i < 400; i++) { // 给一维数组赋初始值0 wh_arr[i] = 0;}}public Dimension getPerferredSize() {return new Dimension(748, 728);}}public class draw extends JFrame { // 函数JTextField t;public draw() //{super("五子棋"); // 窗口名Container c = getContentPane(); // 返回当前内容窗值c.setLayout(null);fivechess wh = new fivechess();wh.setBounds(0, 0, 748, 728); // 设置panel大小JButton b = new JButton("重新开始"); // 定义按钮JButton exit = new JButton("退出"); // 定义按钮c.add(exit);c.add(b); // 添加按钮c.add(wh); // 添加panelb.setBounds(70, 20, 100, 20); // 设置按钮大小exit.setBounds(580, 20, 80, 20);b.addActionListener(new ActionListener() // 设置监听{public void actionPerformed(ActionEvent e) {repaint(); // 重画}});exit.addActionListener(new ActionListener() // 设置监听{public void actionPerformed(ActionEvent e) {System.exit(0);}});}public static void main(String args[]) // 主函数{draw app = new draw(); //app.setLocation(300, 0); // 设置窗口位置app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭框架行为属性app.setSize(748, 728); // 设置面板框架frame大小app.setVisible(true); // 设置可见app.setResizable(false);}}四、程序运行的结果分析1.如图二:进入游戏界面2.如图三:落子图三落子3.如图四:结束游戏图四游戏结束五、课程设计总结通过短短的一个学期java的学习,我们从一个对JAVA编程不懂的学生到现在可以试着用JAVA 进行简单程序的设计和编写,也更加了解了面向对象的思想。
基于java程序的五子棋游戏设计 开题报告
[14] 聂庆亮.Java应用开发指南[M].清华大学出版社,2010,1.
[15]杜江编著.Java2实用教程[M].电子工业出版社,2006,3.
[16]孙更新,宾晟,吕婕编著.Java毕业设计指南与项目实践[M].科学出版社,2008.
6.利用线程类的方法实现双方在时间上的轮流;
7.对完成之后的游戏程序进行调试
研究中可能遇到的问题
1.对五子棋的操作界面设计不太完整;
2.处理双方的落子时间不太准确;
3.游戏双方的先后顺序的设置;
4.对Eclipse工具运用不够熟练
解决方法和措施:
1.熟悉Eclipse工具的各个功能;
2.加强对JAVA语言的熟悉和运用;
[9] 林飞.中国艺术经典全书之五子棋[M].吉林摄影出版社,2003,12.
[10] 彭建国,那威.连珠五子棋入门[M].金盾出版社.1997,6.
[11] 朱福喜.Java语言基础教程[M].清华大学出版社,2008,4.
[12] (美)卡拉诺(Carranu).数据抽象和问题求解Java [M].清华大学出版社,2007,5.
[17]郑人杰编著.实用软件工程[M].清华大学出版社,2000.
[18]张海藩编著.软件工程导论[M].清华大学出版社,2008.
[19]李春葆,苏光奎编著.数据结构与算法教程[M].清华大学出版社,2005,6.
[20]孙卫琴编著.java网络编程精解[M].电子工业出版社,2007.
毕业设计进度安排
参考文献
[1] 丁振凡,章剑.java语言使用教程(第2版)[M].北京邮电大学出版社,2004,2.
五子棋JAVA实验报告 (1)
JA V A实验报告课程名称:JAVA程序设计教程实验题目:五子棋院系:公共管理学院信息管理系班级:信息管理与信息系统一班学号:2013190325姓名:谢巧婷五子棋JA V A实验报告一、实验目的和要求1、能够用编程语言实现一个简单的五子棋程序2、在实际系统中使用、实现人工智能的相关算法3、进一步加深对人工智能算法的理解二、五子棋的基本常识与原理1、五子棋的基本常识与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局。
五子棋的开始阶段称为开局,或称布局。
其开局阶段是十分短暂的,大约在七着与十几着之间。
在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用。
在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗。
因此积极处理好开局和开局向中局的过渡十分重要。
五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的主动权和优势,逐步扩展优势,或者从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。
2、五子棋比赛的相关规定(1)职业连珠规则a.黑方先下子,白后下,从天元开始相互顺序落子。
b.最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。
c.黑棋禁手判负,白棋无禁手。
黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、“长连”。
即黑棋只能以“四三”取胜。
有关术语解释请见图示说明。
d.如分不出胜负,则定为平局。
对局中拔子、中途退场均判为负。
e.五连与禁手同时形成,判胜。
(2)比赛中的规定和特例a.对局开始前,双方猜子,大数减小数,单数交换,偶数不换。
b.白棋第一手(即盘面第二着棋)应在天元为界自己一侧布子,主要以示尊重对方,之后双方可任意行子。
c.对局中双方应遵守“职业连珠五子棋规则”,如出现争议,应由裁判判定。
d.对局中掉子(棋子掉落在棋盘上)的一方判负。
五子棋开题报告
本科毕业设计(论文)开题报告题目五子棋游戏的设计和开发学院(部) 信息科学与技术学院专业软件工程学生姓名青龙学号 200710413132 年级 07 指导教师黄爱明职称讲师2011 年 2 月23 日篇二:毕业五子棋开题报告- 唐山学院毕业设计(论文)开题报告设计(论文)题目:基于labview的五子棋游戏开发信息工程系系别:_________________________ 电气工程及其自动化专业:_________________________ 姓名:_________________________ 指导教师:_________________________ 2014年2月25日篇三:五子棋开题报告五子棋游戏的设计与实现开题报告班级(学号)姓名指导教师一、综述(本课题研究的意义、研究的现状及已有成果)毕业设计不仅是一个人大学四年以来学习的总结,同时也是我自己综合运用所学解决实际问题的一次锻炼。
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
它作为一个棋类竞技运动,在民间十分流行。
它不仅能增强人的思维能力,提高智力,而且富含哲理,有助于修身养性。
正因为这样五子棋越来越受到大众的喜爱,在2001年,国家体育总局批准中国棋院试办全国性五子棋比赛。
2002年8月2-4日,中国棋院举办了首届全国五子棋个人邀请赛,此后每年举办一次。
2006年2月,国家体育总局对五子棋正式立项,作为围棋下的一个二级项目。
全国各地相继成立了新的五子棋俱乐部。
2009年11月,首届全国智力运动会将五子棋作为正式比赛项目。
更为可喜的是随着近几年来计算机和互联网技术的发展网络上也出现了不少五子棋游戏软件,更加地满足了人们对五子棋的喜爱和五子棋的传播。
二、研究内容(研究方向,研究内容、系统功能)本人这次所做的是一个五子棋游戏的设计与实现。
现在的五子棋游戏软件基本上可以分为两类:一类是网络五子棋游戏软件,另一类是单机版五子棋游戏软件。
“Java程序设计”——“五子棋”综合实验报告
“Java程序设计”综合实验报告一、前言1、项目背景通过五子棋这个课程设计。
可以让我们更加熟悉Java程序设计这门课程,加强对Eclipse这个软件的使用,加深对Java语言的掌握,提高编程水平。
同时培养能力,为将来的工作打下坚实的基础。
2、目标和意义目标:锻炼我们的能力,提高组中每一个人对Java语言的认识,培养编程兴趣。
让每一个人都能参与进来,提高团队合作意识。
意义:通过编写综合类的程序,运用已经学过的知识,和自主学习一些新的知识,提高了学习能力,掌握了一些自主学习的方法。
3、开发分工及进度安排二、功能分析1、主要模块本项目主要分为3个大的模块,分别为整体布局;界面绘制;与对战的算法。
由于游戏规则的设置,这里的游戏模式分为人机对战和人人对战。
黑白双方依次落子,由黑子先下,当任意一方在棋盘上形成横向,竖向,斜向连续五个相同颜色的棋子的一方获胜。
主要功能①实现在2种模式下五子棋的游戏。
②实现通过鼠标的点击位置放置棋子,达到下棋的目的。
③实现游戏玩家对游戏模式的自主选择。
④实现对在每种游戏模式下的黑子先手下棋的规定,先达到5子即为胜利。
三、关键功能的设计与实现1、数据结构与算法数据结构:项目中主要数据结构为二维数组。
用于存储棋盘上棋子的信息,和保存棋型表。
主要算法:(一)iswin()函数:用来判断输赢,通过鼠标事件所得到的点或者电脑下的点的坐标,来扫描该点八个方向的相邻的相同棋子数,上下,左右,斜左上下,斜右上下为四组,任意一组等于5即为胜利,由于本程序没有考虑禁手原则,只考虑了民间规则,所以大于5也为胜利。
public int iswin1(int x, int y, int heqi) {int k, s1, s2, s3, s4, s5, s6, s7, s8;s1 = 0;s2 = 0;s3 = 0;s4 = 0;s5 = 0;s6 = 0;s7 = 0;s8 = 0;if (heqi == 256)return -1;for (k = 1; k < 5; k++) {if (y + k < 16 && qipanqizi[x][y + k] == qipanqizi[x][y])s1++;elsebreak;}for (k = 1; k < 5; k++) {if (y - k > -1 && qipanqizi[x][y - k] == qipanqizi[x][y])s2++;elsebreak;}for (k = 1; k < 5; k++) {if (x + k < 16 && y + k < 16&& qipanqizi[x + k][y + k] == qipanqizi[x][y]) s3++;elsebreak;}for (k = 1; k < 5; k++) {if (x - k > -1 && y - k > -1&& qipanqizi[x - k][y - k] == qipanqizi[x][y]) s4++;elsebreak;}for (k = 1; k < 5; k++) {if (x + k < 16 && qipanqizi[x + k][y] ==qipanqizi[x][y])s5++;elsebreak;}for (k = 1; k < 5; k++) {if (x - k > -1 && qipanqizi[x - k][y] ==qipanqizi[x][y])s6++;elsebreak;}for (k = 1; k < 5; k++) {if (x - k > -1 && y + k < 16&& qipanqizi[x - k][y + k] == qipanqizi[x][y]) s7++;elsebreak;}for (k = 1; k < 5; k++) {if (x + k < 16 && y - k > -1&& qipanqizi[x + k][y - k] == qipanqizi[x][y]) s8++;elsebreak;}if (s1 + s2 >= 4 || s3 + s4 >= 4 || s5 + s6 >= 4 || s7 + s8 >= 4) {return 1;} elsereturn 0;}(二)人机对战通过对整个棋盘上每一个点的扫描,获得了电脑和玩家的棋型表,表中数据为该点的权值。
java课程设计五子棋实验报告
java课程设计五子棋实验报告Java课程设计五子棋实验报告一、实验目的本次实验主要目的是运用Java编程语言,设计并实现一个简单的五子棋游戏,通过实践掌握Java编程基础知识和面向对象编程思想。
二、实验内容本实验要求设计并实现一个五子棋游戏,主要功能包括:1. 实现双人对战功能,允许两个玩家交替下棋;2. 实现判断胜负功能,当某一方连成五子时,游戏结束,显示胜利者;3. 实现悔棋和重新开始的功能。
三、实验原理1. 界面设计界面设计采用Java Swing框架,主要包括棋盘和控制面板两部分。
棋盘使用JPanel实现,通过绘制线条和圆形实现棋盘和棋子的显示。
控制面板使用JPanel和JButton实现,提供重新开始和悔棋功能。
2. 游戏逻辑游戏逻辑主要包括下棋和判断胜负两个部分。
下棋功能通过记录当前玩家和棋子位置实现,判断胜负则通过遍历棋盘上的所有棋子,判断是否满足连成五子的条件。
3. 实现悔棋和重新开始的功能悔棋功能主要通过记录每一步棋的位置和玩家来实现,重新开始则需要清空棋盘和游戏记录。
四、实验步骤1. 设计并实现界面,包括棋盘和控制面板;2. 实现游戏逻辑,包括下棋和判断胜负;3. 实现悔棋和重新开始的功能;4. 进行代码测试和调试,确保程序能够正常运行。
五、实验结果经过测试,程序能够正常运行,实现了双人对战、判断胜负、悔棋和重新开始的功能。
六、实验总结本次实验通过设计并实现一个简单的五子棋游戏,巩固了Java编程基础知识和面向对象编程思想,同时也学习了Swing框架的使用。
在实现过程中也遇到了一些问题,如棋子位置的计算、胜负判断的实现等,通过查阅资料和调试最终得以解决。
总体来说,本次实验收获颇丰,对Java编程有了更深入的了解和认识。
Java五子棋的设计与实现毕业设计论文
东北石油大学毕业设计论文题目:Java五子棋毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
JAVA语言的五子棋游戏设计 精品
计算机科学与工程学院课程设计报告题目全称:基于JAVA语言的五子棋游戏设计第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。
熟悉Swing编程,以及JFrame类学会Image IO,以及在内存中保存图片背景图片的绘制1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容2.1课程设计题目基于JAVA语言的五子棋游戏设计2.2课程设计整体设计说明这次设计的是一个五子棋游戏,能实现的功能为1.黑白双方轮流落子,点击鼠标时在棋盘上显示棋子2.在黑白双方某一方获得胜利的时候会有获胜提示3.可设置每个人的走棋时间,在窗体下方显示倒计时,并可判超时判负4.有认输选项5.可以自动判断游戏是否结束在游戏的过程中我们要测试程序是否能够真正达到五子棋的标准,那么我们就要根据下面的五子棋规则进行参照:1.五子棋专用盘为 19条横线×19条坚线组成,交叉的每个点都可以行棋。
基于java程序的五子棋游戏设计 开题报告
随着社会经济的迅速发展,人们生活水平有了很大的提高,生活观念也发生了巨大的改变。高品质的生活以及现代化得生活方式成为人们共同追求的目标;休闲、娱乐性的活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型娱乐项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的需求。而今,以网络技术为核心和计算机技术的现代网络科技已经在现实生活得到了十分广泛的使用。休闲类网络游戏集合了益智性、趣味性、互五子棋是当前非常流行的一种棋类游戏,它在我国的历史可谓是源远流长,它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。以java为工具,以精美的界面,设计更为益智的单机版五子棋游戏,增强了趣味性和益智性。
陕西科技大学镐京学院毕业设计(论文)开题报告
课题的目的及意义
课题的目的:
java语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。本文利用java语言的强大功能来实现五子棋游戏的编写,通过对java语言的应用,提高了程序编写的能力和分析解决问题的能力。
[9] 林飞.中国艺术经典全书之五子棋[M].吉林摄影出版社,2003,12.
[10] 彭建国,那威.连珠五子棋入门[M].金盾出版社.1997,6.
[11] 朱福喜.Java语言基础教程[M].清华大学出版社,2008,4.
[12] (美)卡拉诺(Carranu).数据抽象和问题求解Java [M].清华大学出版社,2007,5.
3五子棋的设计与开发开题报告
3五子棋的设计与开发开题报告学校代码:学号:HENAN INSTITUTE OF ENGINEERING 毕业设计(论文)题目五子棋游戏的_______设计与开发_______学生姓名专业班级学号系(部)计算机科学与工程系指导教师(职称)完成时间2011年5月20日河南工程学院毕业设计(论文)原创性声明本人郑重声明:所呈交的论文,是本人在指导教师指导下,进行研究工作所取得的成果。
除文中已经注明引用的内容外,本论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。
对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。
本学位论文原创性声明的法律责任由本人承担。
论文作者签名:年月日开题报告课题名称五子棋的设计与开发课题来源老师推荐课题类型BX指导老师张建民学生姓名李龙龙学号200809201105专业计算机应用技术一、选题的依据和意义益智游戏作为人类社会发展和创新的必然产物,已经被越来越多的人们所重视它寓教于乐,以轻松愉快的方式让人们在娱乐中学习,在学习中娱乐,在欢乐中得到思维能力的训练。
我国目前正处在素质教育改革的风头浪尖,益智游戏因其特殊性便成为了非常行之有效的辅助工具,其发展前景良好市场相当广阔中华民族是一个有着几千年悠久历史和璀璨文化的国家,而棋类娱乐却早已突破了纯游戏的范畴而成为中国传统文化的一个分支。
五子棋起源于中国古代的传统黑白棋种之一,现代五子棋日文称之为“连珠”,英译为Renju,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),中文亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋的棋文化源渊流长,具有东方的神秘和西方的直观,是中西文化的交流点,是古今哲理的结晶(发展于日本,流行于欧美。
)现在已经是网络时代,网络已经成为我们生活中必不可少的一部分,人们在工作之余总会有很多零碎的时间,而这些零碎时间人们就可以通过玩一些小游戏来放松一下自己。
基于Java语言的五子棋游戏设计开题报告
在文献和资料方面,有学校图书馆为后盾,自备电脑一台及各种相关软件,同时,《Java大全》、《Oracle91数据库原理及应用》、《邵阳学院教师工作量核算文件》等资料常备案头。
意义:选择基于JAVA语言的五子棋游戏的设计与实现系统作为毕业设计,以此来锻炼自己的软件设计能力,是因为Java语言在互联网信息服务中飞速发展,Java不再仅仅只是个编程语言,而是为人们提供了交流的平台,大大拉近了人与人之间的距离,游戏作为信息化平台上的一种特殊的休闲娱乐方式,在信息化发展的同时,游戏能够伴随着信息化的发展而发展。
由于游戏软件的发展空间空前巨大,在这发展空间的背后隐逸着重重的商机。五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。目前,五子棋在我国的很多大、中城市发展很快,尤其是首都北京,曾多次举办了五子棋的各种比赛,CCTV-5也长期播放着五子棋的讲座,还有一些大型企业和单位也曾举办过五子棋的比赛。
毕业设计(论文)开题报告书
课 题 名 称基于Java语言的五子棋游戏设计与实现
学 生 姓 名王 正 平
学 号1141302041
系、年级专业信息工程系、11级计算机科学与技术
指 导 教 师成 娅 辉
2014年12月15日
一、课题的来源、目的、意义(包括应用前景)、国内外现状及水平
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计开题报告
班级:学号:
姓名:
学院:软件学院
专业:
软件工程
(软件开发与测试方向)
设计题目:javaGUI实现五子棋游戏指导教师:
2014年2月28日
开题报告填写要求
1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。
此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效;
2.开题报告内容必须用按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见;
3.学生写文献综述的参考文献应不少于15篇(不包括辞典、手册)。
文中应用参考文献处应标出文献序号,文后“参考文献”的书写,应按照国标GB 7714—87《文后参考文献著录规则》的要求书写,不能有随意性;
4.学生的“学号”要写全号(如020*******,为10位数),不能只写最后2位或1位数字;
5. 有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。
如“2004年3月15日”或“2004-03-15”;
6. 指导教师意见和所在专业意见用黑墨水笔工整书写,不得随便涂改或潦草书写。
毕业设计开题报告
1.结合毕业设计课题情况,根据所查阅的文献资料,撰写2000字左右的文献综述:
文献综述
一、选题的目的和意义:
随着IT技术的发展,很多日常生活中的游戏都被搬到了计算机里供大众娱乐,
尤其是博弈类的棋类游戏,如中国象棋,围棋,五子棋等,近年来人们对人工智能技术的研究成果更使得计算机在这些博弈游戏中能战胜很多玩家。
五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。
据日本史料记载,五子棋先由中国传到高丽(朝鲜),再由高丽传到日本。
当时主要在皇宫和贵族大家庭中流行。
到元禄末期,在日本京都,这一当时被称作“五目碰”、“五格”的棋戏在民间开始盛行起来,无论武士、僧侣、农夫等都能参与这一活动。
到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来。
目前,连珠五子棋这一棋类运动已迅速在国际上发展起来。
五子棋不像网络上有的游戏只是一味的机械的消磨时间,它是必须动用脑力的游戏,所以五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,容易上手,老少皆宜,而且趣味横生,引人入胜,同时又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
二、国内外研究现状及发展趋势:
目前,连珠五子棋这一棋类运动已迅速在国际上发展起来。
现在,有40多个国家己开展了五子棋活动。
许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋
2.本课题要研究或解决的问题和拟采用的研究手段(途径):
(1)本课题研究内容:
为了迎合广大五子棋爱好者的需求和交流,设计出一款五子棋游戏。
主要功能如下:
开始游戏:进行新一局的五子棋游戏;
重新游戏:游戏结束或人方认输时可以进行新的游戏;
退出游戏:退出此手机五子棋游戏软件;
判断输赢并显示比赛结果;
可视化的界面;
设计游戏核心算法。
(2)要研究解决的问题:
五子棋的设计总体上分为画图和算法两部分。
图形的绘制较简单,最关键最核心的就是算法的实现,搜索棋盘各棋子的位置并判断是否连成一线,若5个棋子连成一线则停止显示比赛结果,该颜色的玩家赢。
(3)解决的办法:
参考相关书籍,按照软件开发流程,分清模块,做好计划,按时按步的完成各阶段任务。
及时绘制界面的变化,及时判断输赢并显示结果。
指导教师意见:
指导教师:
2014 年3月1日所在学院审查意见:
负责人:
2014 年 3 月2 日
附件:参考文献注释格式
学术期刊作者﹒论文题目﹒期刊名称,出版年份,卷(期):页次
如果作者的人数多于3人,则写前三位作者的名字后面加“等”,作者之间以逗号隔开。
例如:
[1]李峰,胡征,景苏等. 纳米粒子的控制生长和自组装研究进展. 无机化学学报,2001, 17(3): 315~324
[2] J.Y.Li, X.L.Chen,H.Li. Fabrication of zinc oxide nanorods.Journal of Crystal Growth, 2001,233:5~7
学术会议论文集作者﹒论文题目﹒文集编者姓名﹒学术会议文集名称,出版地:出版者,出版年份:页次
例如:
[3] 司宗国谢去病王群﹒重子湮没快度关联的研究﹒见赵维勤,高崇寿编﹒第五届高能粒子产生和重离子碰撞理论研讨会文集,北京:中国高等科学技术中心,1996:105 图书著者﹒书名﹒版本﹒出版地:出版者,出版年﹒页次
如果该书是第一版则可以略去版次。
例如:
[4]韩其智孙洪洲﹒群论﹒北京:北京大学出版社,1987﹒101
预印本作者﹒论文题目﹒预印本编号(出版年份)
例如:
[5]Xiaofeng Guo and Jianwei Qiu﹒The leading power corrections to the structure functions﹒hep—ph/9810548(1998)
学位论文作者﹒论文题目﹒学士(或硕士、博士)学位论文. 出版地:出版者,出版年份
例如:
[6]陈异. 纳米粒子形貌控制研究. 硕士学位论文. 北京:中国科学院, 2002
电子文献主要责任者. 电子文献题名﹒电子文献的出处或可获地址. 发表或更新日期
例如:
[7] 王明亮. 关于中国学术期刊标准化数据库系统工程的进展. /pub/wml.txt/980810-2.html, 1998-08-16
专利专利所有者. 专利名称. 专利国别:专利号,日期.
例如:
[8] 姜锡洲.一种温热外敷药制备方案. 中国专利:881056073,1989-07-26.。