精华内容
下载资源
问答
  • java连连看小游戏代码
    2022-06-19 21:35:22

    编写小游戏代码的过程中,影响最大的是一些方法没有听过,以及书本的知识与实际无法联系起来使用,直接或间接性的导致许多想法无法实现。

    在该游戏中,最重要的是对每个按钮的事件处理,代码如下:

    public void itemStateChanged(ItemEvent e) {
    			// TODO 自动生成的方法存根
    			if (e.getSource() == difficultChoice) {
    				String selected = difficultChoice.getSelectedItem();
    				if (selected == "简单") {
    					Kinds = 4;
    					newGame();
    					repaint();
    				} else if (selected == "中等") {
    					Kinds = 8;
    					newGame();
    					repaint();
    				} else if (selected == "困难") {
    					Kinds = 12;
    					newGame();
    					repaint();
    				} else if (selected == "变态") {
    					Kinds = 15;
    					newGame();
    					repaint();
    				}
    			}
    		}
    
    		public void actionPerformed(ActionEvent e) {
    			// TODO 自动生成的方法存根
    			
    			if (ld.getTimes() >56) {
    				for (int i = 0; i < 8; i++) {
    					for (int j = 0; j < 8; j++) {
    						BlockButton[j][i].setEnabled(false);
    					}
    				}
    			}
    			if (e.getSource() == reLoad) {
    				chongzai();
    				reLoad.setEnabled(false);
    			}
    			if (e.getSource() == newgameButton) {
    				newGame();
    				reLoad.setEnabled(true);
    			}
    
    			for (int i = 0; i < 8; i++) {
    				for (int j = 0; j < 8; j++) {
    					if (e.getSource() == BlockButton[j][i]) {
    						clicktimes++; // 点击的次数
    						lineStart.move(i, j);
    						if (clicktimes % 2 == 1) {
    							coordinatex1 = i;
    							coordinatey1 = j;
    							BlockButton[coordinatey1][coordinatex1].setEnabled(false);
    							BlockButton[coordinatey][coordinatex].setEnabled(true);
    
    						//	BlockButton[j][i].setEnabled(false);
    						}
    						if (clicktimes % 2 == 0) {
    							
    							coordinatex = i;
    							coordinatey = j;
    							BlockButton[coordinatey][coordinatex].setEnabled(false);
    							BlockButton[coordinatey1][coordinatex1].setEnabled(true);
    						}
    					}
    
    				}
    			}
    

    这两种处理类型主要针对下拉列表框(即游戏难度的选择)问题,游戏其他按键的问题。

    在下拉列表框中,难度的不同主要由8*8按钮上图案的复杂程度决定,代码如下:

    		public void paintComponent(Graphics g) {
    			super.paintComponent(g);
    			//是父类JPanel里的方法,会把整个面板用背景色重画一遍,起到清屏的作用
    
    			g.drawImage(ii.getImage(), 0, 0, this);
    			//绘制两个文本字符串
    			g.setColor(Color.white);
    			g.drawString("得分: " + score, 430, 165);
    			g.drawString("第 " + (guanshu + 1) + " 关", 430, 190);
    			
    			
    			for (int i = 0; i < 8; i++) {//8*8的按钮贴上图片
    				for (int j = 0; j < 8; j++) {
    					switch (map[i][j]) {
    					case 0:
    						
    						BlockButton[i][j].setVisible(false);
    						break;
    					case 1:
    						BlockButton[i][j].setIcon(aIcon);
    						break;
    					case 2:
    						BlockButton[i][j].setIcon(bIcon);
    						break;
    					case 3:
    						BlockButton[i][j].setIcon(cIcon);
    						break;
    					case 4:
    						BlockButton[i][j].setIcon(dIcon);
    						break;
    					case 5:
    						BlockButton[i][j].setIcon(eIcon);
    						break;
    					case 6:
    						BlockButton[i][j].setIcon(fIcon);
    						break;
    					case 7:
    						BlockButton[i][j].setIcon(gIcon);
    						break;
    					case 8:
    						BlockButton[i][j].setIcon(hIcon);
    						break;
    					case 9:
    						BlockButton[i][j].setIcon(iIcon);
    						break;
    					case 10:
    						BlockButton[i][j].setIcon(jIcon);
    						break;
    					case 11:
    						BlockButton[i][j].setIcon(kIcon);
    						break;
    					case 12:
    						BlockButton[i][j].setIcon(lIcon);
    						break;
    					case 13:
    						BlockButton[i][j].setIcon(mIcon);
    						break;
    					case 14:
    						BlockButton[i][j].setIcon(nIcon);
    						break;
    					case 15:
    						BlockButton[i][j].setIcon(oIcon);
    						break;
    					default:
    						break;
    					}
    
    				}
    
    			}
    
    		}

    该段代码与Itemevent事件搭配使用,起到更改难度的作用。

    除此之外,还有一个重要的配件是计时器,他可以提高游戏的挑战性,为了与按钮事件同步进行,这里使用了线程:

    class loudou extends JPanel implements Runnable {
    			
    			private int dijiguan;
    			int remainTimes = 0; // 时间
    			int x1 = 0;
    			int y1 = 30;
    			int x2 = 60;
    			int y2 = 150;
    			Thread nThread1;//线程
    			JLabel overJLabel = new JLabel();
    			JDialog dialog = new JDialog();
    
    			public loudou() {
    				nThread1 = new Thread(this);				
    				nThread1.start();
    				this.setLayout(null);
    				this.add(overJLabel);
    				overJLabel.setBounds(0, 0, 200, 50);
    				overJLabel.setForeground(Color.white);
    			}
    

    总结:

            虽然在编写游戏时会遇到很多从未见过的BUG与困难,但是只要决定开始这个项目,就一定要努力完成这些代码。遇到无法解决的问题时,思考无果一定要寻求同学,老师的帮助。

    更多相关内容
  • java连连看游戏代码

    2018-06-08 15:50:43
    基于java连连看游戏设计和实现,基本功能包括:消除模块,重新开始模块,刷新模块,选择难度模块,计时模块。本系统结构如下: (1)消除模块: 完成连连看游戏消除动作的模块。 (2)重新开始模块: 完成...
  • Java连连看小游戏

    2017-06-21 14:54:20
    1.3 缩写说明 java 1 1.4 术语定义 1 1.5 引用标准 1 1.6 参考资料 2 1.7 版本更新信息 2 2 系统定义 2 2.1 项目来源及背景 2 2.2 项目要达到的目标 2 3 应用环境 3 3.1 游戏硬件环境 3 3.2 游戏运行软件环境 3 4 ...
  • JAVA实现连连看游戏

    2021-03-08 07:22:33
    文件名大小更新时间JAVA实现连连看游戏\java连连看游戏设计介绍 幻灯片.pptx22697322018-06-09JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.classpath3012018-01-07JAVA实现连连看游戏\源代码\JAVA连连看...

    文件名大小更新时间

    JAVA实现连连看游戏\java连连看游戏设计介绍 幻灯片.pptx22697322018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.classpath3012018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.project4182018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.reverse.properties1272018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.settings\org.eclipse.jdt.core.prefs5982018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons\GameConfiguration.class10872018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons\GameException.class3722018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons\LinkInfo.class13232018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons\Piece.class16232018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons\Point.class9392018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\LinkGame$1.class6162018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\LinkGame.class48632018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\listener\BeginListener.class20002018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\listener\GameListener.class31682018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\AbstractBoard.class24692018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\GameService.class4182018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\impl\GameServiceImpl.class144442018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\impl\SimpleBoard.class11972018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\impl\SquareBoard.class11852018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\timer\TimerTask.class11662018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\utils\ImageUtil.class36992018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\view\GamePanel.class31002018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\view\TimeLabel.class3532018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\background.gif8562018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\crazyItLogo.jpg120722018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\logo.gif125542010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\lose.gif843612018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\1.gif20322010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\10.gif20672010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\11.gif20372010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\12.gif21192010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\13.gif21542010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\14.gif20912010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\15.gif21412010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\16.gif20942010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\17.gif21972010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\18.gif20022010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\19.gif20972010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\2.gif21102010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\20.gif21532010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\21.gif21602010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\22.gif21312010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\23.gif19992010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\3.gif20782010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\4.gif20872010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\5.gif21242010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\6.gif20502010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\7.gif18872010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\8.gif20082010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\9.gif21412010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces\Thumbs.db440322010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\selected.gif1212010-01-19

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\win.gif1008632018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\linkmodel.uml55702018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\linkmodel.umldi77382018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\mode.uml713772018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\mode.umldi715662018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons\GameConfiguration.java10762018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons\GameException.java1952018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons\LinkInfo.java6632018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons\Piece.java15282018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons\Point.java8302018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\LinkGame.java61622018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\listener\BeginListener.java17382018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\listener\GameListener.java33732018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\AbstractBoard.java22302018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\GameService.java11662018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\impl\GameServiceImpl.java246252018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\impl\SimpleBoard.java8762018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\impl\SquareBoard.java7412018-01-07

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\timer\TimerTask.java12882018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\utils\ImageUtil.java41362018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\view\GamePanel.java31082018-01-13

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\view\TimeLabel.java1772018-01-08

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service\impl02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service\impl02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\commons02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\listener02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\service02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\timer02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\utils02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame\view02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\commons02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\listener02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\service02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\timer02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\utils02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame\view02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin\linkgame02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images\pieces02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src\linkgame02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\.settings02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\bin02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\images02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码\src02018-06-09

    JAVA实现连连看游戏\源代码\JAVA连连看游戏设计 源代码02018-06-09

    JAVA实现连连看游戏\源代码02018-06-09

    JAVA实现连连看游戏02018-06-09

    展开全文
  • Java实现连连看小游戏代码,java课程设计报告,简单小游戏的使用
  • 主要介绍了java基于swing实现的连连看代码,包含了游戏中涉及的事件处理与逻辑功能,需要的朋友可以参考下
  • java实现连连看游戏

    千次阅读 2021-02-12 16:13:49
    本文实例为大家分享了java实现连连看游戏的具体代码,供大家参考,具体内容如下代码会实现共享的,这个是截图代码:package com.lr.bean;import java.util.Scanner;import java.util.Random;import ...

    本文实例为大家分享了java实现连连看游戏的具体代码,供大家参考,具体内容如下

    代码会实现共享的,这个是截图

    2f614037b98648baf4b2aae08ecbc9d1.png

    代码:

    package com.lr.bean;

    import java.util.Scanner;

    import java.util.Random;

    import com.lr.bean.Point;

    public class Link{

    public static void main(String[] args){

    Scanner sc=new Scanner(System.in);

    System.out.println("==========================");

    System.out.println("\t\t连连看小游戏");

    System.out.println("\t\t版权:lr");

    System.out.println("==========================");

    System.out.println("请先输入图片数量(难度系数 1~9):");

    int picnum=sc.nextInt();

    System.out.println("请输入棋盘的行数:");

    int rows=sc.nextInt();

    int cols=0; //列数

    int count=0; //计数器

    do{

    if (count>0){

    System.out.println("输入有误,列数必须大于0!");

    }

    System.out.println("请输入棋盘列数:");

    cols=sc.nextInt();

    count++;

    }while( cols<1 || cols%2!=0);

    //创建二维数组,生成棋盘,列数+2的原因:做出边框的效果 数组刚刚生成时,每个元素都是0

    int[][] chessboard=new int[ rows+2 ][ cols+2];

    //随机生成的图片数值存入这个二维数组中,注意:边框不存值,任为0

    initBoard( chessboard ,picnum);

    System.out.println("初始化后的棋盘为:");

    showBoard2( chessboard);

    //打乱棋盘

    shuffle( chessboard );

    //输出

    System.out.println("打乱后的棋盘为:");

    showBoard2( chessboard);

    //实现消除业务

    // 1.定义两个Point对象

    Point p1=new Point();

    Point p2=new Point();

    // 2.游戏状态 isGameOver

    boolean isGameOver=false;

    do{

    // 3.循环输入两个点 do...while

    System.out.println("请输入两个点的坐标");

    p1.x=sc.nextInt();

    p1.y=sc.nextInt();

    p2.x=sc.nextInt();

    p2.y=sc.nextInt();

    // 4.判断这两个数是否可以消除

    if( isErazeOk( chessboard,p1,p2)){

    //如果可以消除,将这两个点在chessboard 中的值都设为0

    chessboard[p1.x][p1.y]=0;

    chessboard[p2.x][p2.y]=0;

    if( checkGameOver( chessboard )){

    isGameOver=true;

    }

    }

    //显示消除后的棋盘

    showBoard2( chessboard );

    }while( !isGameOver );

    System.out.println("游戏结束!");

    }

    //判断是否能消除的业务

    public static boolean isErazeOk(int[][] chessboard ,Point p1,Point p2){

    // 1.两个点不是同一个

    if( p1.equals( p2) ){

    System.out.println("输入的两个点位置不能相同!");

    }

    // 2。两个点的值是否相等

    if(chessboard[p1.x][p1.y] !=chessboard[p2.x][p2.y]){

    System.out.println("输入的两个点值不相同!请重新输入");

    return false;

    }

    // 3.判断两个点的连线情况

    if( doOneLine(chessboard,p1,p2) || doTwoLine(chessboard,p1,p2) || doThreeLine(chessboard,p1,p2)){

    return true;

    }

    return false;

    }

    // 1连线

    public static boolean doOneLine(int[][] chessboard,Point p1,Point p2){

    //定义最大值和最小值

    int max=0;

    int min=0;

    //判断是循环行还是循环列

    if( p1.x==p2.x){

    //找y的最大值、找y的最小值、循环从 min+1 至 max-1、判断是否为0、如果中间有一个不为0,则返回 false

    max=p1.y>p2.y?p1.y:p2.y;

    min=p1.y

    for(int i=min+1;i

    if(chessboard[p1.x][i]!=0){

    return false;

    }

    }

    return true;

    }else if( p1.y==p2.y){

    //找x的最大值、找x的最小值、循环从 min+1 至 max-1、判断是否为0、如果中间有一个不为0,则返回 false

    max=p1.x>p2.x?p1.x:p2.x;

    min=p1.x

    for(int i=min+1;i

    if(chessboard[i][p1.y]!=0){

    return false;

    }

    }

    return true;

    }

    return false;

    }

    // 2连线

    public static boolean doTwoLine(int[][] chessboard,Point p1,Point p2){

    //定义两个临时点

    Point t1=new Point();

    t1.x=p1.x;

    t1.y=p2.y;

    Point t2=new Point();

    t2.x=p2.x;

    t2.y=p1.y;

    if( chessboard[t1.x][t1.y]==0 && doOneLine(chessboard, p1,t1 ) && doOneLine(chessboard, t1,p2) ){

    return true;

    }

    if( chessboard[t2.x][t2.y]==0 && doOneLine(chessboard, p1,t2 ) && doOneLine(chessboard, t2,p2) ){

    return true;

    }

    return false;

    }

    // 3连线

    public static boolean doThreeLine(int[][] chessboard,Point p1,Point p2){

    //先循环行 :x

    for( int i=0;i

    Point t=new Point();

    t.x=i;

    t.y=p1.y;

    if( chessboard[t.x][t.y]==0 && doOneLine(chessboard,t, p1) && doTwoLine(chessboard, t,p2) ){

    return true;

    }

    }

    //再循环列 :y

    for( int i=0;i

    Point t=new Point();

    t.x=p1.x;

    t.y=i;

    if( chessboard[t.x][t.y]==0 && doOneLine(chessboard,t, p1) && doTwoLine(chessboard, t,p2) ){

    return true;

    }

    }

    return false;

    }

    //判断游戏是否结束:循环这个数组,判断所有的位置都为0

    public static boolean checkGameOver(int[][] chessboard){

    for(int i=1;i

    for(int j=1;i

    if( chessboard[i][j]!=0 ){

    return false;

    }

    }

    }

    return true;

    }

    public static void initBoard(int[][] chessboard,int picnum){

    Random r=new Random();

    for( int i=1;i

    for(int j=1;j

    int pic=r.nextInt( picnum )+1;

    chessboard[i][j]=pic;

    chessboard[i][j+1]=pic;

    }

    }

    }

    //打乱棋盘,只能对中间的值打乱,而不能打扰边框

    //交换数组的两个值 ,随机生成的四个下标,每个下标表示一个数 x1,y1 x2,y2 =》 chessboard【x2】【y1】 将上面两个数交换

    //概率:棋盘越大,交换越多

    public static void shuffle(int[][] chessboard ){

    Random r=new Random();

    int x1=0;

    int y1=0;

    int x2=0;

    int y2=0;

    int temp=0;

    for(int i=0;i

    //生成的四个下标,不能为0,也不能为 length-1

    x1=r.nextInt( chessboard.length-2 )+1;

    y1=r.nextInt( chessboard[0].length-2 )+1;

    x2=r.nextInt( chessboard.length-2 )+1;

    y2=r.nextInt( chessboard[0].length-2 )+1;

    //完成交换

    temp=chessboard[x1][y1];

    chessboard[x1][y1]=chessboard[x2][y2];

    chessboard[x2][y2]=temp;

    }

    }

    //简单的输出

    public static void showBoard(int[][] chessboard){

    for(int i=0;i

    for(int j=0;j

    System.out.print(chessboard[i][j]+"\t");

    }

    System.out.println();

    }

    }

    //私有方法:专门用来输出棋盘最上面和最下面要出现的列号

    private static void showColsNum( int[][] chessboard ){

    for(int i=0;i

    if( i==0 || i==chessboard[i].length-1){

    System.out.print("\t");

    }else{

    System.out.print("*"+i+"\t");

    }

    }

    System.out.println();

    }

    //带行列提示的输出

    public static void showBoard2( int[][] chessboard){

    showColsNum( chessboard );//输出error:列号

    //中间完成棋盘

    for(int i=0;i

    //加入前面行号的输出

    if( i==0 || i==chessboard[i].length-1){

    System.out.print(" ");

    }else{

    System.out.print(""+i);

    }

    for(int j=0;j

    //边框要用 * 来修饰

    if( i==0 || j==0 || i==chessboard.length-1 || j==chessboard[i].length-1){

    if( j==chessboard[i].length-1){

    System.out.print(" # ");

    }else{

    System.out.print(" #\t");

    }

    }else{//不是边框,就输出数组中对应的数字

    if( chessboard[i][j]==0){

    System.out.print(" \t");

    }else{

    System.out.print(" "+chessboard[i][j]+"\t");

    }

    }

    }

    //加入后面的行号

    if( i==0 || i==chessboard.length-1){

    System.out.print(" ");

    }else{

    System.out.print(""+i);

    }

    System.out.println();

    }

    showColsNum( chessboard );//输出列号

    }

    }

    Point类没有写出来了,比较简单,里面就存了两个数据,表示数字的行和列,就不上图了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 完成连连看游戏中,将游戏中未消除的图片个数记录并重新随机放置等数量图片的功能模块。 (4)选择难度模块: 完成游戏中切换游戏难度并开始新一局游戏的模块。 (5)计时模块: 完成游戏中倒计时并显示提示...
  • package ...import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing....

    package com.yjd.lianliankan;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    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; // 判断是否有按钮被选中

    int x0 = 0, y0 = 0, x = 0, y = 0, firstMsg = 0, secondMsg = 0, validateLV; // 游戏按钮的位置坐标

    int i, j, k, n;// 消除方法控制

    public void init() {

    mainFrame = new JFrame("JKJ连连看");

    thisContainer = mainFrame.getContentPane();

    thisContainer.setLayout(new BorderLayout());

    centerPanel = new JPanel();

    southPanel = new JPanel();

    northPanel = new JPanel();

    thisContainer.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] = new JButton(String

    .valueOf(grid[cols + 1][rows + 1]));

    diamondsButton[cols][rows].addActionListener(this);

    centerPanel.add(diamondsButton[cols][rows]);

    }

    }

    exitButton = new JButton("退出");

    exitButton.addActionListener(this);

    resetButton = new JButton("重列");

    resetButton.addActionListener(this);

    newlyButton = new JButton("再来一局");

    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(280, 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.parseInt(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;

    firstMsg = secondMsg;

    firstButton = secondButton;

    x = placeX;

    y = placeY;

    secondMsg = grid[x][y];

    secondButton = bz;

    if (firstMsg == 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 (grid[x0][j] == 0) { // 判断第一个按钮同行哪个按钮为空

    if (y > j) { // 如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边

    for (i = y - 1; i >= j; i--) { // 判断第二按钮左侧直到第一按钮中间有没有按钮

    if (grid[x][i] != 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 (grid[x][i] != 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 (grid[n][j] != 0) {

    k = 0;

    break;

    }

    if (grid[n][j] == 0 && n == x - 1) {

    remove();

    }

    }

    }

    if (x0 > x) {

    for (n = x0; n >= x + 1; n--) {

    if (grid[n][j] != 0) {

    k = 0;

    break;

    }

    if (grid[n][j] == 0 && n == x + 1) {

    remove();

    }

    }

    }

    }

    }

    for (i = 0; i < 8; i++) { // 列

    if (grid[i][y0] == 0) {

    if (x > i) {

    for (j = x - 1; j >= i; j--) {

    if (grid[j][y] != 0) {

    k = 0;

    break;

    } else {

    k = 1;

    }

    }

    if (k == 1) {

    rowPassOne();

    }

    }

    if (x < i) {

    for (j = x + 1; j <= i; j++) {

    if (grid[j][y] != 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 (grid[i][n] != 0) {

    k = 0;

    break;

    }

    if (grid[i][n] == 0 && n == y - 1) {

    remove();

    }

    }

    }

    if (y0 > y) {

    for (n = y0; n >= y + 1; n--) {

    if (grid[i][n] != 0) {

    k = 0;

    break;

    }

    if (grid[i][n] == 0 && n == y + 1) {

    remove();

    }

    }

    }

    }

    }

    }

    }

    public void linePassOne() {

    if (y0 > j) { // 第一按钮同行空按钮在左边

    for (i = y0 - 1; i >= j; i--) { // 判断第一按钮同左侧空按钮之间有没按钮

    if (grid[x0][i] != 0) {

    k = 0;

    break;

    } else {

    k = 2;

    } // K=2说明通过了第二次验证

    }

    }

    if (y0 < j) { // 第一按钮同行空按钮在与第二按钮之间

    for (i = y0 + 1; i <= j; i++) {

    if (grid[x0][i] != 0) {

    k = 0;

    break;

    } else {

    k = 2;

    }

    }

    }

    }

    public void rowPassOne() {

    if (x0 > i) {

    for (j = x0 - 1; j >= i; j--) {

    if (grid[j][y0] != 0) {

    k = 0;

    break;

    } else {

    k = 2;

    }

    }

    }

    if (x0 < i) {

    for (j = x0 + 1; j <= i; j++) {

    if (grid[j][y0] != 0) {

    k = 0;

    break;

    } else {

    k = 2;

    }

    }

    }

    }

    public void remove() {

    firstButton.setVisible(false);

    secondButton.setVisible(false);

    fraction();

    pressInformation = false;

    k = 0;

    grid[x0][y0] = 0;

    grid[x][y] = 0;

    }

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == newlyButton) {

    int grid[][] = new int[8][7];

    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() == diamondsButton[cols][rows])

    estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]);

    }

    }

    }

    public static void main(String[] args) {

    lianliankan llk = new lianliankan();

    llk.randomBuild();

    llk.init();

    }

    }

    展开全文
  • 含有注释的代码和详细的功能解释和实现路线以及遇到问题记录的项目设计书,适合java课程设计作业或者学习java一段时间后的项目实战参考
  • java开发的连连看小游戏,游戏包含5个难度,采用“三国杀”头像图片(具体的阅读游戏中的readme文档),内含java代码代码适合新手学习。本人自己写的小游戏,请大家多多指教。
  • 基于java的连连看游戏设计和实现,基本功能包括:消除模块,重新开始模块,刷新模块,选择难度模块,计时模块。Java写的连连看小游戏源码,直接导入就行了
  • Java数字连连看代码

    2022-03-02 20:36:43
    Java小游戏代码
  • 概述+ Java技术体系+Java发展史+Java虚拟机家族:(Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache Harmony/Google Android Dalvik VM、Microsoft ...
  • java小游戏 (源码+视频+文档+ppt) swing连连看游戏java小游戏 (源码+视频+文档+ppt) swing连连看游戏java小游戏 (源码+视频+文档+ppt) swing连连看游戏java小游戏 (源码+视频+文档+ppt) swing连连看游戏java小游戏 ...
  • 本次课程主要为大家详细介绍了Java制作——《连连看小游戏,示例代码介绍的非常详细,具有想当的参考价值,感兴趣的小伙伴们可以学习一下!
  • Java连连看小游戏源码

    2015-01-02 11:14:11
    简单的Java小游戏连连看代码简单易懂,希望大家下载试玩,不足之处给予指正
  • java连连看小游戏

    2022-03-27 12:54:47
    连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案。
  • 主要为大家详细介绍了java连连看游戏菜单部分的设计代码,具有一定的参考价值,感兴趣的伙伴们可以参考一下
  • 连连看小游戏java代码(1)

    千次阅读 2021-03-12 10:31:18
    //MainView 主界面import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event....
  • java贪吃蛇 俄罗斯方块 五子棋 源码
  • 内容索引:JAVA源码,游戏娱乐,连连看,手机游戏,J2ME游戏 Java做的连连看小游戏,有一点点的小错误,希望高手们能对其进行更好的优化。
  • java小游戏代码

    2018-07-09 16:30:47
    该内容为java代码,其中包含有java的一些小游戏(24点图形版、Flying Bird、java通讯录官吏系统源码、连连看等游戏。)希望对大家能有所帮助。
  • 15个java小游戏源码合集:Java打猎射击游戏,Java对对碰按钮版(最终版),Java俄罗斯方块2,Java飞行射击类游戏,Java推箱子2,Java网络五子棋2等等15个Java小游戏源码。
  • else { return (String.valueOf(length / 1024 / 1024) + "kb"); } } //测试 public static void main(String[] args) { JFrame jf = new JFrame("测试");... jf.setSize(300, 400);... jf....
  • Java手机版连连看代码,是j2me开发相关电子书中的源码实例,运行于手机客户端中的连连看游戏,基本型,并不包括太多游戏功能。
  • JAVA语言课程设计——连连看小游戏

    千次阅读 2022-02-05 12:20:21
    8) 每一关的指定时间应该逐渐减少 9) 尝试将按钮换成图片,可以利用数组定义图片名称,然后把随机选择按钮变成随机选择数组下标,继而实现选择图片的功能 代码如下: package test1; import java.awt....
  • 这是一款很好玩的java小游戏,可以跟自己实现并根据源代码进行修改,其中其他东西还需要下载者自己发现……

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,007
精华内容 402
关键字:

java连连看小游戏代码