java黑白棋课程设计

上传人:第*** 文档编号:34024306 上传时间:2018-02-20 格式:DOC 页数:22 大小:298KB
返回 下载 相关 举报
java黑白棋课程设计_第1页
第1页 / 共22页
java黑白棋课程设计_第2页
第2页 / 共22页
java黑白棋课程设计_第3页
第3页 / 共22页
java黑白棋课程设计_第4页
第4页 / 共22页
java黑白棋课程设计_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《java黑白棋课程设计》由会员分享,可在线阅读,更多相关《java黑白棋课程设计(22页珍藏版)》请在金锄头文库上搜索。

1、辽 宁 工 业 大 学JAVA 语言程序设计 课程设计(论文)题目: 黑白棋设计与实现 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 讲 师 起止时间: 程序设计专题(报告)任务及评语院(系):软件学院 教研室:软件教研室学 号 学生姓名 专业班级程序设计(报告)题目程序设计(报告)任务程序设计专题的任务与要求:(1)掌握 Java 编程、面向对象的基础知识。(2)较熟练地编写 Java 应用程序 Application。(3)了解 Java 的常用标准类库、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立

2、编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2010 年 12 月 24 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第 1 章 课程设计的目的与要求 .11.1 课程设计目的 .11.2 课程设计的实验环境 .11.3 课程设计的预备知识 .11.4 课程设计要求 .1第 2 章 课程设计内

3、容 .22.1 课程设计主要内容 .22.2 概要设计 .22.3 详细设计 .52.4 测试分析 .17第 3 章 课程设计总结 .18参考资料 .19辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)1第 1 章 课程设计的目的与要求1.1 课程设计目的JAVA 程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA 程序设计课程后,进行的一次全面的综合训练,JAVA 程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,

4、基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计语言及相应的集成开发环境,J2SDK 和 ECLIPSE 开发工具。1.3 课程设计的预备知识熟悉 JAVA 语言及 ECLIPSE 开发工具。1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进

5、行简单分析和判断;能编写出具有良好风格的程序;掌握 JAVA 程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)2第 2 章 课程设计内容2.1 课程设计主要内容Java 语言的学习热潮并没有因为时间的推移而消退,相反,由于计算机技术的发展所带来新应用的出现,Java 越来越流行,这种情况是以往程序设计语言在其生存周期内所不多见的。Java 语言之所以这样长盛不衰,一是因为其众多的技

6、术特点与现今的应用十分合拍,可以覆盖大部分的需求;二是因为 SUN 公司不断推出新的版本,完善 Java 自身的功能。有了这两点,Java 语言成为程序员首选的程序设计开发工具就在情理之中了。黑白棋,又叫翻转棋(Reversi) 、苹果棋或奥赛罗棋(Othello) 。一般棋子双面为黑白两色,故称“黑白棋” 。因为行棋之时将对方棋子翻转,变为己方棋子,故又称“翻转棋” 。棋子双面为红、绿色的称为“苹果棋” 。 黑白棋的前身是英国人发明的翻转棋(Reversi),后来由日本的长谷川五郎加以改进,并改称为奥赛罗棋(Othello),国内习惯上称之为黑白棋。这个棋类游戏在西方较为流行,但在中国起步较

7、晚,还不很普及。黑白棋作为一个棋类竞技运动,在民间十分流行,为了熟悉黑白棋规则及技巧,以及研究简单的人工智能,决定用 Java 开发黑白棋游戏。主要完成了人机对战功能,有很好的可扩展性。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高提高电脑 AI 方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。尽管黑白棋的规则比较简单,但它所包括的丰富战略,不亚于那些相当“经典”的策略游戏。其中人工智能

8、部分,由于采用了大量的搜索算法,其中很多被利用到各方面。2.2 概要设计近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表,其它像围棋的“手淡” 、象棋的“将族”等也以其优秀的人工智能深受辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)3棋迷喜爱。 越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感兴趣,而黑白棋游戏程序的开发实现这个课题,正好提供给我

9、这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈) ,让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这个课题就是

10、和人工智能中的博弈论领域紧密相关的。这个题目核心是人工智能和 Socekt 编程,并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以,趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是很实用且很有必要的。电脑究竟能否最终战胜人脑?这是大家一直在探索的问题。自从 1997 年黑白棋程序Logistello 战胜冠军棋手村上健以来,电脑程序已经把人类棋手远远抛在后面。目前,程序可以记住大量的开局定式、可以正确地判断局面的优劣、可以思考到二十几步之后的局面,这都

11、是人类棋手远不能及的。然而,电脑的这一切又都是人类所赋予的,因此究竟电脑和人脑孰优孰劣,还难以定论。2.2.1 自定义说明吃子规则:采用夹吃的原则,左图用红色标记的是黑方可落子的位置。当黑方落子之后,则夹在两黑子中间的白子都将变为黑子。右图是落子后的棋盘布局,蓝色标记的是白方可落子的位置。夹子的方向包含:水平、竖直、斜对角2.2.2 程序流程图(1)落棋位置判断:辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)4(2)输出成绩:辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)5(3)输出最后的胜利者结果:2.2.3 各模块功能及程序说明落棋位置的判断模块:判断落子后棋盘

12、的变化,判断棋手的落棋位置和次数,两方交换走棋。成绩输出模块:判断输出哪个棋手的分,在不同的位置输出,清空成绩,判断哪方胜利。输出胜利者信息模块:开始判断最后的结果,将两人分数分别输出。 2.2.4 程序结果一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己棋子的数目多于对方。按键盘上的方向键可以上下左右移动棋子,按回车键可以摆放棋子,同时也可以用鼠标左键操作。在同上操作下到最后谁的棋子多,谁赢。2.3 详细设计程序详细设计代码如下:import java.awt.*;import java.awt.event.*;import java.io.*;import .*;辽 宁 工

13、业 大 学 课 程 设 计 说 明 书(论 文)6import javax.swing.*;import java.util.*;import java.awt.Font;public class Mainpublic static void main(String args)BlackAndWhiteDesign b = new BlackAndWhiteDesign();class BlackAndWhiteDesign extends Frame implements RunnableGo Background = new Go();boolean stepColor = true;int PORT;Socket sendSocket;/主动连接 SocketPrintWriter writer;/用来发送 messageboolean stopFlag;boolean isInitiative;Point messagePoint;Panel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = ne

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号