JAVA 课程设计蜘蛛纸牌报告终极修改版

合集下载

蜘蛛纸牌详细设计说明书

蜘蛛纸牌详细设计说明书

蜘蛛纸牌概要设计说明书南昌航空大学软件学院2011年10月1.引言1.1编写目的1.1编写目的本详细设计说明书是针对蜘蛛纸牌游戏的课程作业而编写。

目的是对该软件进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试作准备。

本详细设计说明书的预期读者为本项目小组的成员以及对该系统感兴趣,在以后想对系统进行扩展和维护的人员。

1.2背景a.待开发的系统的名称:蜘蛛纸牌游戏软件b.本项目的任务提出者: 周璇、罗书惟、罗剑、王天宇开发者:周璇、罗书惟、罗剑、王天宇用户:所有对该软件感兴趣,并且对该游戏熟悉的用户]1.3定义AboutDialog:游戏关于类;Frame1:游戏界面设计;PKCard:扑克牌的排列算法;Spider:游戏规则;SpiderMenuBar:游戏菜单栏1.4参考资料《Java实用教程》清华大学出版社张跃平耿祥义著《Java实用教程》2. 系统的结构3.模块1(Frame1)设计说明3.1模块描述实现用户界面的类,含有1个类3种方法,是本系统中最简单的代码3.2功能实现用户友好界面。

3.3性能负责接受用户输入,显示系统输出,其他模块功能的协调调用。

3.4输入项选择游戏的难度系数(简单、中等、高等)、显示可行性操作、统计战况、发牌、保存游戏等。

3.5输出项得出游戏的结果界面。

3.6接口import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JRadioButtonMenuItem;import javax.swing.ButtonGroup。

3.7注释设计ImageIcon icon = new ImageIcon("images/测试.gif"); //gif,jpg 格式能用,bmp格式不能用3.8 限制条件扑克牌的图画格式只能是gif,jpg。

java课程设计 蜘蛛纸牌游戏设计课程设计报告

java课程设计 蜘蛛纸牌游戏设计课程设计报告

《面向对象程序设计》课程设计报告题目: 下拉列表运算器设计专业: xxxxx班级: xxx姓名: xx指导教师: xx成绩:xxxxxx 年 x 月xx 日xx目录1设计内容及要求 (2)1.1 设计内容 (2)1.2 设计要求 (2)2概要设计 (2)2.1代码功能功能模块设计: (2)2.2程序的总体设计流程图: (3)2.3模块一的详细介绍: (3)2.3.1主要的类: (3)2.3.2主要的变量: (4)2.3.3主要的方法: (4)2.4模块二的详细介绍: (5)2.4.1主要的类: (5)2.4.2主要的变量: (5)2.4.3主要的方法: (5)2.5模块三的详细介绍: (6)2.5.1主要类介绍: (6)2.5.2主要变量: (6)2.5.3主要方法: (7)2.6模块四的详细介绍: (7)2.6.1主要的类: (8)2.6.2主要的变量: (8)2.6.3主要的方法: (8)3设计过程或程序代码 (9)3.1需要实现的主要功能: (9)3.2功能设计流程图: (10)3.3主要功能的代码实现: (10)3.3.1游戏菜单栏内游戏菜单及帮助菜单功能展示: (10)3.3.2主界面的设计: (11)3.3.3纸牌的初始化以及发牌操作 (13)3.3.4纸牌的移动以及放置 (18)3.3.5显示当前纸牌可行的操作: (19)3.3.6回收纸牌: (21)4设计结果与分析 (22)4.1运行程序: (22)4.2发布程序: (23)4.3总结: (24)5参考文献 (24)1设计内容及要求1.1 设计内容相信很多人都玩过蜘蛛纸牌这款休闲游戏,现在随着生活水平的提高,人们拥有充分的时间来享受休闲游戏带来的快乐,越来越多的人亲睐蜘蛛纸牌游戏。

谈起这款游戏,大家并不陌生。

从WINDOWS2000系统开始,就嵌入了蜘蛛纸牌游戏,可是随着微软系统的不段升级,蜘蛛纸牌游戏的功能业变得越来越强大,游戏的界面也更加美观。

Java课程设计报告蜘蛛纸牌游戏

Java课程设计报告蜘蛛纸牌游戏

目录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 Spider M enuBar.java (29)1.选题目的与系统概述随着经济全球一体化的逐步加剧,人们的生活节奏越来越快。

蜘蛛纸牌游戏的一种,旨在让工作学习之后疲惫的玩家有一个轻愉快的放松方式。

与普通的纸牌相比,降低了一点难度。

游戏简单级别由8组A-K的清一色黑桃牌面组成,取消了红黑相间的游戏规则,更突然出强化了玩家在安排事物方面的能力。

蜘蛛纸牌游戏实现了与Windows系列操作系统中自带的蜘蛛纸牌游戏类似的功能。

该游戏程序中采用Windows系列中游戏的图片,运用Java语言设计了线程、鼠标事件、纸牌的装载、图形界面的构造、组件监听接口的实现、生成蜘蛛纸牌游戏的框架、实现游戏中的方法,是一种休闲益智游戏。

2.系统可行性分析与相关技术背景分析2.1系统可行性分析蜘蛛纸牌游戏规则是:(1)将电脑分发给你的牌按照相同的花色又打至小排列起来,直到桌面上的牌全都消失。

(2)可执行的牌必须为明牌(3)单牌移动规则(4)多拍移动规则游戏分三个等级:(1)简答:单一花色;(2)中级:双花色;(3)四花色。

2.2相关技术背景分析2.2.1蜘蛛纸牌游戏是基于Eclipse平台的Java程序。

Eclipse的背景如下:Eclipse最初是IBM公司的一个软件产品。

Spider——蜘蛛纸牌java程序设计3

