软件项目管理第四周作业(招标书)
小組成員:龍淼 ?武凡棨
一、項目概述
開發這款游戲的初衷是希望用戶通過簡單的操作便能體會到其中樂趣,工作學習的閑暇之余可以放松身心。
項目概覽圖:
二、項目內容
1.玩法介紹
《2048》是一款益智類小游戲,玩法規則是:玩家控制全部方塊朝同方向運動,兩個同數字方塊碰撞后,合并的數字為它們之和,每次操作都會隨機生成2或者4數字,結果得出2048的方塊則為游戲勝利。
三、技術要求
1.Android操作系統
Android具有開放性強,硬件資源豐富,方便開發的優勢。
Android開發的平臺允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者;對于消費者來講,最大的受益正是豐富的軟件資源。
但同時也會帶來更激烈的競爭,這需要我們考慮自身能否脫穎而出。
2.Java語言
Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程
3.2048相關算法
2048的游戲界面可以看做是一個二維數組。我們的所有操作,實際上都是針對這一個二維數組的。我們可以將二維數組看成多個一維數組來處理,比如左右移動時一行一行的處理,上下移動時一列一列的處理。接下來以向右移動為例去實現它。
假設當前在某一行,我們希望實現數字的相加。首先將這一行讀取出來,當做一維數組來處理。逐個枚舉每一個數字,如果有相鄰且相等的數就直接相加。這時候問題就來了,相等的數中間隔著0怎么處理?我們可以選擇用一個變量記錄之前的非零數,然后跳過0,繼續枚舉后面的數,遇到相同的再相加,最后將一整行的非零數都移到右邊即可。在這里不妨換種思路,為何不先將所有的零數移動到最左邊后再去執行加法呢?
讀取一行數字后,我們先將所有的零存進進一個新數組的左側,2 0 2 0 就成了 0 0 2 2。然后從最右邊開始,將相同且相鄰的數字相加,后一個數置0,防止相加后又參與了相加的問題;接著繼續枚舉下一個數字,處理完后再進行一次移0操作,然后將結果返回給二維數組。
確定了相加的算法后,繼續思考其過程可以發現:數字是往玩家操作的方向堆積的,但相加的方向是反過來的。例如數字向右移動,但卻是從最右邊開始往左相加的;數字向上移動,但卻是從最上面開始往下相加的。不管向哪個方向移動,移0和復制的操作都是一樣的,因此在考慮這一塊時只需要注意實現上的細微差別即可。
另外就是需要設計隨機數的生成。隨機數是在空白格子上隨機生成的,因此要定義一個空白格子結構體,結構體內存的是空白格子在二維數組中的下標。用一個結構體數組來存儲每次移動后的所有空白格子,隨機挑選一個空白格子,隨機生成2或者4(兩者生成概率最好不要完全一樣)即可。
五、建設內容
1.開始設計
注冊賬號并且登錄之后,點擊主頁面的“開始游戲”按鈕,即可開始。
2.計分設計
當有數字合并時,記錄此時合并的數字,加到相應的分數中。
3.結束設計
當游戲界面中沒有得到2048且沒有兩個相同的格子時判定游戲結束。
4.觸控交互設計
用戶通過手指滑動屏幕,從起始位置獲得水平或垂直方向的偏移量以此來判斷用戶意圖。
5.游戲流程設計
總結
以上是生活随笔為你收集整理的软件项目管理第四周作业(招标书)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太乐了
- 下一篇: zynq linux开发环境,手记1:构