1. 选题目的与系统概述………………………………………2
2. 系统可行性分析与相关技术背景分析……………………3
2.1系统可行性分析…………………………………………………3
2.2相关技术背景分析………………………………………………3
3. 系统设计与关键技术………………………………………4
3.1系统设计…………………………………………………………4
3.2关键技术…………………………………………………………5
4.系统测试与操作实施方法……………………………9
4.1进入游戏运行界面………………………………………………9
4.2 游戏的具体的操作过程………………………………………9
4.3进入“帮助”菜单………………………………………………10
4.4游戏中的异常处理情况………………………………………11
5.系统设计总结与回顾………………………………………12
6.附录……………………………………………………………13
      6.1 AboutDialog.java……………………………………………13
        6.2 PKCard.java………………………………………………14
        6.3 Spider.java…………………………………………………20
        6.4 SpiderMenuBar.java……………………………………29
1.选题目的与系统概述
随着经济全球一体化的逐步加剧,人们的生活节奏越来越快。蜘蛛纸牌游戏的一种,旨在让工作学习之后疲惫的玩家有一个轻愉快的放松方式。与普通的纸牌相比,降低了一点难度。游戏简单级别由8A-K的清一黑桃牌面组成,取消了红黑相间的游戏规则,更突然出强化了玩家在安排事物方面的能力。
蜘蛛纸牌游戏实现了与Windows系列操作系统中自带的蜘蛛纸牌游戏类似的功能。该游戏程序中采用Windows系列中游戏的图片,运用Java语言设计了线程、鼠标事件、纸牌的装载、图形界面的构造、组件监听接口的实现、生成蜘蛛纸牌游戏的框架、实现游戏中的方法,是一种休闲益智游戏。
      2.系统可行性分析与相关技术背景分析
2.1系统可行性分析
  蜘蛛纸牌游戏规则是:
(1) 将电脑分发给你的牌按照相同的花又打至小排列起来,直到桌面上的牌全都消失。
(2) 可执行的牌必须为明牌
(3) 单牌移动规则
(4) 多拍移动规则
游戏分三个等级:(1)简答:单一花;(2)中级:双花;(3)四花。
2.2相关技术背景分析
2.2.1蜘蛛纸牌游戏是基于Eclipse平台的Java程序。Eclipse的背景如下:       
Eclipse最初是IBM公司的一个软件产品。2001117日发布Eclipse 1.0版本,以后几乎每年都更新一次版本,到2011622日,发布最新版本Eclipse 3.7INDIGO)。尽管Eclipse是使用Java语言开发的,但它的用途并不仅限于Java语言。例如,支持诸如C/C++COBOLEiffel等编程语言的插件已经可用。Eclipse平台的主要任务是为开发者提供能够使用各种工具无缝集成的机制和需要遵守的规则。Eclipse的特点是:(1)基于Java、开发源码的可扩展平台;(2)一个免费得Java IDEJava 集成开发环境)。
2.2.2本课程设计是在最新版本Eclipse 3.7INDIGO)下运行,进入界面如下:
              3.系统设计与关键技术
3.1系统设计
3.1.1蜘蛛游戏可以分为四个模块,它们之间的关系如下:
(1)Spider.Java游戏开始的主函数,调用中及实现游戏中的方法,即调用 SpiderMenuBar.java
(2)SpiderMenuBar调用游戏框架和游戏菜单,即调用PKCard.javaAboutDialog.Java
(3) PKCard.java纸牌的调用和移动位置及纸牌属性,即调用Spider.Java
3.1.2蜘蛛游戏的流程图如图3-1所示。
                    3-1
3.1.3蜘蛛游戏可以分为四个模块各项功能如下:
1AboutDialog.java 其作用是生成游戏的“帮助”下拉菜单
2PKCard.java 其作用是定义纸牌属性,包括名称、位置等相关信息。并管理所有可执行操作,如启动Flash线程、点击鼠标、释放鼠标、放置纸牌、判断可用列、用鼠标拖动纸牌、移动(x,y)个位置、令纸牌显示正面、令纸牌显示背面、将纸牌移动到点point、判断纸牌是否移动、判断card是否是正面等
3Spider.java其作用是设置游戏等级、框架属性、纸牌初始化、异常及成功处理等
4SpiderMenuBar.java 其作用是添加“游戏”下拉列表所有菜单选项,实现各组件的事件侦听 。主要包括三个模块:图形用户界面的构建、组件监听接口的实现、显示可执行操作的线程。
3.2关键技术
  3.2.1 AboutDialog.java 中的关于”窗口
private JTextArea jt1 = new JTextArea("将电脑多次分发给你的牌按照相同的花由大至小排列起来。直到桌面上的牌全都消失。"); //用来显示游戏规则对应的文本框
private JTextArea jt2 = new JTextArea("该游戏中,纸牌的图片来自于Windows XP的纸牌游戏,图片权属于原作者所有!"); //用来显示声明对应的文本框
   
  3.2.2 PKCard.java当有空位的时候,启动Flash线程,继续进行发牌。
public void flashCard(PKCard card){
        new Flash(card).start();    //不停的获得下一张牌,直到完成
            NextCard(card) != null){
            card.NextCard(card)); }}
            class Flash extends Thread{
        private PKCard card = null;
                public Flash(PKCard card){
            this.card = card;
        }
3.2.3 PKCard.java点击“游戏”->“显示可行操作”后,可以连续的纸牌会闪烁一下,即一张是图片本身一张是白图片。这里有线程的run()方法来实现。
    public void run(){
    boolean is = false;
    ImageIcon icon = new ImageIcon("images/white.gif");
    for (int i = 0; i < 4; i++){
        try{
            Thread.sleep(200);
                }
基于java的课程设计题目
        catch (InterruptedException e){
                    e.printStackTrace();
                }
        if (is){ this.card.turnFront();
                    is = !is; }
        else{ this.card.setIcon(icon);
                    is = !is;
            }// 根据当前外观将cardUI属性重置
                card.updateUI();}}}
    3.2.4 PKCard.java 放置纸牌
    public void setNextCardLocation(Point point){
        PKCard card = NextCard(this);
        if (card != null){
            if (point == null){
                card.setNextCardLocation(null);
                Location());
                card.setLocation(card.initPoint);
                main.table.put(card.initPoint, card);
            }
            else{
                point = new Point(point);
                point.y += 20;
                card.setNextCardLocation(point);
                point.y -= 20;
                Location());
                card.setLocation(point);
                main.table.Location(), card);
                card.initPoint = Location();}}}
    3.2.5 PKCard.java 判断可用列
        public int whichColumnAvailable(Point point){
        int x = point.x;
        int y = point.y;
        int a = (x - 20) / 101;
        int b = (x - 20) % 101;
        if (a != 9){
            if (b > 30 && b <= 71){
                a = -1; }
            else if (b > 71){
                a++;}}
                else if (b > 71){
            a = -1; }
          if (a != -1){
            Point p = LastCardLocation(a);
            if (p == null) p = GroundLabelLocation(a);
            b = y - p.y;
            if (b <= -96 || b >= 96){
                a = -1; }}
            return a; }
3.2.6 Spider.java中对鼠标事件监听程序进行初始布局
clickLabel.addMouseListener(new MouseAdapter(){
            public void mouseReleased(MouseEvent me){
                if (c < 60){
                    Spider.this.deal();
                }} });   
3.2.7 SpiderMenuBar.java“游戏”下拉菜单中游戏级别设置
jRMItemEasy.addActionListener(new java.awt.event.ActionListener() {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。