Spider——蜘蛛纸牌java程序设计3

import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Spider extends JFrame{//整型变量,表示难度等级为:简单public static final int EASY = 1;//整型变量,表示难度等级为:普通public static final int NATURAL = 2;//整型变量,表示难度等级为:难public static final int HARD = 3;//设定初始难度等级为简单private int grade = Spider.EASY;private Container pane = null;//生成纸牌数组private PKCard cards[] = new PKCard[104];private JLabel clickLabel = null;private int c = 0;private int n = 0;private int a = 0;private int finish = 0;Hashtable table = null;private JLabel groundLabel[] = null;public static void main(String[] args){Spider spider = new Spider();spider.setVisible(true);}/****构造函数*/public Spider(){setTitle("蜘蛛牌");setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);//设置框架的大小setSize(1024, 742);//生成SpiderMenuBar对象,并放置在框架之上setJMenuBar(new SpiderMenuBar(this));pane = this.getContentPane();//设置背景颜色pane.setBackground(new Color(0, 112, 26));//将布局管理器设置成为nullpane.setLayout(null);clickLabel = new JLabel();clickLabel.setBounds(883, 606, 121, 96);pane.add(clickLabel);clickLabel.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent me){if (c < 60){Spider.this.deal();}}});this.initCards();this.randomCards();this.setCardsLocation();groundLabel = new JLabel[10];int x = 20;for (int i = 0; i < 10; i++){groundLabel[i] = new JLabel();groundLabel[i].setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISE D));groundLabel[i].setBounds(x, 25, 71, 96);x += 101;this.pane.add(groundLabel[i]);}this.setVisible(true);this.deal();this.addKeyListener(new KeyAdapter(){class Show extends Thread{public void run(){Spider.this.showEnableOperator();}}public void keyPressed(KeyEvent e){if (finish != 8) if (e.getKeyCode() == KeyEvent.VK_D && c < 60){ Spider.this.deal();}else if (e.getKeyCode() == KeyEvent.VK_M){new Show().start();}}});}/****开始新游戏*/public void newGame(){this.randomCards();this.setCardsLocation();this.setGroundLabelZOrder();this.deal();}/****返回值:int**返回牌的数量*/public int getC(){return c;}/****设置等级*/public void setGrade(int grade){this.grade = grade;}/****纸牌初始化*/public void initCards(){//如果纸牌已被赋值,即将其从框架的面板中移去if (cards[0] != null){for (int i = 0; i < 104; i++){pane.remove(cards[i]);}}int n = 0;//通过难度等级,为n赋值if (this.grade == Spider.EASY){n = 1;}else if (this.grade == Spider.NA TURAL){n = 2;}else{n = 4;}//为card赋值for (int i = 1; i <= 8; i++){for (int j = 1; j <= 13; j++){cards[(i - 1) * 13 + j - 1] = new PKCard((i % n + 1) + "-" + j,this);}}//随机纸牌初始化this.randomCards();}/****纸牌随机分配*/public void randomCards(){PKCard temp = null;//随机生成牌号for (int i = 0; i < 52; i++){int a = (int) (Math.random() * 104);int b = (int) (Math.random() * 104);temp = cards[a];cards[a] = cards[b];cards[b] = temp;}}/****设置还原*/public void setNA(){a = 0;n = 0;}/****设置纸牌的位置*/public void setCardsLocation(){table = new Hashtable();c = 0;finish = 0;n = 0;a = 0;int x = 883;int y = 580;//初始化待展开的纸牌for (int i = 0; i < 6; i++){for (int j = 0; j < 10; j++){int n = i * 10 + j;pane.add(cards[n]);//将card转向背面cards[n].turnRear();//将card放在固定的位置上cards[n].moveto(new Point(x, y));//将card的位置及相关信息存入table.put(new Point(x, y), cards[n]);}x += 10;}x = 20;y = 45;//初始化表面显示的纸牌for (int i = 10; i > 5; i--){for (int j = 0; j < 10; j++){int n = i * 10 + j;if (n >= 104) continue;pane.add(cards[n]);cards[n].turnRear();cards[n].moveto(new Point(x, y));table.put(new Point(x, y), cards[n]);x += 101;}x = 20;y -= 5;}}/****返回值:void**方法:显示可移动的操作*/public void showEnableOperator(){int x = 0;out: while (true){Point point = null;PKCard card = null;do{if (point != null){n++;}point = this.getLastCardLocation(n);while (point == null){point = this.getLastCardLocation(++n);if (n == 10) n = 0;x++;if (x == 10) break out;}card = (PKCard) this.table.get(point);}while (!card.isCardCanMove());while (this.getPreviousCard(card) != null&& this.getPreviousCard(card).isCardCanMove()){ card = this.getPreviousCard(card);}if (a == 10){a = 0;}for (; a < 10; a++){if (a != n){Point p = null;PKCard c = null;do{if (p != null){a++;}p = this.getLastCardLocation(a);int z = 0;while (p == null){p = this.getLastCardLocation(++a);if (a == 10) a = 0;if (a == n) a++;z++;if (z == 10) break out;}c = (PKCard) this.table.get(p);}while (!c.isCardCanMove());if (c.getCardValue() == card.getCardValue() + 1){card.flashCard(card);try{Thread.sleep(800);}catch (InterruptedException e){e.printStackTrace();}c.flashCard(c);a++;if (a == 10){n++;}break out;}}}n++;if (n == 10){n = 0;}x++;if (x == 10){break out;}}}/***返回值:void**方法:游戏运行*/public void deal(){this.setNA();//判断10列中是否空列for (int i = 0; i < 10; i++){if (this.getLastCardLocation(i) == null){JOptionPane.showMessageDialog(this, "有空位不能发牌!", "提示",JOptionPane.W ARNING_MESSAGE);return;}}int x = 20;for (int i = 0; i < 10; i++){Point lastPoint = this.getLastCardLocation(i);//这张牌应“背面向上”if (c == 0){lastPoint.y += 5;}//这张牌应“正面向上”else{lastPoint.y += 20;}table.remove(cards[c + i].getLocation());cards[c + i].moveto(lastPoint);table.put(new Point(lastPoint), cards[c + i]);cards[c + i].turnFront();cards[c + i].setCanMove(true);//将组件card移动到容器中指定的顺序索引。

蜘蛛纸牌课程设计

蜘蛛纸牌课程设计

蜘蛛纸牌课程设计一、课程目标知识目标:1. 学生能理解蜘蛛纸牌游戏的规则与基本策略;2. 学生能运用加减乘除运算,完成纸牌的排序;3. 学生掌握概率的基本概念,并运用到游戏策略中。

技能目标:1. 学生通过蜘蛛纸牌游戏,提高逻辑思维和问题解决能力;2. 学生能够运用所学知识,制定有效的游戏策略;3. 学生在游戏中,锻炼耐心、细心和观察力。

情感态度价值观目标:1. 学生在游戏中体验成功与失败,培养面对挑战的积极态度;2. 学生通过团队合作,学会相互尊重、沟通与协作;3. 学生认识到学习数学的乐趣,激发对数学学科的兴趣。

分析课程性质、学生特点和教学要求,将目标分解为以下具体学习成果:1. 学生能够独立完成蜘蛛纸牌游戏的基本操作;2. 学生能够在规定时间内完成游戏,并达到一定的分数;3. 学生能够总结游戏策略,并与同伴分享;4. 学生在游戏中展现出积极的态度,愿意接受挑战,并从失败中吸取经验;5. 学生在团队中积极参与讨论,乐于帮助他人,共同解决问题。

二、教学内容本章节教学内容围绕蜘蛛纸牌游戏,结合课程目标,选择以下内容:1. 蜘蛛纸牌游戏规则介绍与基本操作:- 游戏界面与纸牌布局;- 纸牌的移动规则;- 游戏的胜利条件。

2. 蜘蛛纸牌游戏策略:- 加减乘除运算在纸牌排序中的应用;- 概率知识在制定策略中的作用;- 逻辑思维与问题解决能力培养。

3. 教学大纲安排:- 第一节课:介绍蜘蛛纸牌游戏规则与基本操作;- 第二节课:讲解加减乘除运算在纸牌排序中的应用;- 第三节课:探讨概率知识在制定游戏策略中的作用;- 第四节课:总结游戏策略,分享经验,进行团队合作。

4. 教材章节及内容:- 第四章:概率与统计;- 第五章:问题解决与逻辑思维。

5. 教学内容进度安排:- 第一节课:完成蜘蛛纸牌游戏规则与基本操作的学习;- 第二节课:掌握加减乘除运算在纸牌排序中的应用;- 第三节课:学会运用概率知识制定游戏策略;- 第四节课:总结经验,进行团队合作,提高问题解决能力。

(完整版)Java毕业课程设计蜘蛛纸牌李娜

(完整版)Java毕业课程设计蜘蛛纸牌李娜

Java课程设计——蜘蛛纸牌游戏1 引言1.1 背景相信很多人都玩过蜘蛛纸牌这款休闲游戏,现在随着生活水平的提高,人们拥有充分的时间来享受休闲游戏带来的快乐,越来越多的人亲睐蜘蛛纸牌游戏。

谈起这款游戏,大家并不陌生。

从WINDOWS2000系统开始,就嵌入了蜘蛛纸牌游戏,可是随着微软系统的不段升级,蜘蛛纸牌游戏的功能业变得越来越强大,游戏的界面也更加美观。

用户的体验感受也更加美好。

所以,蜘蛛纸牌游戏的开发对于人类的生活娱乐更加有意义。

本游戏通过java语言编写,实现了游戏的难度选择、开局、重新发牌以及可视化的相关操作界面。

并通过设计鼠标事件,引入线程,构建游戏程序框架完成了对该游戏的难度选择、开局、发牌、显示可执行操作的各个基本功能。

1.2 目标该游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。

包括如下功能:(a)难度选择:包括简单(单色)、中级(双色)、高级(四色)。

(b)开局:任何时候可以重新开始一盘新的游戏。

(c)发牌。

(d)显示可行操作:提示当前可行操作。

(e)简单的帮助文档:对软件的简单介绍和编制说明。

2 开发工具介绍2.1 java语言概述java是由Sun Microsystems公司于1995年5月推出的java程序设计语言和java平台的总称。

用java实现的浏览器显示它的魅力:跨平台的特点使得它越来越受到许多程序员的亲睐。

java除了可以开发动态的Web 页还可以开发各种系统软件。

java平台由java虚拟机和各种java应用编程接口(简称API)构成。

java应用编程接口为java提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。

在操作系统上安装一个java平台就可以运行任何一个java程序啦。

现在java平台已经几乎嵌入到所有的操作系统中。

这样java程序就可以只编译一次,就可以在各种系统当中运行。

2.2 java语言的特点java语言是一种简单的、面向对象的、分布式的、健壮的、安全的、与平台无关的、多线程、高性能的、动态程序设计语言。

Java课程设计蜘蛛纸牌李娜-推荐下载

Java课程设计蜘蛛纸牌李娜-推荐下载

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线0产中不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资22负料,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看2与全22过,22度并22工且22作尽2下可护1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编5试技写、卷术重电保交要气护底设设装。备备4置管高调、动线中试电作敷资高气,设料中课并3技试资件且、术卷料拒管中试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

课程设计蜘蛛纸牌报告终极修改版

课程设计蜘蛛纸牌报告终极修改版

课程设计蜘蛛纸牌报告终极修改版轻工大学数学与计算机学院 Java 程序设计课程设计报告专业:信息与计算科学班级:信计1402 学号:姓名:徐雄飞指导教师:贾瑜1 课程设计目的与要求课程设计是在学习Java程序设计之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过课程设计在下述各方面得到锻炼:1、能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

2、提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法和程序的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

2 设计内容2、1 蜘蛛纸牌2、1、1 程序基本功能蜘蛛纸牌游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。

包括如下功能:(a)难度选择:包括简单(单色)、中级(双色)、高级(四色)。

(b)开局:任何时候可以重新开始一盘新的游戏。

(c)发牌。

(d)显示可行操作:提示当前可行操作。

(e)简单的帮助文档:对软件的简单介绍和编制说明。

2、1、2 程序设计方案和原理蜘蛛纸牌游戏共由4个部分组成,分别是:Spider、java,SpiderMenuBar、java,PKCard、java,AboutDialog、java,SpiderMenuBar、java包含名为SpiderMenuBar的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中各个组件的事件侦听。

主要包括3个模块:图形用户界面的构建;组件监听接口的实现:显示可执行操作的线程。

PKCard、java。

包含名为PKCard的public类,其主要功能为:定义纸牌的属性,包括名称,位置等相关信息。

蜘蛛纸牌游戏设计 计算机科学与技术(毕业论文)

蜘蛛纸牌游戏设计 计算机科学与技术(毕业论文)

宜宾学院2020届毕业设计(论文)摘要现在社会在进步,人民生活水平也随着提高,人们可以利用多余的时间去体验游戏,从中感受快乐。

目前为止,游戏有很多类型。

例如,动作、冒险、模拟、角色扮演、休闲等类游戏都在迅速发展。

其中,很多人最熟悉的应该就是蜘蛛纸牌游戏了吧。

蜘蛛纸牌游戏是一款休闲益智类游戏,非常受大家的欢迎,随着科学技术的发展科技水平的进步,游戏实现的功能也越来越多,游戏界面也变得越来越好看,玩家的体验感受也越来越好, 让游戏的开发对于人们的生活娱乐更加有意义。

因此,也有越来越多的人亲睐于这款游戏。

这款蜘蛛纸牌游戏我是用Java语言来实现的,其中主要实现了纸牌的移动,发放等。

其设计的灵感主要来自于window7操作系统中的蜘蛛纸牌游戏。

关键词休闲游戏;Java语言;功能实现AbstractNow that society is progressing and people's living standards are improving, people can use the extra time to experience games and feel happy. So far, there are many types of games. For example, action, adventure, simulation, role-playing, leisure and other games are all developing rapidly. Among them, the spider card game should be the most familiar to many people. Spider Solitaire is a casual puzzle game that is very popular with everyone. With the development of science and technology, the level of science and technology has improved, the game has more and more functions, and the game interface has become more and more beautiful The experience experience is getting better and better, making game development more meaningful for people's life and entertainment. Therefore, more and more people love this game.I implemented this spider card game in Java language, which mainly realized the movement and distribution of cards. The inspiration for its design comes mainly from the spider card game in the window7 operating systemKey words the recreational game; java language; function realization目录第1章绪论 (3)1.1 休闲娱乐游戏[1] (3)1.2 游戏的背景 (3)1.3 国内外研究现状[2] (3)1.4 工作内容 (3)1.5 开发语言的简介[3] (4)1.6 开发语言特点[4] (4)1.7 开发工具Eclipse[5] (5)1.8 本游戏开发的意义 (6)第2章需求分析设计 (6)2.1 程序设计的任务概述[6] (6)2.2 系统特点 (6)2.3 功能需求 (7)2.4 界面的设计 (7)2.5 游戏设计主流程分析 (7)2.6 综合要求 (8)2.7 模型[8] (8)2.8 游戏程序需要解决的问题[9] (9)第3章程序的总体设计 (9)3.1 线程的设计 (9)3.1.1 通过Thread类实现 (9)3.1.2 实现Runnable接口 (10)3.2 代码功能的设计 (10)3.3 总体设计流程图 (10)3.4 模块一Spider (11)3.5 模块二SpiderMenuBar (13)3.6 模块三AboutDialog (14)3.7 模块四PKCard (15)第4章程序的详细设计 (6)4.1 程序流程图 (16)4.2 界面设计的实现[10] (17)4.3 等级设置的实现[14] (24)4.4 初始化纸牌以及发牌操作的实现[16] (25)4.5 游戏的运行 (27)4.5.1 纸牌游戏的移动放置操作[18] (28)4.5.2 回收纸牌操作[19] (29)4.5.3 帮助菜单 (29)4.5.4 退出功能 (29)第5章系统测试 (29)5.1 测试方法 (29)5.2 测试用例[20] (30)5.3 测试结果 (30)结论 (36)致谢.......................................................................................................................... 错误!未定义书签。

java扑克牌课程设计

java扑克牌课程设计

java扑克牌课程设计一、课程目标知识目标:1. 学生能理解Java面向对象编程的基本概念,如类、对象、继承、封装等;2. 学生能掌握Java集合框架的使用,如ArrayList、HashMap等;3. 学生能运用Java异常处理机制处理程序异常;4. 学生能运用Java多线程技术开发简单的并发程序。

技能目标:1. 学生能运用所学知识设计并实现一个简单的Java扑克牌游戏;2. 学生能通过编写代码,实现扑克牌的洗牌、发牌、排序等基本功能;3. 学生能运用Java多线程技术实现扑克牌游戏的并发操作;4. 学生能通过调试和优化代码,提高程序的稳定性和性能。

情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,增强学习Java的自信心;2. 学生在小组合作中,培养团队协作能力和沟通表达能力;3. 学生在解决实际问题的过程中,培养分析问题和解决问题的能力,形成积极向上的学习态度;4. 学生通过扑克牌游戏的设计与实现,认识到编程在生活中的广泛应用,激发对科技创新的热情。

二、教学内容1. Java面向对象编程基础:复习类与对象的概念、构造方法、成员变量、成员方法等,重点讲解继承、封装和多态性的应用。

相关教材章节:第3章 类与对象,第4章 继承与多态。

2. Java集合框架:介绍ArrayList、LinkedList、HashMap等常用集合类的使用方法,通过案例演示集合框架在实际编程中的应用。

相关教材章节:第6章 集合框架。

3. Java异常处理:讲解异常的概念、分类,掌握try-catch-finally结构,学会编写健壮的代码处理可能出现的异常。

相关教材章节:第7章 异常处理。

4. Java多线程编程:介绍线程的概念、创建、同步与通信,通过扑克牌游戏案例讲解多线程技术在游戏并发操作中的应用。

相关教材章节:第9章 多线程编程。

5. 扑克牌游戏设计与实现:结合所学知识,设计并实现一个简单的扑克牌游戏,涵盖洗牌、发牌、排序等功能,锻炼学生综合运用Java编程知识解决实际问题的能力。

java蜘蛛纸牌设计报告

java蜘蛛纸牌设计报告

本科学年论文(设计)基于Java的蜘蛛纸牌游戏设计系别信息管理系专业电子信息工程届别2013 班级学生姓名邓晓寒学号2013550514指导教师黄丽蓉职称二O一六年五月摘要随着休闭游戏市场竟争的升级,尤其是樸牌类休闲游戏的巨大市场前景的吸引,许多公司都加入到棋牌游戏的竞争之列,一时之间竟争可谓惨烈传统的休闲棋牌类游游戏中,微软公司出品的躥N以鬲系列多个版本作系统中所自帚的蜘蛛紙牌游戏是玩家最为熟知的“蜘蛛纸牌,游戏是典型的两副牌游戏,游戏的目标是以最少的移动次数将十叠牌中所有最前面的牌都移走。

Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称本课题将采用Java语言编写这个蜘蛛纸牌游戏程序并采用eclipse3.2编译软件来编译该游戏程序。

【关键词】:休闲游戏,Java语言,编译软件AbstractBecausetherecreationalgamemarketcompeteOfgetstripe,particularlytheattraction Ofthehugemarketforegroundofthechesscardrecreationalgame,manycompaniesalljointh erowofthecompetitionOfchesscardgame,thatisatthattimethecompetitionbeitmaysaidhor rifying.Traditionalrecreationalchesscardswimsgamem,theMicrosoftcompanyproduceo fWINDOWSseriesseveraleditionoperatesystemsinfromtakeofthespiderplayingcardsga mebethattheplayeristhemostwellknow."Spiderplayingcards"gametwotypicalcardgames ,thetargetofgamewiththeminimalambulationnumberoftimeswilltenfoldallrmstanteriorc ardsincardtomove№walkThegenericnameofthelanguageandJavaterraceoftheJavaprogr amdesignthattheJavareleasedMayin1995bythecompanyofSunMicrosystems.Thistopic willadoptJavalanguagetowritethisgameprocedureofthespiderplayingcardscombineadop tioneclipse3.2editandtranslatesoftwaretoeditandtranslatethatgameprocedure. Keywords:Therecreationalgame,theJavalanguage,editsandtranslatesoftware目录第1章国内外现状 (1)第2章开发工具简介 (1)第3章游戏程序设计需求分析 (2)第4章 (4)4.1主要界面的实现 (4)4.2初始化纸牌及发牌操作: (8)4.3纸牌移动放置操作: (14)4.4回收纸牌操作: (15)4.5帮助菜单功能的实现: (16)4.6退出功能的实现: (17)5.调试验证运行情况 (17)6.设计总结 (22)第1章前言1.1国内外现状随着休闲游戏市场竞争的升级,尤其是棋牌类休闲游戏的巨大市场前景的吸引,许多公司都加入到棋牌游戏的竞争之列,一时之间竞争可谓惨烈。

蜘蛛纸牌游戏

蜘蛛纸牌游戏
}
8
});
//“重新发牌” jItemPlayAgain.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { if(main.getC() < 60){ main.deal(); }
一、设计(调查报告/论文)题目 蜘蛛纸牌游戏软件设计与实现
二、设计(调查报告/论文)主要内容 内容: 卡牌由扑克牌 A-K 13 个种组成,完成游戏通过鼠标操作,将电脑多次分发的纸牌,
按照相同花色由大到小排列起来,直到纸牌全部消失,即为胜利。 基本功能与要求: 1 游戏界面的布局以及纸牌的设定 2 能够设定不同等级以实现游戏难易度的不同 3 实现游戏主功能、帮助功能、退出功能 4 用 JAVA 实现蜘蛛纸牌的主要功能模块。 5 难度选择:分为简单、中级和高级。
六、主要参考资料 [1] 张广彬. Java 课程设计案例精编(第二版).北京:清华大学出版社, 2011. [2] 耿祥义. Java 课程设计(第二版).北京:清华大学出版社, 2008. [3] 耿祥义.JAVA 大学实用教程.北京:清华大学出版社,2009. [4] 邹林达.陈国君 Java2 程序设计基础.北京:清华大学出版社,2010. [5] 邹林达.Java2 程序设计基础实验指导.北京:清华大学,2010.
《 面向对象程序设计》 课程设计报告
题 目: 蜘蛛纸牌游戏软件设计与实现
院 (系):
信息科学与工程学院
专业班级: 计算机科学与技术 1201 班
学生姓名:
程伟ห้องสมุดไป่ตู้

