JAVA围棋程序设计实训报告
- 格式:pdf
- 大小:306.37 KB
- 文档页数:9
围棋程序设计综合报告作者:赵翔学号:201103010002专业:机械工程及其自动化一、围棋软件设计思想首先,我将软件的功能细化,细化到单个功能,直到可以通过一个函数较轻松地实现为止。
然后,从函数功能构想函数结构,通过函数调用将不同功能组合起来,从而完成软件要求的功能。
二、程序设计方案下面我由main的调用顺序,来阐述各个函数的详细信息。
Link:用于构造链表,输入值为上一个结点,返回新建的结点。
输入为空,则返回链表头;Begin:将链表头赋值,即构建棋盘;Print:打印输入的棋局,可在链表记录的位置输出两个小翅,利用了转义字符;Cheese:其实是chess,就是下棋,输入空的棋局,步数统计、黑白子统计地址,和用户输入的落子位置,可将棋盘下好,并将参数传给make_scene,返回后,将统计值完成;Make_scene:完成棋局,判断下子位置的上下左右是否有对方的子,若有,进入search,返回后,将去掉的子数减去,将删除序列中子删去;Search:对输入的子上下左右进行搜索,若均非空,计入删除序列,对上下左右与本子相同的子,判断是否已搜过,若否,递归输入本函数,返回总子数,并通过地址返回删除序列;Save:用fwrite将结构体中保存的棋局和两个整形数写入文件;Lord:其实是load,读取之前保存的文件到新建的链表,之前先将目前的链表全部释放,然后将独到的链表至于最后一步,顺便统计步数统计、黑白子统计,以便用户继续下棋,或者复盘也可以;Help:对软件的部分行为进行解释,帮助用户更好的使用;Rescene:从头查看每一步棋局,利用结构体双向指针操作,可以很方便的实现该功能;除了以上函数,菜单中还有悔棋、结束、退出操作,由于过于简单,没有专门构造函数,退出直接引用系统函数,结束加到了循环条件里,对结果的判断直接用了下棋中对子数的统计,悔棋操作就是将链表回到之前一步,释放现在的空间。
三、结果分析与体会通过做函数,我充分认识到程序规范性的重要性。
Java程序设计实训总结[优秀范文五篇]第一篇:Java程序设计实训总结Java项目开发实训总结设计人:张**班级和班内序号:软件项目选题意义:选这个题目的原因:目前,随着国外的网上书店的盛行,在国内也出现了一些网上书店,如当当网、卓越网、以及china-pub等等。
互联网为这些网上书店的发展提供了无限的空间,这些网上的虚拟书店同实体书店一样可以容纳无限的图书或图样以及内容。
“这些网上书店的实现使用了当今世界最先进的计算机技术和网络技术,迅速的成为国内知名图书网站”。
作为计算机专业的学生,对于完成电子商务的计算机技术更需要切实掌握,以便在社会上更好的使用自己的所学技能,因此研究有关电子商务的计算机技术成为了极为有意义的课题。
项目名称:网上书店自我评价:优秀所开发系统的使用价值和应用领域:可以使用户方便的购买图书,为用户节省更多的时间。
应用领域是向广大群众开放,不过需用户注册后才能购买,还需用户会基本的电脑操作。
项目设计情况:项目的设计使用工具有NetBeans IDE 7.3和SQL Server Management StudioR2,技术有JSP技术,包括struts和Hibernate。
删除图书信息等功能。
项目设计中主要完成哪些任务?项目的设计已完成预期目标!项目的优势和缺陷:优势:本项目采用J2EE中的struts和Hibernate技术,J2EE代表的是一种前沿技术,它使得复杂的多层结构应用系统开发变得容易。
J2EE 建立在己取得极大成功的Java语言之上,采用J2EE规范能有效地进行软件复用,提高开发人员的效率,降低软件的开发和维护成本,提高软件的质量,控制所构建系统的复杂性。
J2EE规范将使得Java在企业计算中的地位得到加强,为基于Java 的应用系统提供了一个框架,和目前的许多系统和模型相比,J2EE具有许多优越性。
种种迹象表明,J2EE有可能成为多层结构分布式应用系统的服务器端构件模型的首要选择。
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)) 进入游戏界面游戏开始的界面有三个选择项,用户可以选择相应的角色,选择完毕后点击开始进入游戏。
《JA V A程序设计》实训报告课程名称:JA V A程序设计专业:计算机应用技术班级:11计算机应用班小组成员:巨敏石丽涛张娅雯李延尚文学董丁喜周致远指导老师:武文廷目录一.实训目的 (1)二. 实训题目和要求2.1实训题目描述 (1)2.2实训要求 (1)三.实训报告内容3.1五子棋主框架 (1)3.2棋盘、棋子及说明信息 (1)3.3对弈算法相关问题设计 (1)四.实训中的部分代码 (2)五.五子棋源程序代码 (3)六. 总结 (17)一、实训目的本次实训,学生可以将理论知识与具体实践相结合,巩固对JA VA相关方法和概念的理解。
通过实训单机版五子棋游戏的编程,掌握JA V A语言编程的基础知识并能熟练运用,熟悉累声明与对象的使用,运用JA V Aswing编写单机版五子棋游戏,并实现其功能。
通过本次实训,可以开拓思维,增强编程思想,为深入学习JA VA打下良好的基础。
二、实训题目描述和要求2.1实训题目描述实训题目:JA V A五子棋单机版游戏。
描述:通过JA V A的swing组件,实现五子棋简单的双人对弈,并通过内部条件判断实现输赢的双方的下棋过程。
2.2实训要求(1)五子棋游戏的主窗口也就是游戏界面的实现(2)棋子黑白色的设置及判定(3)完成判断某一横行是否练成五子及所有方向是否练成五子的功能(4)几个简单按钮的实现,“重新开始”“悔棋”“退出”按钮(5)菜单栏的实现,“重新开始”“悔棋”“退出”菜单项三、实训报告内容3.1主框架编写一个startCheesJFrame类,主要用来显行主窗体界面,包括工具条面板、菜单栏项。
设置界面关闭事件。
并编写一个内部类MyItemListener来监听按钮和菜单栏的单机事件。
3.2棋盘、棋子(1)编写point类,包括棋子的X/Y索引,颜色。
定义构造函数和相应的get方法。
(2)编写ChessBoard类,设置棋盘背景颜色为橘黄色(3)在主框架类中创建ChessBoard对象,并添加到主框架中(4)编写mousePressed方法来进行绘制棋盘和棋子3.3对弈算法相关问题设计(1)编写mousePressed方法的内容,预定义isBlack表示下的是黑棋还是白棋。
Java程序设计实训报告Java程序设计实训报告一、实训目标本次Java程序设计实训旨在让学生掌握Java语言的基础知识和编程技能,能够独立完成Java程序的设计和开发,提高学生的实际编程能力和解决问题能力。
二、实训内容本次Java程序设计实训包括以下内容:1. Java基础语法和面向对象编程的基本概念。
2. Java程序的运行和调试方法。
3. Java标准库的使用和常用数据结构的实现。
4. 常用算法的实现和优化。
5. Java GUI编程和多线程编程的基本概念。
三、实训流程1. 熟悉Java基础语法和面向对象编程的基本概念,在Eclipse 或IntelliJ IDEA等集成开发环境中编写HelloWorld程序,理解程序结构和运行方式。
2. 学习Java标准库的使用和常用数据结构的实现,实现常用算法,如排序、查找等。
掌握调试和优化技巧,以提高程序性能。
3. 学习Java GUI编程和多线程编程的基本概念,实现基本的窗体应用程序和多线程程序,例如计算器、文本编辑器等。
4. 综合应用所学知识,开发一个较为复杂的Java程序,如网络聊天室、小游戏等。
5. 学习Java框架,例如Spring、Hibernate等,实现web应用的设计和开发。
四、实训总结通过这次Java程序设计实训,我加深了对Java语言的理解和认识,学会了使用Java标准库进行编程,掌握了常用算法的实现和优化技巧,学会了Java GUI编程和多线程编程的基本概念,能够独立开发基本的窗体应用程序和多线程程序。
同时,我还学习了Java框架,并能够应用框架进行web应用的设计和开发。
在实训过程中,我遇到了很多困难和问题,但通过查阅资料、询问老师和同学等方式,最终解决了这些问题,加深了对Java程序设计的了解和认识,也提高了我的解决问题的能力。
总的来说,这次实训让我受益匪浅,我会继续学习和探索Java程序设计领域,提高自己的编程水平。
JAVA程序设计五子棋制作实训五子棋是一种非常古老而有趣的棋类游戏,它的规则简单,但又充满了智慧的机会。
在这个实训中,我们将使用JAVA编程语言来制作一个五子棋游戏程序。
首先,我们需要创建一个棋盘类,来表示游戏的棋盘。
棋盘可以用一个二维数组来表示,每个数组元素可以是一个空格、一个黑子或一个白子。
我们可以使用0表示空格,1表示黑子,-1表示白子。
棋盘类还需要提供方法来判断是否有玩家赢得了游戏,以及判断当前位置是否为空。
接下来,我们需要创建两个类来表示黑子和白子。
这两个类都可以拥有一个坐标属性来表示它们在棋盘上的位置,还可以拥有方法来判断它们是否赢得了游戏。
然后,我们需要创建一个游戏类,来控制整个游戏的进行。
游戏类需要实例化一个棋盘对象和两个玩家对象。
游戏类提供方法来让玩家交替落子、判断游戏是否结束以及输出棋盘的状态。
最后,我们可以创建一个主类,来启动游戏。
在主类中,我们可以创建游戏对象并调用游戏的开始方法来开始游戏。
下面是一个示例代码,用于实现上述的五子棋游戏程序:```javapublic class Chessboardprivate int[][] board;public Chessboard(int size)board = new int[size][size];}public boolean isOccupied(int x, int y)return board[x][y] != 0;}public boolean isWin(int x, int y, int player)//判断该位置是否4子连珠,即判断水平、垂直和两个对角线方向上是否有连续的4个同色棋子//略}public void prin//输出棋盘的状态//略}public class Playerprivate int x;private int y;public Player(int x, int y)this.x = x;this.y = y;}public void move(Chessboard board)//玩家落子的逻辑//略}public boolean isWin(Chessboard board) return board.isWin(x, y, 1);}public class Gameprivate Chessboard board;private Player player1;private Player player2;public Game(int size)board = new Chessboard(size);player1 = new Player(0, 0);player2 = new Player(size - 1, size - 1); }public void starint turn = 1;while (true)Player currentPlayer = (turn == 1) ? player1 : player2; currentPlayer.move(board);board.print(;if (currentPlayer.isWin(board))System.out.println("Player " + turn + " wins!"); break;}turn = -turn;}}public class Mainpublic static void main(String[] args)Game game = new Game(15);game.start(;}```。
《JAVA程序设计》实训报告实训题目: 五子棋游戏制作专业:计算机网络班级: 14网络(1)班姓名:指导教师:2015 年 12 月 31日目录1.实训目的 (3)2.实训题目描述和要求 (4)2.1 实训题目描述 (4)2.2 实训题目要求 (5)3.实训报告内容 (6)3.1 需求分析 (6)3.2 概要设计 (7)3.3 详细设计 (8)3.4 编码 (9)3.5 测试 (26)4.总结 (31)实训指导教师评语 (34)1.实训目的随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。
高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。
棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。
一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。
而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。
休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。
《Java程序设计》课程实训,学生可以将理论知识与具体实践相结合,巩固对JAVA相关方法和概念的理解,通过实训单机版五子棋游戏的编程,加深对所学知识的理解和应用。
如: 通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。
深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。
并且让学生能够基本使用实训软件eclipse,以及安装JDK 和环境变量的配置。
通过本次实训,可以开拓思维,增强编程思想,为深入学习JAVA打下良好基础,在学完此门课程后,能使用Java开发小型应用程序。
一、实习背景随着计算机技术的不断发展,编程已成为现代生活的重要组成部分。
为了提高自己的编程技能,培养自己的实际动手能力,我选择了五子棋程序设计作为实习项目。
五子棋是一种古老的中国传统棋类游戏,具有极高的趣味性和挑战性。
通过本次实习,我学习了Java编程语言,掌握了五子棋游戏的算法和实现方法,提高了自己的编程水平。
二、实习目标1. 熟练掌握Java编程语言的基本语法和常用类库;2. 掌握五子棋游戏的设计和实现方法;3. 学会使用面向对象编程思想进行程序设计;4. 培养自己的团队协作和沟通能力。
三、实习内容1. 系统设计在系统设计阶段,我首先分析了五子棋游戏的规则和特点,明确了游戏的基本功能,包括:棋盘显示、落子、判断胜负、悔棋等。
然后,我设计了五子棋游戏的基本架构,包括以下几个模块:(1)棋盘模块:负责棋盘的显示和落子操作;(2)落子模块:负责实现玩家的落子操作;(3)判断胜负模块:负责判断游戏是否结束,以及判断胜负;(4)悔棋模块:负责实现玩家的悔棋操作。
2. 算法设计五子棋游戏的算法主要包括以下几个部分:(1)棋盘表示:使用二维数组表示棋盘,每个元素代表一个棋子,其中0表示空位,1表示玩家1的棋子,2表示玩家2的棋子;(2)落子算法:根据玩家的落子位置,在棋盘上放置对应的棋子;(3)判断胜负算法:从落子位置开始,向四个方向(上、下、左、右)查找连续的五个相同的棋子,如果找到,则判断为胜利;(4)悔棋算法:撤销上一步的落子操作,将棋盘恢复到上一步的状态。
3. 编码实现在编码实现阶段,我按照设计文档和算法要求,使用Java编程语言完成了五子棋游戏的基本功能。
具体实现如下:(1)棋盘模块:使用JFrame创建一个窗口,使用JPanel绘制棋盘,使用鼠标监听器实现落子操作;(2)落子模块:在棋盘模块的基础上,增加一个方法,用于处理玩家的落子操作;(3)判断胜负模块:编写一个方法,用于判断游戏是否结束,以及判断胜负;(4)悔棋模块:编写一个方法,用于撤销上一步的落子操作。
摘要围棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。
主要完成了人机对战和玩家之间联网对战2个功能。
网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。
服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。
在人机对弈过深度搜索和估值模块,来提高电脑棋手的智能。
分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。
算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。
关键词:围棋,信息自动化,游戏,javaABSTRACTAs a chess athletic sports, the folk very popular, to familiar with renju rules and skills, and research simple artificial intelligence, decided to use Java development renju game. Main pleted the man-machine against and between players networking against two functions. Network connection parts for Socket programming application, the client and the server interaction with scale-up macro definition, have very good scalability, the client is responsible for maintenance and collect user interface input, and error handling. Server maintenance, online users of the basic information and any two against the user board information, dynamic maintenance user list. In the man-machine right through the depth search and valuations module, to improve the intelligent puter player. Analyses the influence of valuation module precision of several elements, and puts forward some measures of improving precision, and they search number of nodes in the parison, in these algorithm is analyzed on the basis of some improve puter AI scheme, such as recursion algorithm, puter learning, etc. The algorithm for help to understand the program structure, strengthen the logical thinking ability, in other artificial intelligence also have very great reference role.Keywords: information automation , games , Java目录ABSTRACTII目录III第1章引言11.1背景 (1)1.2课程设计容 (2)1.3任务分工3第2章围棋对弈系统42.1围棋概述 (4)2.1.1围棋定义 (6)2.1.2 开发围棋的任务及目的 (7)2.2主要系统介绍 (8)第3章围棋对弈系统的设计93.1系统需求分析10用户登陆界面图103.2系统开发及运行环境 (12)3.3系统主要功能要求 (12)3.4.系统总体结构 (13)第4章围棋对弈系统的具体实现144.1界面设计144.1.1用户登陆界面图144.1.2用户注册界面图164.1.3 系统主界面20第5章结束语25致25参考文献 (25)第1章引言1.1 背景围棋是一种智力游戏,起源于中国。
java实训报告总结与心得(优秀5篇)java实训报告总结与心得篇1在这次Java实训中,我深入了解了Java编程语言及其面向对象编程的精髓。
通过本次实训,我收获颇丰,不仅加深了对Java语言的理解,也提高了自己的编程能力。
在实训过程中,我遇到了许多问题。
但通过仔细查阅资料和向老师请教,我得以一一解决。
这次实训使我对Java的特性,如封装、继承、多态等有了更深入的理解。
同时,我也熟悉了Java常用的类库和使用方法。
在未来的学习过程中,我将继续努力,争取在Java编程领域取得更大的进步。
我还会加强自己的解决问题的能力,不断提高自己的编程水平。
总之,这次实训对我来说是一次宝贵的经历。
它让我更深入地了解了Java 编程,也让我对自己的学习能力和解决问题的能力有了更大的信心。
java实训报告总结与心得篇2时间过得真快,转眼间,在厦门万策实训基地短短20天的实训生活已悄然过去几天了,然而实训的过程还历历在目。
实训期间,让我学到了很多东西,不仅使我在理论上对IT领域有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益匪浅。
除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。
这一次亲身感受到理论与实际的相结合,让我大开眼界。
也是对以前所学知识的一个初审吧!这次实训对于我以后学习、找工作也真是受益匪浅,在短短的20天中相信这些宝贵的经验会成为我今后成功的重要的基石。
作为一名大三的学生,经过差不多三年的在校学习,对程序设计有了理性的认识和理解。
在校期间,一直忙于理论知识的学习,只能偶尔练习一些小程序,没有机会也没有相应的经验来参与项目的开发。
所以在实训之前,软件项目开发对我来说是比较抽象的,一个完整的项目要怎么来分工以及完成该项目所要的基本步骤也不明确。
而经过这次实训,让我明白一个完整项目的开发,必须由团队来分工合作,并在每个阶段中进行必要的总结与论证。