欢迎来到天天文库
浏览记录
ID:39454618
大小:355.02 KB
页数:23页
时间:2019-07-03
《java课程设计_华容道》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、附件1:学号:2008131236课程设计题目华容道__一个传统的智力游戏学院计信学院专业计算机班级08网络学生姓名李豪指导教师刘夕炎2011年6月8日中文摘要华容道游戏简介: 华容道,古老的中国游戏,以其变化多端、百玩不厌的特点与魔方、独立钻石棋一起被国外智力专家并称为“智力游戏界的三个不可思议”。它与七巧板、九连环等中国传统益智玩具还有个代名词叫作“中国的难题”。华容道游戏取自著名的三国故事,曹操在赤壁大战中被刘备和孙权的“苦肉计”、“火烧连营”打败,被迫退逃到华容道,又遇上诸葛亮的伏兵,关羽为了报答曹操对他的恩情,明逼
2、实让,终于帮助曹操逃出了华容道。游戏就是依照“曹瞒兵败走华容,正与关公狭路逢。只为当初恩义重,放开金锁走蛟龙”这一故事情节,通过移动各个棋子,帮助曹操从初始位置移到棋盘最下方中部,从出口逃走。不允许跨越棋子,还要设法用最少的步数把曹操移到出口。曹操逃出华容道的最大障碍是关羽,关羽立马华容道,一夫当关,万夫莫开。关羽与曹操当然是解开这一游戏的关键。四个刘备军兵是最灵活的,也最容易对付,如何发挥他们的作用也要充分考虑周全。“华容道”有一个带二十个小方格的棋盘,代表华容道。棋盘下方有一个两方格边长的出口,是供曹操逃走的。棋盘上共摆
3、有十个大小不一样的棋子,它们分别代表曹操、张飞、赵云、马超、黄忠和关羽,还有四个卒。“华容道”有几十种布阵方法,如“横刀立马”、“近在咫尺”、“过五关”、“水泄不通”、“小燕出巢”等等玩法。棋盘上仅有两个小方格空着,玩法就是通过这两个空格移动棋子,用最少的步数把曹操移出华容道。这个玩具引起过许多人的兴趣,大家都力图把移动的步数减到最少。该程序用Java语言编写,棋盘上有10个不一样大小的按钮,分别代表曹操、张飞、赵云、马超、黄忠和关羽,还有四个兵。棋盘最下方有两个空着的小方格,代表曹操逃出的位置,可以实现通过鼠标或者键盘移动
4、界面上的按钮,最终使曹操移动到棋盘最下方,代表曹操逃出华容道。目录一、课程设计任务及要求二、需求分析三、设计思路四、详细设计五、运行调试与分析讨论六、设计体会与小节七、参考文献一、课程设计任务及要求1、本程序主要练习使用布局管理器设计一个华容道游戏界面,并练习使用事件监听器(鼠标事件、键盘事件和焦点事件)实现按钮的移动。2、编写一个按钮的子类,使用该子类创建的对象代表华容道中的人物。通过焦点事件控制人物颜色,当人物获得焦点时颜色为红色,当失去焦点时颜色为黄色。3、通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动。当人物上发
5、生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按下键盘的“↓“键,该人物向下移动。向左、向右和向上的移动原理类似。4、点击“重新开始”可以使各个按钮复位,重新开始游戏。二、需求分析要满足的容道游戏的基本操作:1.各人物按钮按相应的顺序和大小排列,按钮上标注人物名字,界面美观。2.通过焦点事件控制人物按钮的颜色,得到焦点呈红色,失去焦点为淡黄色。3.可以通过键盘控制各个按钮的移动:按“↓”键,人物按钮向下移动其它方向类似。4.可以通过鼠标点击来控制各个人物按钮的移动:如果点击的位置在按钮的上
6、半部分则向上移动,如果点击按钮的下半部分则向下,左右原理类似。5.有“重新开始按钮”点击重新开始按钮各个人物按钮复位,能重新开始游戏。6.小程序能够自由的缩小,放大,关闭。三、设计思路1.首先是界面设计,该界面主要包括十个人物按钮(马、曹操、关羽等)以及旁边的四个边框按钮和重新开始按钮。对于人物按钮,创建Button按钮的子类,在该类中定义按钮的一些新的属性和焦点事件监听器,如:按钮的标签名、按钮的颜色、按钮的排号(如这里有十个人物按钮,从1排到十,在程序中可以依靠这个属性区分人物按钮)、按钮颜色、按钮获得或失去焦点事件。同
7、时在设计该界面时要考虑到各个按钮的位置、大小等情况。2.对界面上的各人物按钮添加相应的相应事件焦点事件:通过焦点事件各个按钮的是焦点。鼠标事件、键盘事件:通过这两种事件去完成界面上各人物按钮的移动。对重新开始按钮定义动作事件(ActionEvent)完成界面初始化功能也就是各人物按钮重新归位。四、详细设计1.类的设计本程序总共有3个类(1)MoveExample类publicclassMoveExample{publicstaticvoidmain(Stringargs[])//定义主方法{newHua_Rong_Road(
8、);//创建一个Hua_Rong_Road对象}}(2)Person类增加焦点事件监视器:addFocusListener(事件监听器)当组件具有焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点到无输入焦点都会触发FocusEvent事件。创建监视器的类必须要实现FocusL
此文档下载收益归作者所有