亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

連連看的實現

系統 2139 0



?龍哥叫我們一個組做一個小游戲項目,而我們組要做的是打磚塊,窗體上面的磚塊其實和連連看一樣,怎么樣顯示出來,怎么樣消掉,都和連連看差不多,所以我就先做一個連連看試試刀。

??????? ?連連看實現其實不難,就是使用JTable和TableModel,再加上監聽器,就可以實現一個簡單的連連看:


??????? 1.和以往相同,先用Swing組建實現一個窗體,現在都是小菜一碟了


??????? 2.再寫一個類,繼承MouseAdapter,實現TableModel接口。
???????????????????1.繼承MouseAdapter,就是為了重寫mouseReleased方法,而后實現點擊兩個圖片,從而

??????????????????? 消除兩個圖片。
?????????????????? 2.實現TableModel,我們要給數組加上圖片,還有得到每個圖片的值。

?

?

?

很多東西都寫在代碼上面,這里不多說,我現在做的連連看還只是實現了一些基本功能,有的功能還沒實現,其實只是幾個方法的實現問題。現在我主要是糾結算法。連連看難就難在算法,我寫的這點算法,花了我一天一夜,能連起來的圖片我基本都實現了,但是有的不能連起來的圖片也能連起來并且消掉,我就有點郁悶了,我看了很多次我寫的算法,實在看不出哪里存在問題,希望各位高手能指點指點。。。在下感激不盡? = =。。還有,我沒有讓每個圖片都出現偶數個,所以最后一班都不能全部消掉。。。我現在只想先把算法搞定。

?

這是一些截圖

?


連連看的實現
?


連連看的實現
?


連連看的實現
?

?

?

?

