当前位置:文档之家› JAVA课程设计—连连看最终版要点

JAVA课程设计—连连看最终版要点

JAVA课程设计报告实验题目:“连连看”游戏程序设计小组成员:王飞铭、毛建平、陈银银、黄庭威成员分工:组长:王飞铭王飞铭:actionPerformed():重来一局按钮的响应事件及remove()判断移去方法毛建平:xiao()消去方法、estimateEven()方法陈银银:init()方法:游戏主界面和main()方法实现产生随机数方法、fraction()刷新黄庭威:randomBuild()方法(一):内容: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()方法:消去方法(三):界面要求:用图形界面实现,参考下系统流程图如下NO(四):代码设计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 JButton[6][5];//游戏按钮数组JButton exitButton,resetButton,newlyButton;//退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签显示您玩游戏得了多少分!!!!!!!!)JButton firstButton,secondButton; //分别记录两次被选中的按钮int grid[][] =new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中intx0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validate LV; //游戏按钮的位置坐标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(newColor(145,145,44));//灰色northPanel.setBackground(newColor(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++){ diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1])); //换下一行diamondsButton[cols][rows].setBackground(newColor(199,190,33));//颜色diamondsButton[cols][rows].setFont(newjava.awt.Font("黑体", 1, 22));diamondsButton[cols][rows].setBorder(BorderFactory.createLoweredBevelBorder());diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}exitButton=new JButton("退出");exitButton.setFont(new java.awt.Font("黑体", 1, 16));exitButton.setPreferredSize(new Dimension(55,30)); exitButton.setBorder(BorderFactory.createRaisedBe velBorder());exitButton.setBackground(newColor(25,155,100));//颜色绿色exitButton.addActionListener(this);resetButton=new JButton("刷新");resetButton.setFont(new java.awt.Font("黑体", 1, 16));resetButton.setPreferredSize(newDimension(55,30));resetButton.setBorder(BorderFactory.createRaisedB evelBorder());resetButton.setBackground(new Color(77, 175,100));//蓝色resetButton.addActionListener(this);newlyButton=new JButton("再来一局");newlyButton.setFont(new java.awt.Font("黑体", 1, 16));newlyButton.setPreferredSize(newDimension(100,33));newlyButton.setBorder(BorderFactory.createRaisedB evelBorder());newlyButton.setBackground(newColor(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(grid[cols][rows]!=0){cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.pars eInt(fractionLable.getText())+100));}public void reload(){int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];//双重循环,输出二维数组!!!for(int i=0;i<=6;i++){for(int j=0;j<=5;j++){if(this.grid[i][j]!=0){save[n]=this.grid[i][j];n++;}}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0){cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i< 6;i++){for(int j = 0;j< 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz){if(pressInformation==false){x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg && secondButton!=firstButton){xiao(); //调用消掉的方法}}}public void xiao() { //相同的情况下能不能消去。

相关主题