2016-10-20 100 views
-2

設計運動我想提高我的遊戲開發設計,現在我有這樣的事情:提高對貪吃蛇遊戲

class Movement { 
private: 
    Body b;  
public: 
    move_up() { 
    // catch the body head 
    // add one snake character above head 
    // catch the body tail 
    // remove the tail character 
    } 
    move_down(){ 
    // catch the body head 
    // add one snake character below head 
    // catch the body tail 
    // remove the tail character 
    } 
    move_left(){ 
    // catch the body head 
    // add one snake character on left side of head 
    // catch the body tail 
    // remove the tail character 
    } 
    move_right(){ 
    // catch the body head 
    // add one snake character on right side of head 
    // catch the body tail 
    // remove the tail character 
    } 
} 

這是非常醜陋的,看看每次移動方法內repetead僞代碼。我想讓這個更通用,但我不知道如何在C++中完成它。有什麼建議麼?

+1

做一個'移動'函數,它將一個枚舉作爲參數(指示哪條路要走)? – UnholySheep

回答

1

對於蛇遊戲,你可能想要在兩個獨立的部分處理。

一件響應鍵盤輸入。它所做的就是根據輸入鍵記錄新的行程方向。

另一塊以預定的間隔運行。它:

  1. 檢查碰撞
    • 結束遊戲,如果有一個
  2. 旅遊
  3. 的電流方向增加一個字符到蛇的頭部刪除一個字符從尾巴
    • (提供的蛇不只是吃一個電源按鈕)
  4. 更新得分
  5. 並沒有發生我現在

特別,但是,我們不希望任何第二列表的等待可能一些事情來自用戶的輸入。第二部分只是連續運行,即使沒有用戶的輸入,蛇也會繼續移動。

0

我以前做過Snake,這些都是我的程序中用來製作Snake的步驟;

  1. 當蛇的方向改變時,它必須檢查它不是在180°旋轉的方向前進之前,否則電流方向可以不改變。

  2. 您在文章中描述的方法必須只包含在蛇的當前位置旁邊添加一個點/像素/字符所需的內容。

  3. 您需要蛇的所有點的列表(包含x,y值)。

  4. 在每一個動作中,首先要確保你沒有撞到自己或牆上,否則你應該先死。

  5. 一舉一動,如果移動成功,您必須檢查您的當前位置(最後一步)是否包含同一位置的食物,如果是,請將分數添加到分數變量並確保您沒有刪除蛇的列表中最老的(x,y)。 如果沒有,您必須刪除那個。