JAVA版連連看界面對象建立算法研究

在介紹遊戲界面對象如何建立以前,首行得介紹一個我抽象的這個對象的類結構和實現狀況:
/*
* 抽象連連看當中的
* 所要連的對象
* */
import java.awt.*;
public class ImageShow
{
private static Toolkit tk=Toolkit.getDefaultToolkit(); //工具對象
private Image p_w_picpath; //連連對象上的顯示的圖像對象
public int x; //座標X的位置
public int y; //座標Y的位置
public int p_w_picpathcount; //圖像編制的序列引用
public boolean bmobang=false;
/*
* 構造一個連連對象
* */
public ImageShow(int x,int y,int p_w_picpathcount)
{
this.x=x;
this.y=y;
this.p_w_picpathcount=p_w_picpathcount;
p_w_picpath=tk.getImage(ImageShow.class.getClassLoader().getResource("p_w_picpath\\"+p_w_picpathcount+".gif"));
}
/*
* 用於在屏幕上畫出此對象
* */
public void draw(Graphics g)
{
g.drawImage(p_w_picpath,x,y, 50, 50,null);
g.draw3DRect(x, y, 50, 50, true);
}
}
這個對象的類結構和實現看起來是很簡單,可是這個類在整個遊戲當中是很是重要的,幾乎能夠說整個遊戲是圍繞着這個對象在展開的。
下面來看對象的建立方式:
本連連看遊戲,沒有固定的對象排列方式,每一次遊戲開始都是隨機產生的,此隨機產生,也不會影響到遊戲的可玩性的。
算法和實現方法以下:
本遊戲總共有30種不一樣的圖片可供隨機產生,可是第一關只能是從前十張圖片當中抽取,遊戲總共有十關,而後的每一關都是以兩張圖片在遞增,從而實現了每一關圖片種數在增長。
本遊戲建立遊戲對象的對數方法,每一關都是建立以20對對象爲基礎,而後再加上關數乘以3,從而實現了每一關上的對象對數都不一樣。
說到底,要想對象隨機的出如今屏幕上,並且沒有重疊對象的狀況,全部出現的對象則徹底是能夠被連的,也就是說不可能出現倚數的狀況,不可能出現最後沒有成對匹配的狀況,是一個至關複雜的工做,還要爲後面的連連看算法設計出應用的須要。
我採用的方式是將屏幕劃分紅一個矩正的形式,第一個對象正好佔住一個矩正當中的位置,也就很好的定位好了對象,設計矩正以前首先肯定好遊戲對象的大小,
我將對象的大小設置成寬50,高50的正方形體,那麼就能夠將遊戲屏幕劃分紅以寬爲50,高爲50的矩正排列形式,從起始位置開始,將每個矩正的x,y信息保存在一個集合當中,爲建立對象使用,當隨機建立一個對象,也必須從矩正集合當中選取一個矩正X,Y軸信息,做爲此建立對象的X,Y軸的屬性,而後就將此矩正的信息從矩正集合當中刪除掉,那麼建立下一個對象時就不會有重疊的現象。
代碼實現以下:
建立矩正信息:
/*
* 建立遊戲場景X,Y軸的矩正序列
* */
public void addItxy()
{
for(int i=100;i<=500; i+=50 )
{
for(int n=0;n<=750;n+=50)
{
itx.add(n);
ity.add(i);
}
}
}
I表示的Y軸,N表示的是X軸,Y軸是從100開始是由於讓出一些位置給遊戲其餘元素用的,結束於500,X軸是從0開始到750以50*50的寬高產生的矩正集合.
建立對象的代碼實現方式和建立隱藏在對象上的魔棒工具:
/*
* 建立連連對象
* */
public void addImage()
{
id=10+num*2; //這個屬性就是要從多少張圖片樣式中隨機抽取
for(int i=0;i<20+num*3;i++)
{
int rn=r.nextInt(itx.size());
int rid=r.nextInt(id);
ImageShow is=new ImageShow(itx.get(rn),ity.get(rn),rid);
itx.remove(rn);
ity.remove(rn);
p_w_picpathshows.add(is);
int rn1=r.nextInt(itx.size());
ImageShow is1=new ImageShow(itx.get(rn1),ity.get(rn1),rid);
p_w_picpathshows.add(is1);
itx.remove(rn1);
ity.remove(rn1);
}
/*
*下面就是實現建立魔棒工具的實現
*就是隨機得到此局有多少個對象上有魔棒工具
*而後隨機抽取上面得到的一個數的個數的對象上有
*魔棒工具,這樣當用戶連了具備魔棒工具屬性的
*對象就在魔棒工具包里加上一個魔棒工具
*/
int n=r.nextInt(10);
int m=0;
for(int i=0;i<n;i++)
{
m=r.nextInt(p_w_picpathshows.size()-1);
p_w_picpathshows.get(m).bmobang=true;
}
}
爲了使遊戲最後不出現不相符不成對的對象出現,使玩家沒法玩完遊戲,就必須在建立對象時,隨機抽取一個圖片樣式編號時,那就同時建立兩個以此圖片樣式編號的對象,可是抽取的矩正位置必須不一樣,那麼就實現了遊戲不會出現重疊的對象的現象和遊戲成對出現的結果。
連連看遊戲遊戲界面對象建立算法介紹和實現就介紹到這了,若是須要具體的實現,能夠去下載個人源碼,研究具體的實現方法。
相關文章
相關標籤/搜索