《计算机综合实习》题目:中国象棋(java单机版)班级:信息与计算科学1001班*名:***学号:*********指导教师:***日期:2014.1.7目录第一章引言(概述)........................................................................................................................ - 1 -第二章可行性分析.................................................................................................................................. - 2 -2.1 总体分析............................................................................................................................................. - 2 -2.2 开发环境介绍..................................................................................................................................... - 2 -2.2.1软件开发环境 (2)第三章需求设计...................................................................................................................................... - 2 -第四章详细设计.................................................................................................................................... - 3 -4.1 功能设计............................................................................................................................................. - 3 -4.1.1功能说明 (3)4.1.2对弈规则 (3)4.1.3相关类图 ................................................................................ 错误!未定义书签。
4.2功能的实现.......................................................................................................................................... - 4 -4.2.1界面的实现 (4)4.2.2棋谱的实现 (8)4.2.3开始 (8)4.3棋子移动和吃棋规则.................................................................................................................... - 8 -4.3.1本节说明 (8)4.3.2详细规则介绍 (8)4.3.2.1卒的移动及吃棋规则 (8)4.3.2.2炮和车的移动及吃棋规则 (8)4.3.2.3马的移动和吃棋规则 (9)4.3.2.4相(象)的移动和吃棋规则 (9)4.3.2.5士(仕)的移动和吃棋规则.............................................. 错误!未定义书签。
4.3.2.6将(帅)的移动和吃棋规则 (9)4.4 测试说明............................................................................................................................................. - 9 -4.5 测试结果........................................................................................................................................... - 10 -运行结果 (10)小结................................................................................................................................ 错误!未定义书签。
第一章引言(概述)随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
中国象棋发展至今已有二千三、四百年的历史了,早在战国时期就有正式记载,堪称中国的国粹。
想必在未来的几年随着中国象棋在各个领域的推广,必定会带来巨大的影响和经济效益。
中国象棋对弈在中国有着悠久的历史,是二人对抗性游戏中的一种。
由于用具简单,趣味性很强,很快成为流行极为广泛的棋艺活动。
也是我国正式开展的78个体育项目之一,为促进该游戏在世界范围内的推广和普及,在中国历史上,象棋被列为士大夫们的修身之艺,现在被视为怡神益智的一种有益的游戏。
在棋艺对战中,玩家们可以从攻与防、虚与实、整体与局部等复杂关系的变化中悟出某种各种哲理。
象棋博弈是由两个玩家轮流走子,以“将死”或“困毙”对方将或帅为胜的一种棋类运动,有着数以万亿计的爱好者。
它不仅能丰富人们的文化生活,陶冶情操,更有助于开发个人智力,启迪思维,锻炼辨证分析能力和培养顽强的意志等等。
随着计算机的使用的深入普及,计算机应用技术的日益完善,人们已经和计算机有着密切的关联,在计算机上玩游戏已经大众化,给人们带来了无限的欢悦,本系统是一个小程序,只要在装有jdk中的虚拟机的计算机上即可运行,中国象棋对弈系统实现了双人对弈这个功能,可用于多人一起游戏。
而实现中国象棋对弈系统就为象棋在网络应用平台提供多人对弈打下基础。
中国象棋对弈系统主要要实现的是棋子的走法和规则,中国象棋讲究车,马,象,仕,卒,炮,将的活用;只有当将被对方玩家的棋子吃掉,则首先吃掉对方将或帅的一方就是胜利的一方。
玩家对局时,由红棋的一方先走,双方轮流各走一次,直至分出胜负,对局即结束。
轮到走棋的一方,要将某个棋子从一个十字交叉点走到另一个十字交叉点,或者吃掉对方的棋子而占领其十字交叉点,都算走一次。
双方各走一次,称为一个回合。
象棋是中华民族的传统文化,不仅在国内深受群众喜爱,而且流传国外。
第二章可行性分析2.1 总体分析此次对弈系统的开发研究是大学专业知识的一次综合应用于提高,计算机主要安装jdk运行环境和相关应用程序开发工具。
运用java,gui监听器和标准类库等知识,首先编写一个主类ChineseChess,构造一个主窗口,在主窗口上添加一工具栏,有相应的按钮,用此来用来对“开始,悔棋,信息提示,退出,重新开始”进行操作。
1.中国象棋对弈系统是:图形界面,监听器等技术的综合运用。
2.对弈的实现:利用鼠标的监听来实现对象棋走法的操作。
2.2 开发环境介绍2.2.1 软件开发环境1.结合本系统的特点,只需要一个软件开发工具和一个虚拟机即可,因此需要的软件有:2.操作系统在Windows Server 2003以上;3.开发工具使用Jcreator;4.在操作系统上安装jdk的开发环境以及jre(虚拟机)的运行环境。
第三章需求分析中国象棋对弈系统要求实现下棋界面,利用鼠标监听来实现走棋与吃棋,胜负判断并伴有信息提示,在棋盘界面上端设有工具栏,内容包括“开始,悔棋,信息提示,退出,重新开始”等相关功能。
详情如下:1.开始:开始一场新的游戏,并重新棋子初始化。
2.悔棋:返回到上一步棋局,并开始继续下棋。
3.信息提示:提示开始该谁走棋,默认红棋先走。
4.退出:对话框提示,是否退出系统。
5.重新开始:删除上次下棋的所有痕迹,重新初始化界面。
如下图:(图)第四章详细设计4.1 功能设计4.1.1 功能说明这个系统主要实现人人对弈,采用鼠标监听的方法来实现对棋子的移动,双方依次轮流走棋,在工具栏有走棋的相关提示,主要提示该轮到哪方走棋。
如果一方想要悔棋,也是在征求对方同意的情况下,点击“悔棋”按钮,可连续悔棋。
为防止误操作关闭下棋界面,在退出时设有信息提示,如果确认退出,则点击“是”按钮,否则点击“否”返回下棋界面。
如果点击“重新开始”按钮,设有信息提示,确认“是”,页面回到初始状态,重新开始,否则页面保持不变。
4.1.2 对弈规则默认是红方先手,黑方后手,双方轮流下棋。
当将或者帅被吃子,该方输棋。
4.1.3相关类图………创建棋盘对象………绘制棋盘……创建对象……放入棋子对象4.2功能的实现4.2.1 界面的实现图形界面的是实现主要在类ChessWindow类中实现,通过继承Jframe,实现ActionListener,MouseListener接口来进行初始化操作,以下是相关代码:如(图)4.2.1-1 图形界面//创建工具栏Container con = this.getContentPane();//初始化con.setLayout(null);//初始化组件//begin = new JButton("开始");Rebegin = new JButton("重新开始");Exit = new JButton("退出");text = new JTextField("信息提示");Toolbar = new JToolBar();//初始化类对象//chess = new Chess();chessMan = new ChessMan();gamePanel = new GamePanel();controller = new Controller(gamePanel, chess, chessMan);//把组件添加到工具栏并添加监听//Toolbar.setLayout(new GridLayout(1,4));//四格Toolbar.add(begin);begin.addActionListener(this);Toolbar.add(Exit);Exit.addActionListener(this);Toolbar.add(text);Toolbar.add(Rebegin);Rebegin.addActionListener(this);addMouseListener(this);//初始化类对象//chess = new Chess();chessMan = new ChessMan();gamePanel = new GamePanel();controller = new Controller(gamePanel, chess, chessMan);//把组件添加到工具栏并添加监听//Toolbar.setLayout(new GridLayout(1,4));//四格Toolbar.add(begin);begin.addActionListener(this);Toolbar.add(Exit);Exit.addActionListener(this);Toolbar.add(text);Toolbar.add(Rebegin);Rebegin.addActionListener(this);addMouseListener(this);text.setEditable(false);Toolbar.setBounds(0,0,500,30);//向窗口添加组件,棋盘//con.add(Toolbar);gamePanel.setBounds(20,30,600,700);con.add(gamePanel);con.addMouseListener(controller);}(图)4.2.1 界面(图)4.2.2说明:由于图像太大,为了便于排版所以截半图4.2.2 棋谱的实现在界面的空白处添加画布,class Chess实现棋盘的画法,class ChessMan实现棋子画法,即可显示棋谱如(图)4.2.2 棋谱。