Java课程设计——蜘蛛纸牌游戏

上传人:hs****ma 文档编号:464839476 上传时间:2022-08-07 格式:DOC 页数:34 大小:609.64KB
返回 下载 相关 举报
Java课程设计——蜘蛛纸牌游戏_第1页
第1页 / 共34页
Java课程设计——蜘蛛纸牌游戏_第2页
第2页 / 共34页
Java课程设计——蜘蛛纸牌游戏_第3页
第3页 / 共34页
Java课程设计——蜘蛛纸牌游戏_第4页
第4页 / 共34页
Java课程设计——蜘蛛纸牌游戏_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《Java课程设计——蜘蛛纸牌游戏》由会员分享,可在线阅读,更多相关《Java课程设计——蜘蛛纸牌游戏(34页珍藏版)》请在金锄头文库上搜索。

1、Java课程设计蜘蛛纸牌游戏(陈浩 数学与应用数学专业091班)摘要本游戏通过java语言编写,实现了游戏的难度选择、开局、重新发牌以及可视化的相关操作界面。并通过设计鼠标事件,引入线程,构建游戏程序框架完成了对该游戏的难度选择、开局、发牌、显示可执行操作的各个基本功能。关键词蜘蛛纸牌 java语言 操作界面 1. 问题重述该游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。包括如下功能:a.难度选择:包括简单(单色)、中级(双色)、高级(四色)。b.开局:任何时候可以重新开始一盘新的游戏。c.发牌。d.显示可行操作:提示当前可行操作。

2、e.简单的帮助文档:对软件的简单介绍和编制说明。2.理论分析 参照windows游戏蜘蛛纸牌,自己编写设计实现其功能,它具有如下一些功能: a.设计一个游戏界面,包括玩牌区、发牌区和回收区。 b.纸牌以及其背景的设定。 C.移动纸牌。使用鼠标将较小的纸牌拖放到较大的纸牌下方,可以拖动一组纸牌,当要求这组纸牌是同一个花色,并且这一组纸牌从上到下是从大到小排列的,且不间断。 d.回收纸牌。当某列出现同一花色,从上到下依次是从K到A的不间组合时,这组纸牌将被回收到回收区中。 e.发牌。用鼠标单击发牌区,若发牌区还有剩余的纸牌,则将发出一叠纸牌共10张,依次添加到玩牌区的10列纸牌最下方,但要求这10

3、列纸牌没有空白列。 f.若玩家不了解游戏规则可以点击帮助获得游戏方法。 g.级别设定。点击“游戏”菜单中选取游戏难以级别,有3种级别,分别对应初级、中级、高级。 h.退出游戏。3.模型该游戏可分为以下各项功能: a.Spider.java 用于实现纸牌初始化、设置游戏等级以及异常处理。 b.PKCard.java用于定义纸牌的显示的各种属性以及鼠标事件的相应属性。c.SpiderMenu.java用于添加游戏下拉菜单的各个选项,包含图形用户界面的构建,组件监听的实现,以及显示可执行操作的线程。d.SpiderMenu.class生成Spider.class,AboutDialog.class和

4、PKCard.class4.程序流程图5.程序设计技术文档编写程序以实现游戏蜘蛛纸牌的功能。1、设计游戏界面。2、纸牌以及其背景的设定。3、移动纸牌。4、回收纸牌。5、发牌。6、若玩家不了解游戏规则可以点击帮助获得游戏方法。7、级别设定。8、退出游戏。该游戏的开发及相关功能的实现需要在Eclipse下建立java project,同时编写Spider.java、PKCard.java、SpiderMenu.java、AboutDialog.class,另外将纸牌的图片文件保存在images文件夹中。6.程序使用说明6.1 主要界面:以下是主菜单界面的主要代码:JMenu jNewGame =

