我羅斯方塊匯報(1)

2022-09-12 15:39:30 字數 2785 閱讀 8950

這個作業屬於哪個課程

物件導向程式設計

這個作業要求在**

我羅斯方塊匯報(1)

這個作業的要求

1、匯報自己這個階段的開發進度。(完成了哪幾個模組)2、講述自己遇到的問題和嘗試解決的方法和最後的結果(解決與否)3、製作一篇開發日記,例子如此,描述自己開發某乙個模組的過程。

專案位址

github

小組成員

周盛霖031902631翁子龍031902616

我完成了關於隨機生成方塊以及判斷方塊能否移動變形的函式。隊友完成了繪製地圖、繪製方塊和遊戲進行的部分。

#define framex  16  //遊戲視窗左上角的x軸座標

#define framey 4 //遊戲視窗左上角的y軸座標

#define height 20 //遊戲視窗的高度

#define width 10//遊戲視窗的寬度

#define startx 1+width/2//俄羅斯方塊中心出現位置橫座標

#define starty 2//俄羅斯方塊中心出現位置縱座標

int flag_old = 0; //當前俄羅斯方塊序號

int flag_next = 0;//下乙個俄羅斯方塊序號

int left = 1; //1為可左移,0為不可左移

int right = 1;//1為可右移,0為不可右移

int down = 1; //1為可下移,0為不可下移

int trans = 1;//1為可旋轉,0為不可旋轉

int x = startx;//中心方塊橫座標

int y = starty;//中心方塊縱座標

生成的方塊是隨機的,所以一共有19種不同可能性。使用隨機數的方式構造方塊

void maketetris()

}

對方塊能否進行操作進行判斷。

void judge_moveandtansform()

}

經討論,最後決定使用easyx來實現畫面。

開發過程

前言:在不同類中x,y的含義可能不同。

畫素座標:表示其所處的畫素,便於用easyx繪製。地圖類的xy是畫素座標。

地圖座標:表示其所處在地圖中的位置,便於方塊所處位置的判斷。 方塊類的xy是地圖座標。

一.地圖類

目前想法是:寫乙個統一的繪製函式用於繪製地圖。在遊戲過程中,方塊觸底後就融為地圖的一部分,然後重新繪製即可。

void map::drawmap() }}

}

x,y為地圖左上角的畫素座標,len為小方塊的邊長,map[i][j]表示ij位置是否有方塊,用solidrectangle函式繪製小方塊。

二.方塊類

先設定好所有的方塊,其中的幾個維度分別是 all_block[ 種類 ][ 旋轉方向 ][ y座標 ][ x座標 ]。在後續設計中只需用memcpy函式將all_block[ 種類 ][ 旋轉方向 ]拷貝到方塊類成員shape即可。

memcpy(shape, all_block[type][state], 16 * sizeof(int));

其中type和state為方塊類的私有成員,在初始化時隨機生成,表示方塊種類和當前的旋轉狀態。在後續設計中,只需要保持type不變,令state+1,當state>3時置零,即可實現方塊旋轉。

為此,即使是只有一種旋轉狀態的方塊,在all_block中也為它設定了四種完全一樣的旋轉狀態。這樣無論什麼種類的方塊,在變形時都滿足大3置0了。

int all_block[5][4][4][4] = ,,,},

,,,},

,,,},

,,,}

},,,,},

,,,},

,,,},

,,,}

},,,,},

,,,},

,,,},

,,,}

},,,,},

,,,},

,,,},

,,,},

},,,,},

,,,},

,,,},

,,,}

}};

方塊初始化:

void block::initialblock()
這裡暫時把y設成5,以便測試方塊的設定是否正確,在正式遊戲中應設為-2左右。經測試,所有方塊都能正確顯示。(繪製函式就不貼在這了,道理和地圖繪製函式差不多)

三.遊戲類

目前只寫了暫停函式。在網上搜「c++暫停遊戲」完全沒找到相關的方法,所以這個函式是我在完全沒參考的情況下寫的,可能有些不合理的地方。

當輸入空格時改變isstop的值,當其為true時進入迴圈,在迴圈體中不斷沉睡,直到再次輸入空格。

bool game::isstop = false;    //初始化暫停判斷引數

void game::gamestop()

}}

方塊顏色完全隨機,導致明度難控制

完全隨機,可能會生成和背景色(這裡為黑)非常接近的顏色,導致看不清。

easyx貌似只能用rgb來設定顏色,不能直接用hsv。我平時用電腦繪畫時都是用hsv來微調顏色的,對於調rgb的值來改變顏色就完全不熟悉了。望大佬告知如何控制rgb的值保證明度不會太低!!

兩個人完成的部分因為在寫**時思路的差異以及一些基本引數的不同,還沒有辦法統一起來,這應該會是我們完成專案時乙個很大的問題,現在還沒能將兩個人的**融合,需要後續再進行溝通商討統一思路和引數標準。

我羅斯方塊匯報(1)

這個作業屬於哪個課程 班級的鏈結 這個作業要求在 作業的要求 這個作業的目標 匯報自己這個階段的開發進度。完成了哪幾個模組 講述自己遇到的問題和嘗試解決的方法和最後的結果 解決與否 製作一篇開發日記,例子如此,描述自己開發某乙個模組的過程。作業正文 作業github 暫存在本地 小組成員 03190...

我羅斯方塊最終匯報

這個作業屬於哪個課程 物件導向程式設計2020 這個作業的要求在 我羅斯方塊 這個作業的目的 我羅斯方塊最終匯報 作業正文 我羅斯方塊 github位址 我羅斯方塊 其他參考文獻 windows程式設計 小組成員 041901328 王真平 視窗的建立 對於製作我羅斯方塊來說,第一點也是最重要的一點...

我羅斯方塊匯報 一

我羅斯開發日記 這個作業要求在 2020物件導向程式設計 這個作業要求在 我羅斯方塊匯報 1 這個作業的目標 匯報自己這個階段的開發進度,製作一篇開發日記 參考文獻 c 如何移動游標 參考文獻 c語言控制台讀取上下鍵指令 github位址 teris plus 小組成員 學號 肖清江 1319011...