qt寫貪吃蛇
阿新 • • 發佈:2018-11-13
其實剛才我寫過一次這篇文章,然後我要發表,一直提示我選擇文章型別,後來才發現,左上角有個原創或轉載什麼的選項,於是一大段內心澎湃又細緻的文字就這麼沒了,第二次寫,雖然是第一篇,感覺還是沒第一次好,廢話不多說。
用qt寫貪吃蛇,源於我們開的windows程式設計課,這是一個小任務。
1.巨集定義max_x,max_y,給整個介面定義,一個qlabel矩陣
2.int定義一個二維陣列,對應每一個label,通過值為0,1,2,來控制,label 的顏色什麼的(之前那篇文章可謂聲情並茂,然而,萬惡的複製貼上失敗,什麼都一場空了)
Labels[i][j]->setStyleSheet("background:pink");我定義的普通介面為粉色,蛇身為藍色,沒有牆,不過過程中還是有牆的,撞到邊界就會gameover噠
3.然後定義蛇<pre name="code" class="plain"> QList<QPoint>snake;
4.通過qtimer來使蛇動起來
5.判斷蛇有沒有碰到牆,有沒有咬到自己,這些都要gameover
6.判斷蛇有沒有吃到食物,吃到蛇身要變長。
接下來說一些自己遇到的疑惑:
疑惑一:qlist是什麼,自行百度,是一種裝不同型別資料的容器,也是在使用和看程式碼過程中理解,什麼叫容器的
<span style="white-space:pre"> </span>
疑惑二:為什麼不直接裝int在qlist裡面,這樣可以直接判斷對應的label怎麼表示啊,後來一想,因為蛇要動起來,蛇身要變長什麼的,如果用int,就不能取出蛇頭的橫縱座標和蛇尾的橫縱座標,就不好控制移動了
<span style="white-space:pre"> </span>例如,qpoint.x();qpoint.y(),可以獲取橫縱座標;qpoint.setx(值),qpoint.sety(值)來設定該點的橫縱座標;QPoint newpoint = QPoint(1,0); oldpoint += newpoint;這些都是可以的。
疑惑三:蛇怎麼動,對此,我在紙上畫圖,終於想明白它的本質,其實都是假象<img alt="尷尬" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/awkward.gif" />(老師說的),因為,很多人一開始不理解,就是覺得,怎麼讓蛇頭往前面挪一個,蛇頭後面的往前面挪一格,然後整體往前面挪,其實不是這樣的,其實整個遊戲,不都是建立在一開始你定義的label上嗎?有的人問,到底是label在移動還是qpoint在移動,本質上,什麼都沒有動,只是通過qpoint取出它的橫縱座標,可以得到對應的二維陣列的值和label,從而,使label,變成粉色或者藍色,或者