5、new JMenu(游戏);JMenu jHelp = new JMenu(帮助);JMenuItem jItemAbout = new JMenuItem(关于);JMenuItem jItemOpen = new JMenuItem(开始新游戏);JMenuItem jItemDeal = new JMenuItem(发牌);JMenuItem jItemExit = new JMenuItem(退出);JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem(初级:单花色);/菜单中的可选项按钮JRadioButtonMenu

6、Item jRMItemNormal = new JRadioButtonMenuItem(中级:双花色);JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem(高级:四花色);public SpiderMenuBar(Spider spider) this.main = spider;jNewGame.add(jItemOpen);jNewGame.add(jItemDeal);jNewGame.addSeparator();/添加划分线jNewGame.add(jRMItemEasy);jNewGame.add(jRMIte

7、mNormal);jNewGame.add(jRMItemHard);jNewGame.addSeparator();jNewGame.add(jItemExit);ButtonGroup group = new ButtonGroup();/(用来获取JRadioButtonMenuItem 的值)group.add(jRMItemEasy);group.add(jRMItemNormal);group.add(jRMItemHard);jHelp.add(jItemAbout);this.add(jNewGame);this.add(jHelp);/添加到菜单栏以下是游戏窗口界面初始化的主

8、要代码:pane = this.getContentPane(); / 获得容器pane.setBackground(new Color(0, 112, 26);/ 设置背景颜色clickLabel = new JLabel(); / 发牌区的鼠标点击响应区域clickLabel.setBounds(890, 580, 110, 96); / 设置响应区域大小与坐标clickLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED);pane.add(c

9、lickLabel); / 将响应区域添加到容器中this.initCards();/ 纸牌初始化this.randomCards();/ 随机分配纸牌this.setCardsLocation();/ 为纸牌设置坐标位置this.deal(); / 从右下角发出一叠纸牌。游戏刚开始时,需要先发出一叠纸牌。groundLabel = new JLabel10;/ 创建背景框数组,一共有10个背景框。int x = 20;/ 背景框的x坐标,10个背景框是并排放置的,y坐标相等。第一个背景框的x坐标为20。for (int i = 0; i 10; i+) / 循环创建背景框,并设置其坐标大小等

10、属性groundLabeli = new JLabel();/ 创建背景框groundLabeli.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED);/ 为Label设置边框/ ,/ 形成背景框groundLabeli.setBounds(x, 25, 71, 96);/ 设置背景框的大小与坐标x += 101; / 相邻的背景框的x坐标差值为101。this.pane.add(groundLabeli);/ 将背景框添加到容器中this.setVisib

11、le(true);/ 显示窗口6.2初始化纸牌及发牌操作: 初始化纸牌的主要代码(包括所有纸牌生成及存入数组,右下角发牌区纸牌初始化以及表面显示纸牌初始化): 所有纸牌的生成及存入数组代码:public void initCards() / 如果纸牌已被赋值,即将其从框架的面板中移去if (cards0 != null) for (int i = 0; i 104; i+) pane.remove(cardsi);int n = 0;/ 通过难度等级,为n赋值if (this.grade = Spider.EASY) n = 1; else if (this.grade = Spider.NA

12、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);/当n为1时,i%8的值永远是0,所以i%8+1的值永远是1,因此n为1时,创建的card的名称是1/ -1到1-13,全是黑桃。其他等级类似。 /纸牌随机分配public void randomCards() / 将纸牌的顺序打乱,否则牌号的将是从A到K的出现规律PKCard temp =

13、null;/ 随机生成牌号for (int i = 0; i 52; i+) int a = (int) (Math.random() * 104);int b = (int) (Math.random() * 104);temp = cardsa;cardsa = cardsb;cardsb = temp;右下角发牌区纸牌的初始化代码:int x = 883;/ 将坐标定位到右下角发牌区int y = 580;for (int i = 0; i 6; i+) / 初始化右下角发牌区的纸牌,共6叠for (int j = 0; j 5; i-) / 初始化玩牌区的纸牌,共5行for (int j = 0; j 10; j+) / 共10列int n =

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

当前位置:首页 > 学术论文 > 其它学术论文

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