本文實(shí)例為大家分享了java實(shí)現(xiàn)連連看游戲的具體代碼,供大家參考,具體內(nèi)容如下
在蒙陰等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站制作,蒙陰網(wǎng)站建設(shè)費(fèi)用合理。
代碼會(huì)實(shí)現(xiàn)共享的,這個(gè)是截圖
代碼:
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版權(quán):lr"); System.out.println("=========================="); System.out.println("請(qǐng)先輸入圖片數(shù)量(難度系數(shù) 1~9):"); int picnum=sc.nextInt(); System.out.println("請(qǐng)輸入棋盤(pán)的行數(shù):"); int rows=sc.nextInt(); int cols=0; //列數(shù) int count=0; //計(jì)數(shù)器 do{ if (count>0){ System.out.println("輸入有誤,列數(shù)必須大于0!"); } System.out.println("請(qǐng)輸入棋盤(pán)列數(shù):"); cols=sc.nextInt(); count++; }while( cols<1 || cols%2!=0); //創(chuàng)建二維數(shù)組,生成棋盤(pán),列數(shù)+2的原因:做出邊框的效果 數(shù)組剛剛生成時(shí),每個(gè)元素都是0 int[][] chessboard=new int[ rows+2 ][ cols+2]; //隨機(jī)生成的圖片數(shù)值存入這個(gè)二維數(shù)組中,注意:邊框不存值,任為0 initBoard( chessboard ,picnum); System.out.println("初始化后的棋盤(pán)為:"); showBoard2( chessboard); //打亂棋盤(pán) shuffle( chessboard ); //輸出 System.out.println("打亂后的棋盤(pán)為:"); showBoard2( chessboard); //實(shí)現(xiàn)消除業(yè)務(wù) // 1.定義兩個(gè)Point對(duì)象 Point p1=new Point(); Point p2=new Point(); // 2.游戲狀態(tài) isGameOver boolean isGameOver=false; do{ // 3.循環(huán)輸入兩個(gè)點(diǎn) do...while System.out.println("請(qǐng)輸入兩個(gè)點(diǎn)的坐標(biāo)"); p1.x=sc.nextInt(); p1.y=sc.nextInt(); p2.x=sc.nextInt(); p2.y=sc.nextInt(); // 4.判斷這兩個(gè)數(shù)是否可以消除 if( isErazeOk( chessboard,p1,p2)){ //如果可以消除,將這兩個(gè)點(diǎn)在chessboard 中的值都設(shè)為0 chessboard[p1.x][p1.y]=0; chessboard[p2.x][p2.y]=0; if( checkGameOver( chessboard )){ isGameOver=true; } } //顯示消除后的棋盤(pán) showBoard2( chessboard ); }while( !isGameOver ); System.out.println("游戲結(jié)束!"); } //判斷是否能消除的業(yè)務(wù) public static boolean isErazeOk(int[][] chessboard ,Point p1,Point p2){ // 1.兩個(gè)點(diǎn)不是同一個(gè) if( p1.equals( p2) ){ System.out.println("輸入的兩個(gè)點(diǎn)位置不能相同!"); } // 2。兩個(gè)點(diǎn)的值是否相等 if(chessboard[p1.x][p1.y] !=chessboard[p2.x][p2.y]){ System.out.println("輸入的兩個(gè)點(diǎn)值不相同!請(qǐng)重新輸入"); return false; } // 3.判斷兩個(gè)點(diǎn)的連線(xiàn)情況 if( doOneLine(chessboard,p1,p2) || doTwoLine(chessboard,p1,p2) || doThreeLine(chessboard,p1,p2)){ return true; } return false; } // 1連線(xiàn) public static boolean doOneLine(int[][] chessboard,Point p1,Point p2){ //定義最大值和最小值 int max=0; int min=0; //判斷是循環(huán)行還是循環(huán)列 if( p1.x==p2.x){ //找y的最大值、找y的最小值、循環(huán)從 min+1 至 max-1、判斷是否為0、如果中間有一個(gè)不為0,則返回 false max=p1.y>p2.y?p1.y:p2.y; min=p1.yp2.x?p1.x:p2.x; min=p1.x
Point類(lèi)沒(méi)有寫(xiě)出來(lái)了,比較簡(jiǎn)單,里面就存了兩個(gè)數(shù)據(jù),表示數(shù)字的行和列,就不上圖了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。