算法代碼

    //判斷相連的方法
	public boolean connected(int r1,int c1,int r2,int c2){
		//===============================沒有拐點==================================//
		//同行
		if(r1==r2){
			//在第一行或者最后一行
			if(r1==0||r1==11){
				return true;
			}
			//不在第一行和最后一行
			//相鄰
			if((r1!=0&&r1!=11)&&(c1==c2+1||c1==c2-1)){
				return true;
			}
			//不相鄰
			if((r1!=0&&r1!=11)&&(c1!=c2+1||c1!=c2-1)){
				for(int i = c1+1;i<c2;i++){
					if(data[r1][i]==""){
						return true;
					}
				}
				//有兩個拐點的部分方法
				for(int a1 = 0;a1<r1;a1++){
					for(int i = a1;i<r1;i++){
						for(int j = c1+1;j<c2;j++){
							if((data[i][c1]=="")&&(data[i][c2]=="")&&(data[a1][j]=="")){
								return true;
							}
						}
					}
				}
				for(int a2 = r1+1;a2<12;a2++){
					for(int i = r1+1;i<a2+1;i++){
						for(int j = c1+1;j<c2;j++){
							if((data[i][c1]=="")&&(data[i][c2]=="")&&(data[a2][j]=="")){
								return true;
							}
						}
					}
				}
			}
		}
		//同列
		if(c1==c2){
			//在第一列或者最后一列
			if(c1==0||c1==11){
				return true;
			}
			//不在第一列和最后一列
			//相鄰
			if((c1!=0||c1!=11)&&(r1==r2+1||r1==r2-1)){
				return true;
			}
			//不相鄰
			if((c1!=0||c1!=11)&&(r1!=r2+1||r1!=r2-1)){
				for(int i = r1+1;i<r2;i++){
					if(data[i][c1]==""){
						return true;
					}
				}
				//有兩個拐點的部分方法
				for(int b1 = 0;b1<c1;b1++){
					for(int i = b1;i<c1;i++){
						for(int j = r1+1;j<r2;j++){
							if((data[r1][i]=="")&&(data[r2][i]=="")&&(data[j][b1]=="")){
								return true;
							}
						}
					}
				}
				for(int b2 = c1+1;b2<12;b2++){
					for(int i = c1+1;i<b2+1;i++){
						for(int j = r1+1;j<r2;j++){
							if((data[r1][i]=="")&&(data[r2][i]=="")&&(data[j][b2]=="")){
								return true;
							}
						}
					}
				}
			}
		}
		//=============================只有一個拐點================================//
		//右上角或左上角為空
		if(data[r1][c2]==""){
			//列相鄰
			if(c1==c2+1||c1==c2-1){
				//行相鄰
				if(r1==r2+1||r1==r2-1){
					return true;
				}
				//行不相鄰
				if(r1!=r2+1||r1!=r2-1){
					for(int i = r1+1;i<r2;i++){
						if(data[i][c2]==""){
							return true;
						}
					}
				}
			}
			//行相鄰
			if(r1==r2+1||r1==r2-1){
				//列不相鄰
				if(c1!=c2+1||c1!=c2-1){
					for(int i = c1+1;i<c2;i++){
						if(data[r1][i]==""){
							return true;
						}
					}
					for(int i = c2+1;i<c1;i++){
						if(data[r1][i]==""){
							return true;
						}
					}
				}
			}
			//行和列都不相鄰
			if((r1!=r2+1||r1!=r2-1)&&(c1!=c2+1||c1!=c2-1)){
				for(int i = r1+1;i<r2;i++){
					for(int j = c1+1;j<c2;j++){
						if((data[i][c2]=="")&&(data[r1][j]=="")){
							return true;
						}
					}
				}
				for(int i = r1+1;i<r2;i++){
					for(int j = c2+1;j<c1;j++){
						if((data[i][c2]=="")&&(data[r1][j]=="")){
							return true;
						}
					}
				}
			}
		}
		//左下角或右下角為空
		if(data[r2][c1]==""){
			//列相鄰
			if(c1==c2+1||c1==c2-1){
				//行相鄰
				if(r1==r2+1||r1==r2-1){
					return true;
				}
				//行不相鄰
				if(r1!=r2+1||r1!=r2-1){
					for(int i = r1+1;i<r2;i++){
						if(data[i][c1]==""){
							return true;
						}
					}
				}
			}
			//行相鄰
			if(r1==r2+1||r1==r2-1){
				//列不相鄰
				if(c1!=c2+1||c1!=c2-1){
					for(int i = c1+1;i<c2;i++){
						if(data[r2][i]==""){
							return true;
						}
					}
					for(int i = c2+1;i<c1;i++){
						if(data[r2][i]==""){
							return true;
						}
					}
				}
			}
			//行和列都不相鄰
			if((r1!=r2+1||r1!=r2-1)&&(c1!=c2+1||c1!=c2-1)){
				for(int i = r1+1;i<r2;i++){
					for(int j = c1+1;j<c2;j++){
						if((data[i][c1]=="")&&(data[r2][j]=="")){
							return true;
						}
					}
				}
				for(int i = r1+1;i<r2;i++){
					for(int j = c2+1;j<c1;j++){
						if((data[i][c1]=="")&&(data[r2][j]=="")){
							return true;
						}
					}
				}
			}
		}
		//==============================有兩個拐點=================================//
		for(int d1 = 0;d1<c1;d1++){
			for(int i = d1;i<c1;i++){
				for(int j = r1+1;j<r2;j++){
					for(int t = d1;t<c2;t++){
						if((data[r1][i]=="")&&(data[r2][t]=="")&&(data[j][d1]=="")){
							return true;
						}
					}
				}
			}
		}
		for(int d2 = c2+1;d2<12;d2++){
			for(int i = c2+1;i<d2+1;i++){
				for(int j = r1+1;j<r2;j++){
					for(int t = c1+1;t<d2+1;t++){
						if((data[r1][t]=="")&&(data[r2][i]=="")&&(data[j][d2]=="")){
							return true;
						}
					}
				}
			}
		}
		for(int e1 = 0;e1<r1;e1++){
			for(int i = e1;i<r1;i++){
				for(int j = c1+1;j<c2;j++){
					for(int t = e1;t<r2;t++){
						if((data[i][c1]=="")&&(data[t][c2]=="")&&(data[e1][j]=="")){
							return true;
						}
					}
				}
			}
		}
		for(int e2 = r2+1;e2<12;e2++){
			for(int i = r2+1;i<e2+1;i++){
				for(int j = c1+1;j<c2;j++){
					for(int t = r1+1;t<e2+1;t++){
						if((data[i][c2]=="")&&(data[t][c1]=="")&&(data[e2][j]=="")){
							return true;
						}
					}
				}
			}
		}
		for(int f1 = c1+1;f1<c2;f1++){
			for(int i = c1+1;i<f1+1;i++){
				for(int j = f1;j<c2;j++){
					for(int t = r1+1;t<r2;t++){
						if((data[r1][i]=="")&&(data[r2][j]=="")&&(data[t][f1]=="")){
							return true;
						}
					}
				}
			}
		}
		for(int f2 = r1+1;f2<r2;f2++){
			for(int i = r1+1;i<f2+1;i++){
				for(int j = f2;j<r2;j++){
					for(int t = c1+1;t<c2;t++){
						if((data[i][c1]=="")&&(data[j][c2]=="")&&(data[f2][t]=="")){
							return true;
						}
					}
				}
			}
		}
		//其他的都返回false
		return false;
	}
  

?

連連看的實現


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲综合日韩 | 亚洲天天干 | 色色网视频 | a毛片| 欧美成人一区二区三区不卡 | 国产精品久久久久久久 | 热久久这里只有 | 男女性高爱麻豆 | 中文字幕欧美日韩高清 | 精品玖玖玖视频在线观看 | 青青成人 | 欧美体内she精视频毛片 | 麻豆久久精品 | 日韩精品第三页 | 亚洲最黄视频 | 中文字幕日韩视频 | 国产成a人片在线观看视频99 | 久久精品国产99久久3d动漫 | 免费观看四虎精品国产永久 | 最新国产网站 | 国产国语videosex | 一区二区亚洲精品 | 色综合久久综合欧美综合 | 国产色婷婷免费视频 | 美女叫春 | 午夜主播国产福利视频在线 | 色综合中文字幕天天在线 | 欧美在线视频7777kkkk | 欧美精品aaa久久久影院 | 亚欧乱色视频大全 | 性视频xxx| 精品国产品香蕉在线观看75 | 国产一区二区三区四区在线观看 | 午夜影院在线 | 亚洲国产精久久久久久久 | 久热re这里只有精品视频 | 天天插天天操天天射 | 亚洲欧美日韩国产综合高清 | 四虎在线免费视频 | 色偷偷尼玛图亚洲综合 | 亚洲毛片在线观看 |