我的改進版2048(1)

2021-09-09 02:30:40 字數 1952 閱讀 3964

前幾天好幾次看到有朋友曬出玩2048刷高分的截圖。我就想我能不能也做乙個2048呢?細緻想了想2048遊戲的規律。發現事實上邏輯上非常easy,也不用研究什麼演算法,於是我立即認為我能夠非常快寫出來。當天下午我就用了四個小時完畢了2048的基本功能。

幾天後認為不滿足。於是給我的2048加了存檔、讀檔和後退一步的功能,這樣就更好刷分了呢!

使用語言:c#; 平台:visual studio 2012 win form。

怎樣完畢2048的基本功能呢?2048在每一次操作後16個方格的數字就有可能發生變化。所以在我的程式裡用乙個4乘4的二維陣列來存這16個值,0表示沒有數字。每一次操作直接改變陣列的值。然後再把陣列的值填到16個方格中。

首先來看程式中幾個全域性的變數:

public int[,] matrixvalue = new int[4, 4];//相應16個方格的數字。0表示沒有數字

public bool istherechanged = false;//表示每一次按鍵後是否發生改變

public int score = 0;//此次遊戲的分數

public int maxscore = 0;//記錄最高分,用於推斷是否破紀錄

public listdatastorerecord = new list();//儲存全部存檔

public listhistory = new list();//存近期10步操作

如今想一下,玩2048的時候往乙個方向滑動它是怎麼改變16個方格的數字的。我把這個過程分解成三個步驟,相應程式中的三個函式。我認為在軟體開發過程中。這樣的模組化設計的思想是非常重要的。

下面是這三個函式(三個步驟):

public void addsamenumber(string command)//first step往指定方向疊加同樣數字的相鄰兩格
public void movetoedge(string command)//second step將全部有數字的格仔往指定方向靠邊移動
public void addannumber()//third step在沒有數字的格仔中隨機選擇乙個加入數字
事實上凝視上已經說明了其目的。第乙個函式會在指定方向上疊加相鄰兩個同樣的數字。相鄰的意思是中間沒有非0的數字,也就是有可能兩個同樣數字中間兩個空格,這樣的情況下也要相機;第二個函式是在實現了同樣數字的疊加之後把全部數字往乙個方向挪動。第三個函式實現的是在乙個操作過後16個方格狀態有改變的時候隨機給空格填入乙個數字。

第乙個函式:(僅僅貼出向上移動的**)

public void addsamenumber(string command)//first step往指定方向疊加同樣數字的相鄰兩格

else}}

}}//if

第二個函式:

public void movetoedge(string command)//second step將全部有數字的格仔往指定方向靠邊移動}}

}

第三個函式:

public void addannumber()//third step在沒有數字的格仔中隨機選擇乙個加入數字

}random rand = new random();

int temp = rand.next(emptycount);

emptycount = 0;

for (int i = 0; i < 4; i++)}}

}

其它的請看下篇文章《我的改進版2048(2)》

Beetle遊戲改進版

在執行這個遊戲時,最後螢幕上顯示的是如下圖所示。甲蟲情況變成了beetle 60aeb0。原來在system.out.println beetle 中實際上用到了tostring方法,為了清楚表達甲蟲的情況,要重寫這一方法。在beetle類中加入下面重寫的tosting 方法 public stri...

六 改進版(Hit UFO)

2 實現 專案位址 參考部落格 按 adapter模式 設計圖修改飛碟遊戲 使它同時支援物理運動與運動學 變換 運動 飛碟起始位置隨機生成 vector3 startpos new vector3 unityengine.random.range 70,70 unityengine.random.r...

氣泡排序改進版

普通的氣泡排序的演算法的平均時間複雜度為o n 2 通過對一些特殊情況的研究,我們得出了這個改進版的氣泡排序,所以它的時間複雜度是 沒錯,還是o n 2 否則就叫不叫氣泡排序早就改名了 氣泡排序的時間消費主要是在比較以及交換的次數上,每一趟冒泡都會將當前序列最大的數 冒 到序列的最後,然後序列縮小乙...