評估主要是6個引數:
LandingHeight:下落後的高度,方塊最後不能下落之後,方塊的重心(也就是中心點的高度),相當於高度越低越安全,我這裡並沒有記錄每一個圖形的中心點,統一為高度減去1,如圖小方塊Z下落之後高度為4,我這裡需要重心,我就選擇重心 - 1 = 3
ErodedPieceCellsMetric:消除貢獻值=消除行數該方塊參與消除的格子數。
例如,該情況下消除了2行,該方塊提供了2個單位的格子。那麼貢獻值=2*2=4
RowTransitions:行變換數。按行遍歷,從哪一行有方塊開始計算,邊界定義為有方塊,從方塊到空記作一次變換,從空到有方塊在記作一次變化,如圖
從有方塊開始計算從上到下一次是4 + 4+2+4
BoardColTransitions:列變換數:同行變換數,只不過換成了按列遍歷。(上下兩側算做邊界)
BoardBuriedHoles:空洞數,空洞指的是,每列中某個方塊下面沒有方塊的空白位置,該空白可能由 1 個單位或多個單位組成,但只要沒有被方塊隔斷,都只算一個空洞。注意,空洞的計算以列為單位,若不同列的相鄰空格連在一起,不可以將它們算作同一個空洞。如圖所示
BoardWells:井數,就像是水井一樣,空白的個數。井指的是某一列中,兩邊都有方塊的連續空格,(左右兩邊看做實體)一定要注意兩邊都有方塊才能看做是井。還需要注意井深度,井的深度是連續累加的。如圖所示最右邊深度為2,就是1+2,需要把井的深度做累加,如圖所示已經標識的很清楚
#define LANDINGHEIGHT -45
#define ROWSELIMINATED 34
#define ROWTRANSITIONS -32
#define COLUMNTRANSITIONS -93
#define NUMBEROFHOLES -79
#define WELLSUMS -34