java课程设计-扑克游戏

java课程设计-扑克游戏

pane.setComponentZOrder(groundLabel[i], 105 + i);}}2.3功能模块图图1 功能模块图2.4程序流程图图2 程序流程图3.设计结果与分析(1)首先是对游戏中主菜单的设计,设计的菜单包括两个大部分,选项和帮助,如图3所示:图3 显示菜单通过如下代码实现:JMenu jNewGame = new JMenu("选项");JMenu jHelp = new JMenu("帮助");(2)在选项菜单下面包含7级子菜单,如图4所示:图4 显示菜单通过如下代码实现:JMenuItem jItemOpen = new JMenuItem("开局");JMenuItem jItemPlayAgain = new JMenuItem("重发牌");JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem("简单");JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem("较难");JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem("困难");;JMenuItem jItemExit = new JMenuItem("退出");JMenuItem jItemValid = new JMenuItem("显示可执行行操作");(3)帮助下面包含2级子菜单,分别为游戏规则和声明,如图5所示:图5 显示帮助通过如下代码实现:JTabbedPane jTabbedPane = new JTabbedPane();private JPanel jPanel1 = new JPanel();private JPanel jPanel2 = new JPanel();(4)主窗体通过类Spider实现。

基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计

基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计

佛山科学技术学院《可视化编程技术》课程设计报告基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计学生姓名:符彩玉学号:20140910132年级专业:14级教育技术学1班指导老师:容汝佳学院:人文与教育学院广东★佛山提交日期:2016年12月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 蜘蛛纸牌功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 处理按了运算符后的计算 (5)3.2.2 处理输入字符 (6)3.2.3 进制的转换 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 程序异常处理 (9)6. 源程序 (9)参考文献 (25)设计总结 (25)摘要:本程序是通过java语言编写的一个知蜘蛛纸牌游戏,实现了游戏的难度选择、开局、重新发牌以及可视化的相关操作界面。

