製作單機俄羅斯方塊遊戲心得(二)

2021-05-25 01:03:26 字數 2078 閱讀 7224

前面說的是建立了piece0, piece1,piece2,piece3,piece4,piece5,piece6.其中變化的方塊,由於遊戲開始和下乙個方塊出現時是隨機得到不同的大方塊的,在定義piece時用changes屬性(protectec  list> changes = new arraylist<>())來儲存變化的方塊,所以要想隨機的到乙個方塊,在piece提供了乙個gedefault()方法,並提供了乙個隨機產生數字的想要得到的變化的隨機數屬性random(protected random random = new random();  )。

protected random random = new random();

public listgetdefault()

在piece1,piece2,piece3,piece4,piece5,piece6類裡新增下面的語句super.setsquares(getdefault());

注意了前面只說了大方塊和小方塊的類。特別是小方塊裡的image image屬性且 前面建立了各個piece的子類。每個子類都提供乙個含有image構造器。只需從檔案裡讀取就可以建立乙個可以下降的大方塊了。下面說說建立與顯示大方塊。新建乙個piececreator介面專門用於建立大方塊。(注:在這裡我想不出書的作者為什麼建立這個介面)並未介面提供了乙個piececreatorimpl實現類

public inte***ce piececreator

為了建立乙個真正帶有的物快,很明顯需要考慮的因素是:必須得到,為此在piececreatorimpl類提供了getimge(int key)方法。(關於引數key的加入待會看了後面會明白)。從檔案裡得到要有檔案的讀取操作。為了不用每次都去檔案裡讀取乙個image物件,在piececreatorimpl裡提供了乙個map類儲存讀取過的image物件

private mapimages = new hashmap();

但是對於map裡的又是從**來的呢?當然是讀取檔案的來的。所以有設計了乙個imageutil類來讀取

public class imageutil catch (ioexception e) }

} //於是map中的就是下面**得來的。從map中得到物件,如果map中沒有對應的物件,則建立

private image getimage(int key)

return this.images.get(key);  }

(個人認為把放入map應該單獨定義乙個方法)

得到了下面改建立把加入到square裡進而建立乙個大方塊了,注意由於檔案裡保留了七種不同顏色的(/

/總共有七種顏色的方塊

private final static int color_size = 7;),

所以獲得時也是提供乙個在piececreatorimplement類裡提供了random屬性

(private random random = new random();)

來隨機讀取一張,

public piece createpiece(int x, int y)

/*** 初始化各個大方快,隨機建立各個大方框

*/public piece initpiece(image image) else if(piecetype == 1) else if(piecetype == 2) else if(piecetype == 2) else if(piecetype == 3) else if(piecetype == 5) else if(piecetype == 6)

return piece;}

需要注意的是,遊戲中大方塊出現的位置和移動的位置的實現是通過改變方塊位置的縱橫座標來實現的,又由於實際上大方塊是由小方塊組成的,只要同時改變組成大方塊的所有小方塊的x和y 座標就可以了,為此piece提供了一以下方法

//讓piece物件中所有的square物件的x座標都加上引數x

public void setsquarexlocation(int x) {

for(int i = 0;ichange = this.changes.get(i);

for(int j = 0;jchange = this.changes.get(i);

for(int j = 0;j

俄羅斯方塊遊戲

大二上學期前兩周的課程設計寫 更多的是借鑑 了乙個500多行的俄羅斯方塊遊戲,畢竟也是花了兩天時間把被人的看懂,然後花了兩天多的時間敲出來,又花了兩天時間寫了4000多字的專案報告,所有有必要在部落格中寫下來以留作紀念。struct block blocks 7 i 口 l 反l z 反z t 用十...

俄羅斯方塊高階 AI俄羅斯方塊

前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...

C 俄羅斯方塊遊戲

俄羅斯方塊是一款非常經典的老遊戲,相比現在的網路遊戲和大型遊戲而言,俄羅斯方塊非常小。不要看似小,要實現俄羅斯方塊的全部功能也不容易。先說說涉及的知識點 繼承 不同的方塊繼承於方塊類 多型 每種方塊都可以旋轉 初始化,但是每種方塊的旋轉都不一樣,採用抽象方法定義 簡單工廠設計模式 由工廠隨機建立方塊...