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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整word版斗地主Java课程设计.docx

1、完整word版斗地主Java课程设计 面向对象程序设计课程设计报告题 目: 斗地主软件设计与实现 院 (系): 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生姓名: 程 伟 学 号: 20121183011 指导教师: 吴 奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制 面向对象程序设计 课程设计任务书一、设计(调查报告/论文)题目斗地主软件设计与实现二、设计(调查报告/论文)主要内容内容:设计一个斗地主游戏,玩家可以通过键盘或鼠标控制游戏区,游戏设定不同级别,级别越高难度越大,玩家可以根据自己的需要自由设定初始游戏级别,当玩家取

2、得的分数到达一定水平时游戏自动进入下一个级别。游戏以最终玩家获得的分数来判断玩家水平的高低。基本功能与要求:使用Eclipse 和JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。设计要求如下:游戏由模块组成:游戏区模块,游戏控制模块,级别设置模块和帮助模块。游戏区模块,为玩家提供主体游戏功能,能够处理玩家的各种游戏操作,显示得分情况,并最终显示游戏结果。游戏控制模块,该模块为玩家提供游戏控制功能,应包括开始游戏,暂停游戏和退出游戏三部分功能。级别设置模块为玩家提供自行设置游戏的初始级别功能,主要提供初级,中级和高级三个游戏初始级别设置。

3、三、原始资料1.面向对象程序设计课程设计指导书2. 耿祥义JAVA大学实用教程北京:清华大学出版社,2009四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20

4、105 邹林达Java2程序设计基础实验指导北京:清华大学,2010指导教师(签名): 20 年 月 日1需求与总体设计1.1需求分析 游戏设计需要用到牌Card的正反面及牌的移动,还有CardType设计出牌种类,还有各种牌的形式,还要设计几个人玩游戏,抢地主的方法,出牌倒计时,出牌和不出牌等等,另外还要设计54张牌,打牌出现的各种结果。1.2总体设计本游戏实现了图形界面的设计、游戏区模块,游戏控制模块,级别设置模块和帮助模块。为玩家提供主体游戏功能,能够处理玩家的各种游戏操作,并最终显示游戏结果。1.3功能图1.4类图2详细设计2.1主类Main图表说明如下:创建菜单 功能按钮public

5、 void Init()初始化窗体public void Init()发牌洗牌public void CardInit()抢地主public void getLord()2.2类Card(1)类图(2)说明:该类主要是设计牌面的正反、牌之间的距离、移动(即出牌时向前移动纸牌),其中有:boolean up;/是否正反面; boolean canClick=false;/是否可被点击 boolean clicked=false;/是否点击过; String name;/图片url名字Main main;/Main类的引用2.3类CardTypepublic enum CardType 列出各种出

6、牌的类型出牌类型单牌,对子,不带,炸弹;3带1、带2,3带2个单、或者一对;4带2对;连子、连队;飞机、飞机带单排.、飞机带对子.不能出牌2.4类Common1)判断牌型public static CardType jugdeType()2)移动效果的函数,用于发牌public static void move()3)对牌的排序public static void order()4)重新定位 flag代表电脑1 ,2 或者是我public static void rePosition()5)地主牌权值,看是否抢地主public static int getScore()6)返回花色public

7、 static int getColor()7)得到最大相同数public static void getMax()8)拆牌public static Model getModel()各种对子、顺子、飞机、炸弹9)拆连子public static void get123()10)拆双顺public static void getTwoTwo()11)拆飞机public static void getPlane()12)拆炸弹public static void getBoomb()13)拆3带public static void getThree()14)拆对子public static vo

8、id getTwo()15)拆单牌public static void getSingle()16)隐藏之前出过的牌public static void hideCards()17)检查牌的是否能出public static int checkCards()2.5类Model各种牌型public class ModelList a1=new ArrayList(); /单张 List a2=new ArrayList(); /对子 List a3=new ArrayList(); /3带 List a123=new ArrayList(); /连子 List a112233=new Array

9、List(); /连牌 List a111222=new ArrayList(); /飞机 List a4=new ArrayList(); /炸弹2.6类Time/ 等待i秒public void second(int i)/时间如何走public void run()if (i = -1)/ 正常终结,说明超时/ 开始游戏 根据地主不同顺序不同main.turn=main.dizhuFlag;/ 出牌按钮 -我出牌turnOn(true);/ 我自己的定时器timeWait(30, 1);/选完关闭turnOn(false);3编码实现3.1 JAVA编码实现(1)Main.java主要代

10、码public class Main extends JFrame implements ActionListener public Container container = null; / 定义容器 JMenuItem start, exit, about; / 定义菜单按钮 JButton landlord=new JButton2; /抢地主按钮 JButton publishCard=new JButton2; /出牌按钮 int dizhuFlag; /地主标志 int turn; JLabel dizhu; /地主图标 List currentList =new ArrayLis

11、t3; / 当前的出牌 List playerList = new ArrayList3; / 定义3个玩家表 List lordList;/地主牌 Card card = new Card56; / 定义54张牌 JTextField time=new JTextField3; /计时器 Time t; /定时器(线程) boolean nextPlayer=false; /转换角色 public Main() Init();/ 初始化 SetMenu();/ 创建菜单 按钮(抢地主,发牌,计时器) this.setVisible(true); CardInit();/发牌 getLord(

12、); /发完牌开始抢地主 time1.setVisible(true); /线程安全性,把非主线程的UI控制放到里面 SwingUtilities.invokeLater(new NewTimer(this,10); public void getLord()/ 抢地主 /System.out.println(CardType.c0.toString(); for(int i=0;i2;i+) /当没有人抢地主时或者一个人和当前的人抢地主时 landlordi.setVisible(true); /初始化牌 / 发牌洗牌 public void CardInit()/初始化牌 int coun

13、t = 1; for (int i = 1; i = 5; i+) for (int j = 1; j 2) break; else cardcount = new Card(this, i + - + j, false); cardcount.setLocation(350, 50); container.add(cardcount); count+; /打乱顺序 for(int i=0;i100;i+) Random random=new Random(); int a=random.nextInt(54)+1; int b=random.nextInt(54)+1; Card k=car

14、da; /赋值语句,打乱牌序 carda=cardb; cardb=k; /开始发牌 for(int i=0;i3;i+) /三张底牌 playerListi=new ArrayList(); /玩家牌 lordList=new ArrayList();/地主牌三张 int t=0; for(int i=1;i=52)/地主牌 Common.move(cardi, cardi.getLocation(),new Point(300+(i-52)*80,10); lordList.add(cardi); continue; switch (t+)%3) case 0: /显示各边的玩家,这是左边

15、玩家 Common.move(cardi, cardi.getLocation(),new Point(50,60+i*5); playerList0.add(cardi); break; case 1: /玩家:我 Common.move(cardi, cardi.getLocation(),new Point(180+i*7,450); playerList1.add(cardi); cardi.turnFront(); /显示正面 break; case 2: /右边玩家 Common.move(cardi, cardi.getLocation(),new Point(700,60+i*

16、5); playerList2.add(cardi); break; /cardi.turnFront(); /显示正面 container.setComponentZOrder(cardi, 0); /发完牌排序,从大到小 for(int i=0;i3;i+) Common.order(playerListi); Common.rePosition(this,playerListi,i);/重新定位 dizhu=new JLabel(new ImageIcon(images/dizhu.gif);/地主最后要加入底牌 dizhu.setVisible(false); dizhu.setSiz

17、e(40, 40); container.add(dizhu); / 初始化窗体 public void Init() this.setTitle(斗地主游戏-by程宵); this.setSize(830, 620); setResizable(false); setLocationRelativeTo(getOwner(); / 屏幕居中 container = this.getContentPane(); container.setLayout(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); container.se

18、tBackground(new Color(0, 112, 26); / 背景为绿色 / 创建菜单 功能按钮 public void SetMenu() JMenuBar jMenuBar = new JMenuBar(); JMenu game = new JMenu(游戏); JMenu help = new JMenu(帮助); start = new JMenuItem(新游戏); exit = new JMenuItem(退出); about = new JMenuItem(关于); start.addActionListener(this); exit.addActionListe

19、ner(this); about.addActionListener(this); game.add(start); game.add(exit); help.add(about); jMenuBar.add(game); jMenuBar.add(help); this.setJMenuBar(jMenuBar); landlord0=new JButton(抢地主); landlord1=new JButton(不 抢); publishCard0= new JButton(出牌); publishCard1= new JButton(不要); for(int i=0;i2;i+) pub

20、lishCardi.setBounds(320+i*100, 400, 60, 20); landlordi.setBounds(320+i*100, 400,75,20); container.add(landlordi); landlordi.addActionListener(this); landlordi.setVisible(false); container.add(publishCardi); publishCardi.setVisible(false); publishCardi.addActionListener(this); for(int i=0;i3;i+) time

21、i=new JTextField(倒计时:); timei.setVisible(false); container.add(timei); time0.setBounds(140, 230, 60, 20); time1.setBounds(374, 360, 60, 20); time2.setBounds(620, 230, 60, 20); for(int i=0;i3;i+) currentListi=new ArrayList(); Override public void actionPerformed(ActionEvent e) / TODO Auto-generated m

22、ethod stub if (e.getSource() = exit) this.dispose(); if (e.getSource() = about) JOptionPane.showMessageDialog(this, 20121183026,程宵); if (e.getSource() = start) / this.restart(); if(e.getSource()=landlord0) time1.setText(抢地主); t.isRun=false; /时钟终结 if(e.getSource()=landlord1) time1.setText(不抢); t.isRu

23、n=false; /时钟终结 /如果是不要 if(e.getSource()=publishCard1) this.nextPlayer=true; currentList1.clear(); time1.setText(不要); /如果是出牌按钮 if(e.getSource()=publishCard0) List c=new ArrayList(); /点选出牌 for(int i=0;iplayerList1.size();i+) Card card=playerList1.get(i); if(card.clicked) c.add(card); int flag=0; /如果我主动

24、出牌 if(time0.getText().equals(不要)&time2.getText().equals(不要) if(Common.jugdeType(c)!=CardType.c0) flag=1;/表示可以出牌 /如果我跟牌 else flag=Common.checkCards(c,currentList); /判断是否符合出牌 if(flag=1) currentList1=c; playerList1.removeAll(currentList1);/移除走的牌 /定位出牌 Point point=new Point(); point.x=(770/2)-(currentLi

25、st1.size()+1)*15/2; point.y=300; for(int i=0,len=currentList1.size();ilen;i+) Card card=currentList1.get(i); Common.move(card, card.getLocation(), point); point.x+=15; /抽完牌后重新整理牌 Common.rePosition(this, playerList1, 1); time1.setVisible(false); this.nextPlayer=true; public static void main(String ar

26、gs) new Main(); class NewTimer implements Runnable Main main; int i; public NewTimer(Main m,int i) this.main=m; this.i=i; Override public void run() / TODO Auto-generated method stub main.t=new Time(main,10);/从10开始倒计时 main.t.start(); (2)Card.java主要代码如下:public class Card extends JLabel implements MouseListener Main main;/Main类的引用 String name;/图片url名字 boolean up;/是否正反面 boolean canClick=false;/是否可被点击 boolean clicked=false;/是否点击过 public Card(Main m,String name,boolean up) this.main=m; this.name=name; this.up=up; if(this.up) this.t

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

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