并通过设计鼠标事件,引入线程,构建游戏程序框架完成了对该游戏的难度选择、开局、发牌、显示可执行操作的各个基本功能,具有非常强大的娱乐性。

关键字:java、蜘蛛纸牌、方法、事件、操作界面1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的蜘蛛纸牌,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。

Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。

java课程设计走迷宫报告

java课程设计走迷宫报告

java课程设计走迷宫报告一、教学目标本节课的教学目标是让学生掌握Java编程的基本语法和流程控制,学会使用Java编写简单的程序,培养学生的编程思维和解决问题的能力。

具体包括以下三个方面的目标:1.知识目标:使学生了解Java编程语言的基本语法、数据类型、变量、运算符、流程控制语句等基本概念。

2.技能目标:培养学生能够使用Java编写简单的程序,如计算器、猜数字游戏等,提高学生的编程实践能力。

3.情感态度价值观目标:培养学生对编程的兴趣,激发学生的创新意识,培养学生的团队合作精神和自主学习能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java编程语言的基本语法和数据类型。

2.变量的声明、赋值和类型转换。

3.运算符的使用和运算规则。

4.流程控制语句(条件语句、循环语句)的编写和运用。

5.实例分析:编写简单的Java程序,如计算器、猜数字游戏等。

三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:讲解Java编程语言的基本语法、数据类型、变量、运算符、流程控制语句等概念。

