ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:346.08KB ,
资源ID:7263735      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7263735.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA课程设计扑克游戏.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA课程设计扑克游戏.docx

1、JAVA课程设计扑克游戏课程设计说明书 NO.1扑克游戏1.课程设计的目的Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,使我们能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与

2、手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。本设计使用JAVA语言开发扑克游戏程序,将电脑多次分发给你的牌按照相同的花色由大至小排列起来。2.设计方案论证2.1设计思路 用java语言,编程实现纸牌游戏,拥有如下规则,将电脑多次分发给你的牌按照相同的花色由大至小排列起来。游戏分为三个难度,简单,普通,困难。简单为单一花色。困难所分发给的牌有四种花色。将大小相邻的纸牌依次排列到一起当每种花色的全部纸牌都按顺序排列到一起,则游戏结束。2.2设计方法将程序设计成为4个类,AboutDialog类用于实现全部的对话。

3、PKCard类用于实现游戏的规则。SpiderMenuBar类用于实现各个模块的功能。Spider为主界面。在SpiderMenuBar建立主界面菜单,通过构造函数public SpiderMenuBar构造函数,生成JMenuBar的图形界面,对菜单中各按钮进行事件监听。在该方法中调用spider的构造方法,在其中生成SpiderMenuBar对象,并放置在框架之上,同时设置框架标题 沈 阳 大 学课程设计说明书 NO.2框架大小背景颜色,布局为空。public Spider() setTitle(陶时扑克); setDefaultCloseOperation(javax.swing.JFr

4、ame.EXIT_ON_CLOSE); setSize(1024, 742); setJMenuBar(new SpiderMenuBar(this); pane = this.getContentPane(); pane.setBackground(new Color(14, 25, 26); pane.setLayout(null); clickLabel = new JLabel(); clickLabel.setBounds(883, 606, 121, 96); pane.add(clickLabel);在Spider类中有如下方法:newGame新游戏的方法,setGrade设置等

5、级方法,初始化等级方法。setGrade,randomCards随即函数。PKCard getPreviousCard获得card上面的那张牌的方法等。由PKCard getPreviousCard,PKCard getNextCard,getLastCardLocation方法对类PKCard调用,代码如下:public PKCard getPreviousCard(PKCard card) Point point = new Point(card.getLocation(); point.y -= 5; card = (PKCard) table.get(point); if (card

6、!= null) return card; point.y -= 15; card = (PKCard) table.get(point); 沈 阳 大 学课程设计说明书 NO.3 return card;public PKCard getNextCard(PKCard card) Point point = new Point(card.getLocation(); point.y += 5;card = (PKCard) table.get(point); if (card != null) return card; point.y += 15; card = (PKCard) table

7、.get(point); return card;public Point getLastCardLocation(int column) Point point = new Point(20 + column * 101, 25); PKCard card = (PKCard) this.table.get(point); if (card = null) return null; while (card != null) point = card.getLocation(); card = this.getNextCard(card); return point;public Point

8、getGroundLabelLocation(int column) return new Point(groundLabelcolumn.getLocation();public void setGroundLabelZOrder() for (int i = 0; i 10; i+) 沈 阳 大 学课程设计说明书 NO.4pane.setComponentZOrder(groundLabeli, 105 + i); 23功能模块图 图1 功能模块图 沈 阳 大 学课程设计说明书 NO.52.4程序流程图图2 程序流程图3.设计结果与分析(1)首先是对游戏中主菜单的设计,设计的菜单包括两个大

9、部分,选项和帮助,如图3所示: 沈 阳 大 学课程设计说明书 NO.6图3 显示菜单通过如下代码实现:JMenu jNewGame = new JMenu(选项); JMenu jHelp = new JMenu(帮助);(2)在选项菜单下面包含7级子菜单,如图4所示:图4 显示菜单 沈 阳 大 学课程设计说明书 NO.7通过如下代码实现:JMenuItem jItemOpen = new JMenuItem(开局);JMenuItem jItemPlayAgain = new JMenuItem(重发牌);JRadioButtonMenuItem jRMItemEasy = new JRad

10、ioButtonMenuItem(简单);JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem(较难);JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem(困难);JMenuItem jItemExit = new JMenuItem(退出);JMenuItem jItemValid = new JMenuItem(显示可执行行操作);(3)帮助下面包含2级子菜单,分别为游戏规则和声明,如图5所示:图5 显示帮助通过如下代码实现:JTabbedPane jT

11、abbedPane = new JTabbedPane();private JPanel jPanel1 = new JPanel();private JPanel jPanel2 = new JPanel();(4)主窗体通过类Spider实现。将窗体名称设置为“陶时扑克”,框架的大小设置为1024*742,背景颜色设置为黑色,布局管理设置为空,通过如下代码实现: 沈 阳 大 学课程设计说明书 NO.8public Spider()setTitle(陶时扑克);setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);setSize

12、(1024, 742);setJMenuBar(new SpiderMenuBar(this); pane = this.getContentPane(); pane.setBackground(new Color(14, 25, 26); pane.setLayout(null);(5)进入游戏之后,首先选择开始新游戏,通过类Spider调用它的方法newGame方法,采用随机函数随机初始化牌的顺序(这样做的目的是,使游戏性增加可玩性,使每次出现牌的顺序不同),如图6所示。图6 进入新游戏界面用如下代码实现:public void newGame() this.randomCards();

13、this.setCardsLocation();this.setGroundLabelZOrder();this.deal(); public int getC() return c; public void setGrade(int grade) this.grade = grade; public void initCards() if (cards0 != null) for (int i = 0; i 104; i+) pane.remove(cardsi); int n = 0; if (this.grade = Spider.EASY) n = 1; else if (this.g

14、rade = Spider.NATURAL) n = 2; else n = 4; for (int i = 1; i = 8; i+) 沈 阳 大 学课程设计说明书 NO.9for (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

15、() * 104); int b = (int) (Math.random() * 104); temp = cardsa; cardsa = cardsb; cardsb = temp; (6)在游戏界面的右下角做一张图片,显示扑克牌的背面,同时点击图片,系统自动发牌(当游戏无法继续的时候,可以点击该图片,在每副纸牌上发一张牌,使得进入僵局的纸牌游戏得以继续进行),运行界面如图7,图8所示。 沈 阳 大 学课程设计说明书 NO.10图7 发牌功能界面图8 显示发牌 沈 阳 大 学课程设计说明书 NO.11用如下代码实现:首先在界面上添加纸牌背面的图片:public void turnRear

16、() this.setIcon(new ImageIcon(images/6.gif); this.isFront = false; this.canMove = false;public PKCard getPreviousCard(PKCard card) Point point = new Point(card.getLocation(); point.y -= 5; card = (PKCard) table.get(point); if (card != null) return card; point.y -= 15; card = (PKCard) table.get(point

17、);return card; public PKCard getNextCard(PKCard card) Point point = new Point(card.getLocation(); point.y += 5; card = (PKCard) table.get(point); if (card != null) return card; point.y += 15; card = (PKCard) table.get(point); return card; 沈 阳 大 学课程设计说明书 NO.12 public Point getLastCardLocation(int col

18、umn) Point point = new Point(20 + column * 101, 25); PKCard card = (PKCard) this.table.get(point); if (card = null) return null; while (card != null) point = card.getLocation(); card = this.getNextCard(card); return point; public Point getGroundLabelLocation(int column) return new Point(groundLabelc

19、olumn.getLocation(); public void setGroundLabelZOrder() for (int i = 0; i 10; i+) pane.setComponentZOrder(groundLabeli, 105 + i); (7)在游戏中每次开始游戏都由程序随机发牌,发牌的过程是,先设置纸牌的初始位置由随机函数产生,并随机生成牌号,设置纸牌的位置,初始化待展开的纸牌,将纸牌放置到固定位置(这里调用PKcard类中的setNextCardLocation方法调用图片文件夹里的纸牌图片),如图9,图10所示。 沈 阳 大 学课程设计说明书 NO.13图9 图片库

20、图10 图片被载入 沈 阳 大 学课程设计说明书 NO.14使用如下代码实现:for (int i = 0; i 6; i+) for (int j = 0; j 5; i-) for (int j = 0; j = 104) continue;pane.add(cardsn); cardsn.turnRear(); cardsn.moveto(new Point(x, y); table.put(new Point(x, y), cardsn); x += 101; x = 20; y -= 5; 沈 阳 大 学课程设计说明书 NO.15public void showEnableOpera

21、tor() 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.isCar

22、dCanMove(); 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) 沈 阳 大 学课程设计说明书 NO.16Point p = null; PKCard c = null; do if (p != null) a+; p = this.getLastCardLocation(a); int z = 0; wh

23、ile (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.printS

24、tackTrace(); c.flashCard(c); 沈 阳 大 学课程设计说明书 NO.17a+; if (a = 10) n+; break out; n+; if (n = 10) n = 0; x+; if (x = 10) break out; 通过调用如下代码实现图片的调用:public void setNextCardLocation(Point point) PKCard card = main.getNextCard(this); if (card != null) if (point = null)card.setNextCardLocation(null); main

25、.table.remove(card.getLocation(); card.setLocation(card.initPoint);main.table.put(card.initPoint, card); 沈 阳 大 学课程设计说明书 NO.18 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(ca

26、rd.getLocation(), card); card.initPoint = card.getLocation(); (8)进入游戏之后能对游戏的难度进行选择,难度分为三种,分别为简单,较难,困难,简单为单一花色的纸牌进行游戏,而较难和困难的纸牌花色相应的增多。在设计时首先在SpiderMenuBar类中,将三种难度的菜单实现,然后通过调用PKcard的方法实现各难度的功能,如图11,12所示。 沈 阳 大 学课程设计说明书 NO.19图11 难度选择图12 选择困难 沈 阳 大 学课程设计说明书 NO.20通过如下代码实现:实现菜单分成三种难度:JRadioButtonMenuItem

27、 jRMItemEasy = new JRadioButtonMenuItem(简单); JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem(较难);JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem(困难);jRMItemEasy.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) m

28、ain.setGrade(Spider.EASY); main.initCards(); main.newGame(); 分别对菜单进行事件监听,若选中相应的难度登记则触发Spider类中的方法进行实现: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.Acti

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1