股票量化交易軟件下載_創(chuàng)建“貪吃蛇”游戲

在本文中,我們將考慮一個(gè)用 赫茲量化軟件 編寫(xiě)“貪吃蛇”游戲的例子。
從赫茲量化起,游戲編程變?yōu)榭赡?,主要是因?yàn)?span id="s0sssss00s" class="nolink">事件處理功能,包括自定義事件。面向?qū)ο缶幊毯?jiǎn)化此類(lèi)程序的設(shè)計(jì),使代碼更加清晰,并且減少錯(cuò)誤的數(shù)量。
在閱讀本文之后,您將了解 OnChart 事件處理、赫茲量化標(biāo)準(zhǔn)庫(kù)類(lèi)的使用例子和在一定時(shí)間之后循環(huán)調(diào)用函數(shù)來(lái)進(jìn)行任何計(jì)算的方法。
游戲說(shuō)明
選擇“貪吃蛇”游戲作為例子主要是因?yàn)槠鋵?shí)施非常簡(jiǎn)單。每一個(gè)對(duì)編程有極大興趣的人都能編寫(xiě)此游戲。
依據(jù)維基百科的解釋?zhuān)?/p>
“貪吃蛇”是一款產(chǎn)生于二十世紀(jì)七十年代中后期的視頻游戲,從出現(xiàn)之后就一直廣受歡迎,成為經(jīng)典。 玩家控制一個(gè)類(lèi)似于蛇的細(xì)長(zhǎng)生物,該生物在一個(gè)有邊界的平面中四處移動(dòng),一路拾起食物(或類(lèi)似物品),嘗試避免碰到自己的尾巴或圍繞游戲區(qū)域的“墻”。在某些變異中還有額外的障礙物。貪吃蛇每吃一件食物,其尾巴就變長(zhǎng)一些,讓游戲的難度漸漸變大。用戶(hù)控制蛇頭的方向(上、下、左、右),蛇身跟隨蛇頭移動(dòng)。游戲正在進(jìn)行時(shí),玩家不能停止貪吃蛇的移動(dòng),并且不能讓貪吃蛇反向。
用 MQL5 實(shí)施“貪吃蛇”有某些限制和特點(diǎn)。
有 6 關(guān)(從 0 至 5)。每一關(guān) 5 條命。在用完所有命之后或者通關(guān)之后,游戲返回到第一關(guān)。您可以創(chuàng)建您自己的關(guān)。對(duì)于第一關(guān),蛇的速度及其最大長(zhǎng)度是相同的。
游戲區(qū)由 4 個(gè)元素構(gòu)成:
游戲標(biāo)題。它用于游戲在圖表上的定位。移動(dòng)標(biāo)題,所有游戲元素也隨之移動(dòng)。
移動(dòng)區(qū)。它是一個(gè) 20x20 的單元格數(shù)組(表)。每個(gè)單元格的大小為 20x20 像素。移動(dòng)區(qū)中的元素包括:
貪吃蛇。它由至少三個(gè)連續(xù)的元素(頭、身、尾)構(gòu)成。頭可以左、右、上、下移動(dòng)。蛇的所有其他元素隨頭移動(dòng)。
障礙。用灰色矩形表示;如果蛇頭碰到障礙物,則當(dāng)前關(guān)將重新啟動(dòng),并且減一條命。
食物。用漿果表示食物;如果蛇頭碰到食物,則蛇的大?。ㄆ渖眢w的長(zhǎng)度)增大。在吃完 12 件食物之后,貪吃蛇前進(jìn)到下一關(guān)。
信息面板(游戲的狀態(tài)欄)它包含三個(gè)元素:
關(guān)。顯示當(dāng)前關(guān)。
剩下的食物數(shù)量。顯示還剩下多少漿果要吃。
命。顯示剩下的命數(shù)。
面板。它包含三個(gè)按鈕:
"Start"(開(kāi)始)按鈕。開(kāi)始當(dāng)前關(guān)。
"Pause"(暫停)按鈕。暫停游戲。
"Stop"(停止)按鈕。停止游戲,同時(shí)在初始關(guān)卡出現(xiàn)過(guò)渡。
圖 1 顯示了所有這些元素:
圖 1. “貪吃蛇”游戲的元素
游戲標(biāo)題是一個(gè)“按鈕”類(lèi)型的對(duì)象。所有移動(dòng)區(qū)元素是 "BmpLabel"(位圖標(biāo)簽) 類(lèi)型的對(duì)象。信息面板由三個(gè)“編輯”類(lèi)型的對(duì)象構(gòu)成,控制面板由三個(gè)“按鈕”類(lèi)型的對(duì)象構(gòu)成。所有對(duì)象都依據(jù)相對(duì)于圖表左上角的沿 X 軸和 Y 軸的像素距離來(lái)定位。
應(yīng)注意,移動(dòng)區(qū)邊緣并不是貪吃蛇移動(dòng)的障礙物。例如,貪吃蛇穿過(guò)左邊,從右邊出現(xiàn)。如圖 2 所示:

圖 2. 貪吃蛇穿過(guò)移動(dòng)區(qū)邊緣
蛇頭和蛇尾與蛇身不同,能夠旋轉(zhuǎn)。頭的方向由移動(dòng)方向或其相鄰元素的位置決定。尾的方向僅由相鄰元素的位置決定。
舉例而言,如果相鄰的蛇尾元素在左側(cè),則蛇尾左轉(zhuǎn)。蛇頭稍有不同。如果相鄰元素在右側(cè),則蛇頭左轉(zhuǎn)。下面的示意圖舉例說(shuō)明了蛇頭和蛇尾的方向。注意,蛇頭和蛇尾的轉(zhuǎn)向與它們的相鄰元素有關(guān)。

蛇頭和蛇尾向左
蛇頭和蛇尾向右
蛇頭和蛇尾向下
蛇頭和蛇尾向上
蛇的移動(dòng)分為三個(gè)階段:
視方向而定,一個(gè)單元格的蛇頭向右、向左、向上或向下移動(dòng)。
蛇身的最后一個(gè)元素移動(dòng)到上一個(gè)蛇頭位置。
蛇尾移動(dòng)到最后一個(gè)蛇身元素的上一個(gè)位置。蛇尾移動(dòng)到最后一個(gè)蛇身元素的上一個(gè)位置。
如果貪吃蛇吃食物,則蛇尾不移動(dòng)。然而,在最后一個(gè)蛇身元素的過(guò)去位置創(chuàng)建一個(gè)新的蛇身元素。
以下示意圖說(shuō)明了一個(gè)向左移動(dòng)的貪吃蛇例子:
