欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    JAVA课程设计—连连看最终版(共23页).doc

    • 资源ID:8985058       资源大小:56.50KB        全文页数:23页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA课程设计—连连看最终版(共23页).doc

    精选优质文档-倾情为你奉上JAVA课程设计报告实验题目: “连连看”游戏程序设计小组成员: 王飞铭、毛建平、陈银银、黄庭威 成员分工:组长:王飞铭王飞铭:actionPerformed():重来一局按钮的响应事件及remove()判断移去方法毛建平:xiao()消去方法、estimateEven()方法陈银银:init()方法:游戏主界面和main()方法实现黄庭威:randomBuild() 产生随机数方法、fraction()刷新方法(一):内容:1:功能需求和分析: (1) 该游戏界面为:数字方格类型,由6竖7横的直线平行垂直交叉而组成,分别是6行5列凹方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要求是至少两两相同,位置随机打乱。 (2) 游戏规则是:将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则视为无效,如果一对数字连接成功,那么就会消失在界面,并且分数标签会加分,继续游戏,直到游戏结束。 (3)帮助项目:在游戏过程中,如果出现没有可以连接的数字对时候,可按界面下方按钮刷新重新排列,便可以可继续游戏。 (4)退出游戏: 可以鼠标点击 “退出”按钮,结束游戏。 (5) 再来一局:本局结束或者中途不想继续玩本局,可以点击界面下方的再来一局,系统会自动再次重新开始。(二):主要方法:首先我们定义了一个lianliankan类,实现了接口ActionListener:1) init()方法:实现游戏主界面;2) randomBuild()方法:用来产生游戏按钮上的随机数;3) fraction()方法:游戏界面最上面用来加分;4) reload()方法:用来刷新,重载,窗体界面;5) estimateEven()方法:判断按钮数字是否满足消去的条件 linePassOne()方法:判断第一按钮同左右侧空按钮之间rowPassOne()方法:判断第一按钮同列空按钮与第二按钮;6) actionPerformed(ActionEvent e)方法:用来实现重来一局按钮的响应事件;7) main(String args)方法:主函数;8) xiao()方法:消去方法(三):界面要求:用图形界面实现,参考下系统流程图如下开始初始化设置开始界面画表格初始化数值游戏游戏是否结束显示游戏结束画面游戏结束NOYes(四):代码设计package 数字版;/*本游戏是连连看,上面出现的都是数字,点击两个相邻的或者之间没有第三个的,便可以消去。如果不能消除完,便可以按重列,这样会把剩余的重新排列。便可以继续玩了,或者您可以按重置,重新再来一局!*/import javax.swing.*; /调用图形界面类布局import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener /继承一个监听器JFrame mainFrame; /游戏主面板 用布局管理器Container thisContainer; /一个容器JPanel centerPanel,southPanel,northPanel; /子面板 JButton diamondsButton = new JButton65;/游戏按钮数组 JButton exitButton,resetButton,newlyButton; /退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); /分数标签 显示您玩游戏得了多少分!)JButton firstButton,secondButton; /分别记录两次被选中的按钮 int grid = new int87;/储存游戏按钮位置 static boolean pressInformation=false; /判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; /游戏按钮的位置坐标 int i,j,k,n;/消除方法控制 public void init() mainFrame=new JFrame("数字版连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout();/setLayout()设置用户界面上的屏幕组件的格式布局,是java图形界面编程的常用方法。此处是方位布局centerPanel=new JPanel(); /中间部分(用来放游戏显示内容)southPanel=new JPanel(); /下面部分(用来放退出,重列,重新开始按钮)northPanel=new JPanel(); /上面部分(用来记录得分情况)centerPanel.setBackground(new Color(145,145,44);/灰色northPanel.setBackground(new Color(245,252,252);/颜色redthisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(new GridLayout(6,5); /设置游戏图标for(int cols = 0;cols < 6;cols+) for(int rows = 0;rows < 5;rows+ ) diamondsButtoncolsrows=new JButton(String.valueOf(gridcols+1rows+1); /换下一行diamondsButtoncolsrows.setBackground(new Color(199,190,33);/颜色diamondsButtoncolsrows.setFont(new java.awt.Font("黑体", 1, 22);diamondsButtoncolsrows.setBorder(BorderFactory.createLoweredBevelBorder();diamondsButtoncolsrows.addActionListener(this); centerPanel.add(diamondsButtoncolsrows); exitButton=new JButton("退出"); exitButton.setFont(new java.awt.Font("黑体", 1, 16);exitButton.setPreferredSize(new Dimension(55,30);exitButton.setBorder(BorderFactory.createRaisedBevelBorder();exitButton.setBackground(new Color(25,155,100);/颜色绿色exitButton.addActionListener(this); resetButton=new JButton("刷新"); resetButton.setFont(new java.awt.Font("黑体", 1, 16);resetButton.setPreferredSize(new Dimension(55,30);resetButton.setBorder(BorderFactory.createRaisedBevelBorder();resetButton.setBackground(new Color(77, 175,100);/蓝色resetButton.addActionListener(this); newlyButton=new JButton("再来一局"); newlyButton.setFont(new java.awt.Font("黑体", 1, 16);newlyButton.setPreferredSize(new Dimension(100,33);newlyButton.setBorder(BorderFactory.createRaisedBevelBorder();newlyButton.setBackground(new Color(255,192,203);/粉色newlyButton.addActionListener(this); /添加了监听器 !当点击时候,用那个来通知southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText(); /用来计算得分数,不断变化northPanel.add(fractionLable); mainFrame.setBounds(300,100,500,450); mainFrame.setVisible(true); public void randomBuild() /产生随机数int randoms,cols,rows; for(int twins=1;twins<=15;twins+) randoms=(int)(Math.random()*25+1); for(int alike=1;alike<=2;alike+) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=randoms; public void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()+100); public void reload() int save = new int30; int n=0,cols,rows; int grid= new int87; /双重循环,输出二维数组!for(int i=0;i<=6;i+) for(int j=0;j<=5;j+) if(this.gridij!=0) saven=this.gridij; n+; n=n-1; this.grid=grid; while(n>=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(gridcolsrows!=0) cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); this.gridcolsrows=saven; n-; mainFrame.setVisible(false); pressInformation=false; /这里一定要将按钮点击信息归为初始 init(); for(int i = 0;i < 6;i+) for(int j = 0;j < 5;j+ ) if(gridi+1j+1=0) diamondsButtonij.setVisible(false); public void estimateEven(int placeX,int placeY,JButton bz) if(pressInformation=false) x=placeX; y=placeY; secondMsg=gridxy; secondButton=bz; pressInformation=true; else x0=x; y0=y; fristMsg=secondMsg; firstButton=secondButton; x=placeX; y=placeY; secondMsg=gridxy; secondButton=bz; if(fristMsg=secondMsg && secondButton!=firstButton) xiao(); /调用消掉的方法 public void xiao() /相同的情况下能不能消去。仔细分析,不一条条注释 if(x0=x &&(y0=y+1|y0=y-1) | (x0=x+1|x0=x-1)&&(y0=y) /判断是否相邻 remove(); else for (j=0;j<7;j+ ) if (gridx0j=0) /判断第一个按钮同行哪个按钮为空 if (y>j) /如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i=y-1;i>=j;i- ) /判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi!=0) k=0; break; else k=1; /K=1说明通过了第一次验证 if (k=1) linePassOne(); if (y<j) /如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i=y+1;i<=j ;i+ ) /判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi!=0) k=0; break; else k=1; if (k=1) linePassOne(); if (y=j ) linePassOne(); if (k=2) if (x0=x) remove(); if (x0<x) for (n=x0;n<=x-1;n+ ) if (gridnj!=0) k=0; break; if(gridnj=0 && n=x-1) remove(); if (x0>x) for (n=x0;n>=x+1 ;n- ) if (gridnj!=0) k=0; break; if(gridnj=0 && n=x+1) remove(); for (i=0;i<8;i+ ) /列 if (gridiy0=0) if (x>i) for (j=x-1;j>=i ;j- ) if (gridjy!=0) k=0; break; else k=1; if (k=1) rowPassOne(); if (x<i) for (j=x+1;j<=i;j+ ) if (gridjy!=0) k=0; break; else k=1; if (k=1) rowPassOne(); if (x=i) rowPassOne(); if (k=2) if (y0=y) remove(); if (y0<y) for (n=y0;n<=y-1 ;n+ ) if (gridin!=0) k=0; break; if(gridin=0 && n=y-1) remove(); if (y0>y) for (n=y0;n>=y+1 ;n-) if (gridin!=0) k=0; break; if(gridin=0 && n=y+1) remove(); public void linePassOne() if (y0>j) /第一按钮同行空按钮在左边 for (i=y0-1;i>=j ;i- ) /判断第一按钮同左侧空按钮之间有没按钮 if (gridx0i!=0) k=0; break; else k=2; /K=2说明通过了第二次验证 if (y0<j) /第一按钮同行空按钮在与第二按钮之间 for (i=y0+1;i<=j ;i+) if (gridx0i!=0) k=0; break; else k=2; public void rowPassOne() if (x0>i) for (j=x0-1;j>=i ;j- ) if (gridjy0!=0) k=0; break; else k=2; if (x0<i) for (j=x0+1;j<=i ;j+ ) if (gridjy0!=0) k=0; break; else k=2; public void remove() firstButton.setVisible(false); secondButton.setVisible(false); fraction(); pressInformation=false; k=0; gridx0y0=0; gridxy=0; public void actionPerformed(ActionEvent e) if(e.getSource()=newlyButton) int grid = new int87; this.grid = grid; randomBuild(); mainFrame.setVisible(false); pressInformation=false; init(); if(e.getSource()=exitButton) System.exit(0); if(e.getSource()=resetButton) reload(); for(int cols = 0;cols < 6;cols+) for(int rows = 0;rows < 5;rows+ ) if(e.getSource()=diamondsButtoncolsrows) estimateEven(cols+1,rows+1,diamondsButtoncolsrows); public static void main(String args) /主方法lianliankan llk = new lianliankan(); /实例化llk.randomBuild(); /调用llk.init(); 关节点:a. Java的接口技术b. Java的事件处理机制c. Java的布局管理 (四):总结通过java这次实训学习,我从中学到了许多新的知识,而且通过这次实训设计,培养了我从多门课程中获取知识、迅速规划并开发出目标系统的能力,也锻炼了我们团队合作协调的能力,以及编程能力也有了很大的提高。另外也有许多心得体会,在系统开发过程真的很艰难,也非常辛苦,特别是其中不得不做一些功能性甚至系统结构性方面的变动,将面对许多重复枯燥性的工作。专心-专注-专业

    注意事项

    本文(JAVA课程设计—连连看最终版(共23页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开