用控制台寫類表單2048小遊戲

來源:互聯網
上載者:User

標籤:

原文地址:用控制台寫類表單2048小遊戲餘文

2048是一個很簡單的小遊戲,這是我自己實現的一個版本。

這個版本有兩個特色

  • 這是一個高仿表單程式的控制台程式。
  • 通過使用指標將四個方向的移動簡化成了一個方向的移動。

當初剛出來2048小遊戲的時候,玩的不亦樂乎。之後根據遊戲規則自己花了一下午時間用控制台寫了一個玩,沒有參考源碼。

當時只實現了遊戲的移動邏輯和勝負判定邏輯,介面很簡單,但已經可以玩玩了。

這是當初剛寫完發空間說說得瑟的時候。

 

今年5月有段時候比較閑,對程式做了較大更新。

  • 即時顯示當前得分
  • 將原來行列的依次移動變為多線程並行移動,通過鎖機制保證分數不會多加。
  • 模仿原介面的方塊輸出
  • 背景顏色和前景顏色隨數字變化
  • 遊戲結束後以螺旋樣式清理介面

如下,更新後的小遊戲雖然還是控制台程式,但已經很像是一個表單程式了。

這個程式本質只是對一個長寬為4的二維數組進行操作,並不很難。

public static readonly int[,] _cells = new int[4, 4];

自己覺得比較有意思的是關於移動的,所以特意拉出來單獨說一下。

因為四個方向的移動,本質都是一樣的,只是方向不同。如果為四個方向各寫一套方法,沒有必要,也很繁瑣。所以想將四個方向的移動轉化為一個方向的移動。

為實現這個目的,定義了四套指標

private static Dictionary<DirectionEnum, int*[,]> _directionDic = new Dictionary<DirectionEnum, int*[,]>(){    {DirectionEnum.Up, new int*[4, 4]},    {DirectionEnum.Down, new int*[4, 4]},    {DirectionEnum.Left, new int*[4, 4]},    {DirectionEnum.Right, new int*[4, 4]}};

每套指標分別指向數組旋轉0度,90度,180度,270度的位置。

 

static MatrixHelper(){    for (var i = 0; i < 4; i++)    {        for (var j = 0; j < 4; j++)        {            fixed (int* intPoint = &Matrix._cells[i, j])            {                _directionDic[DirectionEnum.Up][i, j] = intPoint;                _directionDic[DirectionEnum.Down][i, 3 - j] = intPoint;                _directionDic[DirectionEnum.Left][j, i] = intPoint;                _directionDic[DirectionEnum.Right][3 - j, 3 - i] = intPoint;            }        }    }}

 

之後的各個方向的移動只需要轉化為對應指標向上的移動即可。因為各個指標指向的實際是旋轉後的方向,實際中指標向上移動自然會分別變成實際數組的向左,向右,向上,向下移動。

public static bool Move(DirectionEnum directionEnum){    return MoveUp(_directionDic[directionEnum]);}

MoveUp方法比較長,就不貼出來了。

另一個比較特色的就是將控制台程式做成了表單的形式。但這個雖然繁瑣,但沒什麼複雜的,只是繁瑣而已。比較麻煩的突破控制台程式預設16種顏色的辦法,是從網上找來的,在ColorSetter這個檔案中。感興趣的找來看看。其他的就完全是自己實現了。

 程式已經上傳到GitHub上,具體地址如下

GitHub地址

用控制台寫類表單2048小遊戲

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.