黑白棋java论文

上传人:cn****1 文档编号:457152320 上传时间:2023-10-09 格式:DOC 页数:26 大小:243KB
返回 下载 相关 举报
黑白棋java论文_第1页
第1页 / 共26页
黑白棋java论文_第2页
第2页 / 共26页
黑白棋java论文_第3页
第3页 / 共26页
黑白棋java论文_第4页
第4页 / 共26页
黑白棋java论文_第5页
第5页 / 共26页
点击查看更多>>
资源描述

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

1、xxxx 大 学 课 程 设 计 说 明 书(论 文)X X X X 大 学Java语言程序设计课程设计(论文)题目: java黑白棋 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 第1章 课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程JAVA语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核

2、学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。1.3预备知识熟悉JAVA语言

3、程序设计的基本知识及VJAVA编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。一般棋子双面为黑白两色,故称“黑白棋”。因为行棋之时将对方棋子翻转,变为己方棋子,故又称“翻转棋”。棋子双面为红、绿色的称为“苹果棋”。 黑白棋的前身是英国人发明的翻转棋(Reversi)

4、,后来由日本的长谷川五郎加以改进,并改称为奥赛罗棋(Othello),国内习惯上称之为黑白棋。这个棋类游戏在西方较为流行,但在中国起步较晚,还不很普及。黑白棋作为一个棋类竞技运动,在民间十分流行,为了熟悉黑白棋规则及技巧,以及研究简单的人工智能,决定用Java开发黑白棋游戏。主要完成了人机对战功能,有很好的可扩展性。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其

5、他人工智能方面也有很大的参考作用。尽管黑白棋的规则比较简单,但它所包括的丰富战略,不亚于那些相当“经典”的策略游戏。其中人工智能部分,由于采用了大量的搜索算法,其中很多被利用到各方面。2.2 系统设计近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表,其它像围棋的“手淡”、象棋的“将族”等也以其优秀的人工智能深受棋迷喜爱。 越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工

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

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

8、地判断局面的优劣、可以思考到二十几步之后的局面,这都是人类棋手远不能及的。然而,电脑的这一切又都是人类所赋予的,因此究竟电脑和人脑孰优孰劣,还难以定论。2.2.1功能分析吃子规则:采用夹吃的原则,左图用红色标记的是黑方可落子的位置。当黑方落子之后,则夹在两黑子中间的白子都将变为黑子。右图是落子后的棋盘布局,蓝色标记的是白方可落子的位置。夹子的方向包含:水平、竖直、斜对角2.2.2面向对象设计总体流程:2.2.2类成员描述输出成绩:输出最后的胜利者结果2.3程序实现2.3.1源码分析import java.awt.Color;import java.awt.Graphics;import jav

9、a.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.ArrayList;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;/* * 黑白棋面板 * * author hyg * */public class HbPanel extends JPanel private static int BLACK = 1; private static int WHITE = -1; int q

10、izi = new int88; int curQizi = BLACK; / 当前走棋方 ArrayList a = new ArrayList(); ArrayList tmp = new ArrayList(); / 在指定位置画棋子 private void drawQizi(int i, int j) Graphics g = this.getGraphics(); if (qiziij = BLACK) g.setColor(Color.BLACK); else if (qiziij = WHITE) g.setColor(Color.WHITE); g.fillOval(55 +

11、 50 * i, 55 + 50 * j, 40, 40); /* * Create the panel */ public HbPanel() super(); addMouseListener(new MouseAdapter() public void mouseClicked(final MouseEvent e) int x = e.getX(); int y = e.getY(); System.out.println(x + , + y); / 计算索引 int i = (x - 50) / 50; int j = (y - 50) / 50; System.out.printl

12、n(i + , + j); if (i = 8 | j = 8 | qiziij != 0) / 如果指定位置超出范围或已经有棋子,直接返回。 return; if (checkLocation(curQizi, i, j) / 判断当前位置是否可以放棋子 / 如果可以 / 1. 画出棋子 qiziij = curQizi; drawQizi(i, j); / 3. 判断对方是否有棋可走,如有 if (checkNext(-1 * curQizi) / 2. 交换走棋方 curQizi *= -1; else if (checkNext(curQizi) / 有无,判断自己是否有棋可走,如有,

13、给出提示 JOptionPane.showConfirmDialog(null, (curQizi = BLACK ? 白方 : 黑方) + 无棋可走, + (curQizi = 1 ? 黑方 : 白方) + 继续,提示, JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE); else / 游戏结束 JOptionPane.showConfirmDialog(null, 双方都无棋可走,游戏结束, 游戏结束, JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);); qizi33 = WHITE; / 1为黑,-1为白,0为无棋子 qizi34 = BLACK; qizi43 = BLACK; qizi44 = WHITE; / qizi10 = 1; / / Graphics g = getGraphics(); setBackground(Color.CYAN); /* * 验证参数代表的走棋方是否还有棋可走 * param i 代表走棋方,1为黑方,-1为白方 * return tru

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

当前位置:首页 > 大杂烩/其它

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