2.案例分析法:分析实例程序,使学生了解如何使用Java编写简单的程序。

3.实验法:让学生动手编写Java程序,培养学生的编程实践能力。

4.讨论法:学生进行小组讨论,分享学习心得,提高学生的团队合作精神。

四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的Java编程参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,直观地展示Java编程的概念和实例。

4.实验设备:为学生提供电脑、编程环境等实验设备,方便学生进行编程实践。

五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。

具体包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答、小组讨论等,以考察学生的学习态度和积极性。

Java课程设计报告—蜘蛛纸牌

Java课程设计报告—蜘蛛纸牌

面向对象程序设计课程设计报告JA V A程序设计课程设计之蜘蛛纸牌.学院:年级:`班级:指导老师:小组成员:!时间:\目录第一章课程设计要求......................................... 错误!未定义书签。

题目名称 ................................................. 错误!未定义书签。

题目类型 ................................................. 错误!未定义书签。

课程设计目的.............................................. 错误!未定义书签。

实验原理 ................................................. 错误!未定义书签。

实验内容 ................................................. 错误!未定义书签。

第二章设计概要............................................. 错误!未定义书签。

《功能设计 ............................................... 错误!未定义书签。

程序流程 ............................................... 错误!未定义书签。

功能分析 ................................................. 错误!未定义书签。

1. 主要界面:........................................ 错误!未定义书签。

2初始化纸牌及发牌操作:............................. 错误!未定义书签。

3纸牌移动放置操作:................................. 错误!未定义书签。

JAVA课程设计蜘蛛纸牌以及ATM模拟柜台无需修改程序实验报告

JAVA课程设计蜘蛛纸牌以及ATM模拟柜台无需修改程序实验报告

Java课程设计实验报告专业:信息与计算机科学姓名:吕奇学号:1412010042班级:信计1402班指导老师:贾瑜完成时间:2016年6月22日目录目录 (2)蜘蛛纸牌 (3)1.概述 (3)1.1课程设计的目的 (3)1.2课程设计的内容与要求 (3)1.3课程设计的环境 (3)1.4课程设计的功能模块 (3)1.4.1程序的UML图 (3)1.4.2程序的源代码 (6)1.4.3程序的截图 (30)1.5课程设计问题与小结 (30)ATM柜员机模拟程序 (31)1.1课程设计的目的 (31)1.2课程设计的内容与要求 (31)1.3课程设计的环境 (31)1.4课程设计的功能模块 (32)1.4.1程序的UML图 (32)1.4.2程序的源代码 (33)1.4.3程序的截图 (46)1.5课程设计问题与小结 (48)蜘蛛纸牌游戏1.概述1.1 课程设计的目的1.1.1加深对《Java语言与面向对象技术》课程基础知识的理解,掌握Java语言面向对象程序设计的开发方法和步骤;1.1.2进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力;1.1.3课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。

加强学生研发、编写、调试程序的能力;1.1.4培养学生在项目开发中团队合作精神、创新意识及能力;1.1.5提高学生科技论文写作能力,规范完成课程设计报告。

1.2课程设计的内容与要求1.2.1该程序是由四个子程序组成的,Spider.java,SpiderMenuBar.java,PKcard.java,AboutDialog.java和相关图片组成的一个窗口游戏。

1.2.2 该程序为一个窗口游戏,上方为一排牌,相互可以按K到A的顺序堆叠后则将牌放到左下角,当无牌排序时,右下方的牌继续排序,直到所有的牌牌好为止。

1.2.3该程序分为三个级别:初级:单花色,中级:双花色,高级:四花色,上方有个菜单栏显示各个操作,以及关于和帮助。

蜘蛛纸牌c语言课程设计

蜘蛛纸牌c语言课程设计

蜘蛛纸牌c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和结构,特别是数组、循环和条件语句的使用。

2. 借助蜘蛛纸牌游戏案例,让学生理解并应用面向过程的编程思想,培养问题分析及解决能力。

3. 让学生掌握利用C语言进行简单的数据结构和算法设计。

技能目标:1. 培养学生运用C语言编写程序的能力,特别是针对蜘蛛纸牌这类逻辑性较强的游戏。

2. 通过课程实践,提高学生调试和优化程序的能力,确保程序的稳定性和高效性。

3. 培养学生在团队协作中有效沟通和共同解决问题的能力。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动探究和创新的意识。

2. 培养学生面对困难时的耐心和毅力,增强克服问题的信心。

3. 引导学生认识到编程在生活中的应用价值,树立正确的科技观念。

课程性质分析:本课程为C语言程序设计实践课程,通过蜘蛛纸牌游戏案例,将理论知识与实际应用紧密结合,提高学生的编程技能。

学生特点分析:学生处于具备一定编程基础知识的年级,对新鲜事物充满好奇心,但个体差异较大,需要针对不同层次的学生设计不同难度的教学活动。

教学要求:1. 注重理论与实践相结合,强调动手实践能力。

2. 以学生为主体,关注个体差异,实施差异化教学。

3. 创设真实问题情境,引导学生主动探究,培养解决问题的能力。

二、教学内容1. C语言基础知识复习:数组、循环、条件语句、函数。

2. 蜘蛛纸牌游戏规则介绍及逻辑分析。

3. C语言实现蜘蛛纸牌游戏的步骤分解:a. 游戏界面设计及数据结构定义。

b. 游戏初始化及牌堆、牌桌管理。

c. 玩家操作及游戏逻辑处理。

d. 游戏结束条件判断及胜负判定。

4. 程序调试与优化技巧。

5. 团队协作与项目管理。

教学内容安排和进度:第1周:C语言基础知识复习,介绍蜘蛛纸牌游戏规则。

第2-3周:分析蜘蛛纸牌游戏逻辑,讲解游戏实现步骤。

第4周:分组讨论,制定编程计划,分工合作。

第5-6周:编写程序,实现蜘蛛纸牌游戏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉轻工大学数学与计算机学院Java 程序设计课程设计报告专业:信息与计算科学班级:信计1402学号:***********名:***指导教师:**1 课程设计目的与要求课程设计是在学习Java程序设计之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过课程设计在下述各方面得到锻炼:1、能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

2、提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法和程序的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

2 设计内容2.1 蜘蛛纸牌2.1.1 程序基本功能蜘蛛纸牌游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。

包括如下功能:(a)难度选择:包括简单(单色)、中级(双色)、高级(四色)。

(b)开局:任何时候可以重新开始一盘新的游戏。

(c)发牌。

(d)显示可行操作:提示当前可行操作。

(e)简单的帮助文档:对软件的简单介绍和编制说明。

2.1.2 程序设计方案和原理蜘蛛纸牌游戏共由4个部分组成,分别是:Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java,SpiderMenuBar.java包含名为SpiderMenuBa r的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中各个组件的事件侦听。

主要包括3个模块:图形用户界面的构建;组件监听接口的实现:显示可执行操作的线程。

PKCard.java。

包含名为PKCard的public类,其主要功能为:定义纸牌的属性,包括名称,位置等相关信息。

并通过相关方法实现纸牌的移动等。

AboutDialog.java 。

包含名为AboutDialog的public类,其主要功能为生成蜘蛛纸牌游戏的帮助栏。

Spider.java 。

包含名为Spider的public类,其主要功能为生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括:纸牌的随机生成,位置的摆放等。

程序流程图2.1.3 程序的代码实现SpiderMenuBar.javaSpiderMenuBar.java的作用是生成蜘蛛游戏的菜单,实现菜单栏中各个组件的事件倾听。

其代码如下:import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JRadioButtonMenuItem;import javax.swing.ButtonGroup;public class SpiderMenuBar extends JMenuBar{//生成spider框架对象Spider main = null;//生成菜单组JMenu jNewGame = new JMenu("游戏");JMenu jHelp = new JMenu("帮助");//生成菜单项JMenuItem jItemAbout = new JMenuItem("关于");JMenuItem jItemOpen = new JMenuItem("开局");JMenuItem jItemPlayAgain = new JMenuItem("重新发牌");//生成单选框JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem("简单:单一花色"); JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem("中级:双花色"); JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem("高级:四花色");; JMenuItem jItemExit = new JMenuItem("退出");JMenuItem jItemValid = new JMenuItem("显示可行操作");/****构造函数,生成JMenuBar的图形界面*/public SpiderMenuBar(Spider spider){this.main = spider;/****初始化“游戏”菜单栏*/jNewGame.add(jItemOpen);jNewGame.add(jItemPlayAgain);jNewGame.add(jItemValid);jNewGame.addSeparator();jNewGame.add(jRMItemEasy);jNewGame.add(jRMItemNormal);jNewGame.add(jRMItemHard);jNewGame.addSeparator();jNewGame.add(jItemExit);ButtonGroup group = new ButtonGroup();group.add(jRMItemEasy);group.add(jRMItemNormal);group.add(jRMItemHard);jHelp.add(jItemAbout);this.add(jNewGame);this.add(jHelp);//为组件添加事件监听并实现//“开局”jItemOpen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { main.newGame();}});//“重新发牌”jItemPlayAgain.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(main.getC() < 60){main.deal();}}});//"显示可行操作"jItemValid.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { new Show().start();}});//“退出”jItemExit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { main.dispose();System.exit(0);}});//“简单级别”默认已选jRMItemEasy.setSelected(true);//“简单级别”jRMItemEasy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { main.setGrade(Spider.EASY);main.initCards();main.newGame();}});//“中级”jRMItemNormal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { main.setGrade(Spider.NATURAL);main.initCards();main.newGame();}});//“高级”jRMItemHard.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { main.setGrade(Spider.HARD);main.initCards();main.newGame();}});jNewGame.addMenuListener(new javax.swing.event.MenuListener() {public void menuSelected(javax.swing.event.MenuEvent e) {if(main.getC() < 60){jItemPlayAgain.setEnabled(true);}else{jItemPlayAgain.setEnabled(false);}}public void menuDeselected(javax.swing.event.MenuEvent e) {}public void menuCanceled(javax.swing.event.MenuEvent e) {}});//“关于”jItemAbout.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {new AboutDialog();}});}/****构造线程:显示可以执行的操作*/class Show extends Thread{public void run(){main.showEnableOperator();}}}PKCard.javaPKCard,java的作用是定义纸牌的属性,包括名称,位置等相关信息。

并通过相关方法实现了纸牌的移动等。

其代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PKCard extends JLabel implements MouseListener,MouseMotionListener{//纸牌的位置Point point = null;Point initPoint = null;int value = 0;int type = 0;String name = null;Container pane = null;Spider main = null;boolean canMove = false;boolean isFront = false;PKCard previousCard = null;public void mouseClicked(MouseEvent arg0){}public void flashCard(PKCard card){//启动Flash线程new Flash(card).start();//不停的获得下一张牌,直到完成if(main.getNextCard(card) != null){card.flashCard(main.getNextCard(card));}}class Flash extends Thread{private PKCard card = null;public Flash(PKCard card){this.card = card;}/***线程的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);}catch (InterruptedException e){e.printStackTrace();}if (is){this.card.turnFront();is = !is;}else{this.card.setIcon(icon);is = !is;}// 根据当前外观将card的UI属性重置card.updateUI();}}}/****点击鼠标*/public void mousePressed(MouseEvent mp){point = mp.getPoint();main.setNA();this.previousCard = main.getPreviousCard(this);}/****释放鼠标*/public void mouseReleased(MouseEvent mr){Point point = ((JLabel) mr.getSource()).getLocation();//判断可行列int n = this.whichColumnAvailable(point);if (n == -1 || n == this.whichColumnAvailable(this.initPoint)){ this.setNextCardLocation(null);main.table.remove(this.getLocation());this.setLocation(this.initPoint);main.table.put(this.initPoint, this);return;}point = main.getLastCardLocation(n);boolean isEmpty = false;PKCard card = null;if (point == null){point = main.getGroundLabelLocation(n);isEmpty = true;}else{card = (PKCard) main.table.get(point);}if (isEmpty || (this.value + 1 == card.getCardV alue())){ point.y += 40;if (isEmpty) point.y -= 20;this.setNextCardLocation(point);main.table.remove(this.getLocation());point.y -= 20;this.setLocation(point);main.table.put(point, this);this.initPoint = point;if (this.previousCard != null){this.previousCard.turnFront();this.previousCard.setCanMove(true);}this.setCanMove(true);}else{this.setNextCardLocation(null);main.table.remove(this.getLocation());this.setLocation(this.initPoint);main.table.put(this.initPoint, this);return;}point = main.getLastCardLocation(n);card = (PKCard) main.table.get(point);if (card.getCardValue() == 1){point.y -= 240;card = (PKCard) main.table.get(point);if (card != null && card.isCardCanMove()){main.haveFinish(n);}}}/***方法:放置纸牌*/public void setNextCardLocation(Point point){ PKCard card = main.getNextCard(this);if (card != null){if (point == null){card.setNextCardLocation(null);main.table.remove(card.getLocation());card.setLocation(card.initPoint);main.table.put(card.initPoint, card);}else{point = new Point(point);point.y += 20;card.setNextCardLocation(point);point.y -= 20;main.table.remove(card.getLocation());card.setLocation(point);main.table.put(card.getLocation(), card);card.initPoint = card.getLocation();}}}/****返回值:int**方法:判断可用列*/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 = main.getLastCardLocation(a);if (p == null) p = main.getGroundLabelLocation(a);b = y - p.y;if (b <= -96 || b >= 96){a = -1;}}return a;}public void mouseEntered(MouseEvent arg0){}public void mouseExited(MouseEvent arg0){}/****用鼠标拖动纸牌*/public void mouseDragged(MouseEvent arg0){if (canMove){int x = 0;int y = 0;Point p = arg0.getPoint();x = p.x - point.x;y = p.y - point.y;this.moving(x, y);}}/****返回值:void**方法:移动(x,y)个位置*/public void moving(int x, int y){PKCard card = main.getNextCard(this);Point p = this.getLocation();//将组件移动到容器中指定的顺序索引。

相关文档
最新文档