亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java實現連連看游戲

2024-07-14 08:43:29
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現連連看游戲的具體代碼,供大家參考,具體內容如下

代碼會實現共享的,這個是截圖

java,連連看,游戲

代碼:

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<p2.y?p1.y:p2.y; for(int i=min+1;i<max;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<p2.x?p1.x:p2.x; for(int i=min+1;i<max;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<chessboard.length;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<chessboard.length;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<chessboard.length-1;i++){ for(int j=1;i<chessboard[i].length-1;j++){ 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<chessboard.length-1;i++){ for(int j=1;j<chessboard[i].length-1;j=j+2){ 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<chessboard.length*chessboard[0].length*10;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<chessboard.length;i++){ for(int j=0;j<chessboard[i].length;j++){  System.out.print(chessboard[i][j]+"/t"); } System.out.println(); } }  //私有方法:專門用來輸出棋盤最上面和最下面要出現的列號 private static void showColsNum( int[][] chessboard ){ for(int i=0;i<chessboard[0].length;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<chessboard.length;i++ ){ //加入前面行號的輸出 if( i==0 || i==chessboard[i].length-1){  System.out.print(" "); }else{ System.out.print(""+i); } for(int j=0;j<chessboard[i].length;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類沒有寫出來了,比較簡單,里面就存了兩個數據,表示數字的行和列,就不上圖了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品无人区太爽高潮在线播放| 国内精品小视频| 国产精品一香蕉国产线看观看| 黄色一区二区三区| 亚洲精品小视频在线观看| 日韩黄在线观看| 米奇精品一区二区三区在线观看| 久久久中精品2020中文| 亚洲风情亚aⅴ在线发布| 国产精品久久久久免费a∨大胸| 亚洲精品日产aⅴ| 国产精品福利网| 色婷婷久久一区二区| 国产精品入口日韩视频大尺度| 亚洲国产成人精品久久久国产成人一区| 亚洲免费伊人电影在线观看av| 久久精品国产2020观看福利| 久久久av免费| …久久精品99久久香蕉国产| 成人高h视频在线| 国产一区二区三区在线免费观看| 亚洲天堂免费在线| 中文字幕av一区| 黄网站色欧美视频| 欧美性生交大片免网| 在线播放日韩av| 亚洲欧美一区二区三区在线| 欧美日韩国产一中文字不卡| 亚洲一级一级97网| 亚洲天堂影视av| 91精品在线一区| 自拍偷拍亚洲欧美| 亚洲最新在线视频| 91国产视频在线| 亚洲人成亚洲人成在线观看| 亚洲欧美变态国产另类| 亚洲第一综合天堂另类专| 国产亚洲精品久久久久久777| 亚洲成人久久网| 亚洲自拍偷拍第一页| 久久亚洲电影天堂| 国产国语videosex另类| 成人免费网站在线看| 国产精品久久久久久av福利| 精品人伦一区二区三区蜜桃网站| 国产精品69久久| 亚洲毛片在线免费观看| 九九久久综合网站| 亚洲精品天天看| 国产午夜精品麻豆| 国产精品高潮呻吟久久av黑人| 亚洲欧洲xxxx| 日韩免费电影在线观看| 久久国产精品久久久久久| 国产盗摄xxxx视频xxx69| 久久99国产精品自在自在app| 亚洲无线码在线一区观看| 亚洲国产成人精品一区二区| 亚洲国产成人精品久久久国产成人一区| 综合av色偷偷网| 国产欧美日韩91| 国产成人精品日本亚洲专区61| 精品国产乱码久久久久久婷婷| 九色成人免费视频| 久久夜色精品亚洲噜噜国产mv| 欧美寡妇偷汉性猛交| 国产高清视频一区三区| 日韩在线观看免费全| 综合激情国产一区| 日韩av手机在线看| 午夜精品一区二区三区在线视| 2021久久精品国产99国产精品| 欧美老女人性生活| 一本色道久久88精品综合| 一区二区在线免费视频| 国产精品吹潮在线观看| 亚洲最新视频在线| 欧洲亚洲女同hd| 久久久精品2019中文字幕神马| 国产亚洲精品久久久久久| 中日韩美女免费视频网站在线观看| 欧美激情视频播放| 国内精品久久久久| 日韩精品中文字幕在线观看| 一个人看的www久久| 久久电影一区二区| xvideos亚洲人网站| 精品久久久久久久久久ntr影视| 国产精品欧美一区二区三区奶水| 97在线视频国产| 91久久国产婷婷一区二区| 国内免费久久久久久久久久久| 免费99精品国产自在在线| 日本成人黄色片| 成人性生交大片免费观看嘿嘿视频| 91久久久久久久久久| 91精品国产91| 亚洲一区中文字幕在线观看| 精品中文字幕视频| 亚洲精品久久久久国产| 亚洲xxxx妇黄裸体| 国产精品自产拍在线观| 亚洲18私人小影院| 日韩av免费在线播放| 国产精品网站大全| 国产一区二区美女视频| 日韩av电影国产| 91精品在线国产| 欧美性猛交xxxx免费看| 九九热这里只有在线精品视| 日韩在线视频中文字幕| 日韩中文字幕免费看| 国产精品久久久久影院日本| 国产精品久久久久久久久久久久久久| 欧美日韩福利在线观看| 日韩在线视频中文字幕| 国产极品jizzhd欧美| 色av中文字幕一区| 国产午夜精品美女视频明星a级| 一色桃子一区二区| 国产精品久久色| 国产91热爆ts人妖在线| 久久综合国产精品台湾中文娱乐网| 亚洲激情视频在线| 福利视频一区二区| 日本成人黄色片| 欧美美最猛性xxxxxx| 国产美女精彩久久| 午夜精品久久久99热福利| 国产精品三级美女白浆呻吟| 精品国产一区二区三区在线观看| 成人av在线天堂| 一区二区中文字幕| 国产亚洲精品美女| 亚洲高清久久久久久| 国产精品扒开腿做爽爽爽男男| 96精品久久久久中文字幕| 久久久亚洲影院你懂的| 亚洲精品mp4| 亚洲男人av电影| 正在播放欧美一区| 国产成人免费av电影| 午夜欧美不卡精品aaaaa| 91免费福利视频| 日本精品久久久久久久| 亚洲精品久久久久中文字幕欢迎你| xxxxx91麻豆| 在线观看日韩视频| 日韩视频免费大全中文字幕| 日韩女优在线播放| 欧美壮男野外gaytube| 成人h视频在线| 欧美性猛交xxxx乱大交蜜桃| 九九久久久久久久久激情| 国产精品美女午夜av| 亚洲国产日韩欧美综合久久| 亚洲欧美国产视频| 国产精品久久久亚洲| 国产精品美女在线观看| 亚洲色图18p| xx视频.9999.com| 欧美日韩国产二区| 亚洲精品视频中文字幕| 国产日本欧美一区二区三区在线|