我羅斯開發日記
這個作業要求在**|2020物件導向程式設計|
-|-|-
這個作業要求在**|我羅斯方塊匯報(1)
這個作業的目標|匯報自己這個階段的開發進度,製作一篇開發日記
參考文獻|c++如何移動游標
參考文獻|c語言控制台讀取上下鍵指令
github位址|teris-plus
小組成員|學號
肖清江|131901121
陳上委|031902303
黃朝威|031902309
時間都記不得了誰提出的功能也都記不得了就變成了敘述式的大雜燴
這裡是在未採用windows.h下僅僅使用輸入出流來處理圖形介面
的開發匯報,目前已經完成能夠列印邊界並生成不同的方塊實現
方塊的自由下落以及接收來自鍵盤的訊號指示僅能夠向左向右
以及加速下落還未能夠實現旋轉或者說旋轉仍舊處在不穩定的
的試用階段,實現了邊界的檢測使得向左向右的範圍不會與圖形
邊界相互衝突也能夠實現方塊下落不會與底部邊界,底部已經存
在的方塊相互衝突,看似就實現了基礎的功能甚至旋轉消行都未
可這開發的過程可是真的bug不少。
首先出現的問題就是如何列印邊界的問題,這裡起初採用的是使
迴圈來解決問題非邊界區的打出空格邊界區列印■貌似能輕鬆解
結果乙個迴圈下來輸出的介面仍舊只有控制台漆黑的背景,單獨
進行debug時候發現如果使用一直列印的方法會使得■互相重疊
for(int i=0;i<23;i++)cout << "■";
後來糾正了這一問題但是又想到此次的思路是構建乙個陣列將
正在下落的方塊的資料值計為1著地的方塊計為2邊界的方塊數
據計為3並且配合多個函式使用使用其中乙個函式將正在下落
的區域賦值為0後再配合另乙個函式根據方塊物件資料中的座標
來重新將變化後的方塊區域進行賦值最後再繪圖出來在修改如何
處理邊界的時候又冒出來個棘手的問題如果按照修改的方案輸出
空格和圖形那麼游標此時已經在整個圖形區域的右下方此時處理
輸出的內容是不會出現在邊界之內簡而言之就是如何移動游標讓
重新整理介面與生成方塊比較容易解決,接下來便是如何處理方塊的
由下落起初採取的方式便是直接套乙個迴圈確實表面解決結果
發現方塊下落速度貌似不受控制還是使用乙個區域性變數根據局
變數的值的變化來解決以何種速度下降,解決下落的問題後便著
急地加入了區域性變數來接受鍵盤輸入的訊號按照參考文獻加入了
接收指令的switch之後在執行時發現有乙個棘手的問題方塊不能
夠自由下落除錯時候發現程式一直在等待我在控制台介面輸入指
令旋即發現需要乙個能夠判斷是否有從鍵盤輸入的函式按照現有
地響應鍵盤輸入事件,之後對整個迴圈進行了重構使得能夠接收
訊號並處理變化後的圖形,有了接收訊號並未急於開發旋轉模組
這部分功能比較複雜在構建思路中需要先檢測條件是否允許以及
如何變化極有可能造成已重構的**整體的變動,所以先處理下
落中碰底後停止變化並且生成新的方塊以及左右移動不會碰壁的
這一問題結果一開始的思路是結合方塊物件中的資料成員來判斷
是否有出現變形的情況就衍生了先針對方塊的種類後針對方塊的
狀態進行判斷是否到達邊界的思路,這就很麻煩了因為基本思路
是根據陣列的某個位置的值來判斷該區域是個什麼東西,方塊的
基本形狀加上方塊的旋轉能產生15種不同的狀態在處理邊界的函
數上需要寫出至少45個函式處理,**量就會上公升就苦於如何解
絕這一問題直至討論後得出的解決方法是利用找到每個方塊下方
是否是邊界或者著地的方塊:
1111
221111
222222
像上圖中1組成的z字形方塊通過迴圈找到1下方確實是2此時接收
加速下落的訊號是無效的處理為落地並生成新的方塊,針對左右
也是通過迴圈找到是否下落的方塊的左右側是否存在方塊或者邊
以此來判斷能否繼續向左移動向右移動,看上去是解決了問題然
而在實際檢驗的過程中卻會出現本該著地的方塊的回彈:
1111
1111 1111 1111 3 1111 3
221111 -> 22 11113 -> 1111 3
222222 222222
除錯了一圈過去才發現是因為迴圈條件設定的錯誤檢查下落的應該
從下往上而不是從上往下,重新調整好迴圈設定重新執行後還是出
現了問題如果一次性接收太多指令很有可能使得方塊重疊:
1111
221111 ->2222
222222 222222
這個問題就很棘手了直到寫這篇開發日記時也未能成功處理這個問題.
總結模組
模組功能|是否新增
-|-|-
列印方塊|是
下落左右移動|是
旋轉|否
消行|否
此消彼長|否
我羅斯方塊最終匯報
這個作業屬於哪個課程 物件導向程式設計2020 這個作業的要求在 我羅斯方塊 這個作業的目的 我羅斯方塊最終匯報 作業正文 我羅斯方塊 github位址 我羅斯方塊 其他參考文獻 windows程式設計 小組成員 041901328 王真平 視窗的建立 對於製作我羅斯方塊來說,第一點也是最重要的一點...
我羅斯方塊匯報(1)
這個作業屬於哪個課程 班級的鏈結 這個作業要求在 作業的要求 這個作業的目標 匯報自己這個階段的開發進度。完成了哪幾個模組 講述自己遇到的問題和嘗試解決的方法和最後的結果 解決與否 製作一篇開發日記,例子如此,描述自己開發某乙個模組的過程。作業正文 作業github 暫存在本地 小組成員 03190...
我羅斯方塊匯報(1)
這個作業屬於哪個課程 物件導向程式設計 這個作業要求在 我羅斯方塊匯報 1 這個作業的要求 1 匯報自己這個階段的開發進度。完成了哪幾個模組 2 講述自己遇到的問題和嘗試解決的方法和最後的結果 解決與否 3 製作一篇開發日記,例子如此,描述自己開發某乙個模組的過程。專案位址 github 小組成員 ...