貪吃蛇 已經比較完善

2021-09-02 04:21:13 字數 1861 閱讀 6197

附件中含有兩個版本,

第一版本實現了最基本的功能.包括運動,吃food,暫停,計分,重來.

使用了乙個二維陣列來儲存當前地圖上有哪些東西,0表示沒有,1表示自己的一部分,2表示障礙物,3表示food.

才開始新建乙個點,將其加入linkedlist中儲存

每一次移動都是將linkedlist的頭移除,再在尾部加乙個相關方向的next元素.,在這個過程中就需要判斷是否越界或者撞到自己.

吃東西的**:

public static boolean eatfood() 

return false;

}

碰撞的**:

public static boolean bump(int row, int col) 

return false;

}

移動的**:

/**

* 蛇移動的方法

* * @param colspeed

* 1為向下, -1為向上 0表示橫向

* @param rowspeed

* 1為向右, -1為向左 0表示豎向

*/public static void move(int colspeed, int rowspeed) else if (colspeed == -1) else if (rowspeed == 1) else

} // 判斷是否碰撞

if (bump(row, col))

data[row][col] = 1;

node[row][col].setcolor(color.white);

list.add(node[row][col]);

// 一切正常,判斷是否吃到了食物

if (!eatfood()) else

}

重寫jpanel對窗體進行重繪.

第二個版本加入了新的遊戲模式,包括第一版本的傳統模式和闖關模式,內建了7張地圖,吃到指定數量的food自動切換.可進行遊戲.

加入了儲存進度的功能.

下面這張是測試時候的截圖,第7關.

詳細**(含一些基本注釋和地圖製作工具(data資料夾下,jdk1.7)):分享

已發現的bug:

首先,在隨機生成food的時候,如果遇到了生成的點已經有東西了,就會再隨機乙個方向進行位移,比如食物生成在(4,5).結果該位置有障礙物,那麼會再隨機生成乙個方向,比如右邊,那麼這個位置就變成(4,6),知道不遇到障礙物.

但是,當隨機生成的食物本來就在邊界,再對其進行加減就會越界了.

在這裡加一些判定

關卡模式進行跳關的時候還是會隨機生成食物,就變成了有兩個food.又由於執行緒sleep的原因,生成food還在sleep,在讀取之後.所以直接讀取地圖時不處理讀到的food.

重新上傳**:

貪吃蛇小程式(功能完善)

經歷了幾個月對c和c 的學習,已經懂得基本原理的我準備自己寫乙個小專案了 先來look look成果吧!最後成品 一下操作均在vs2019中,vs低版本無礙,其他編譯器可能有出入 想寫乙個功能較為完備的貪吃蛇應該把它作為乙個專案去寫,而不僅僅是把所有 寫在乙個檔案裡,這應該是程式設計師最基本的意識了...

貪吃蛇遊戲

貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...

貪吃蛇(改進)

該程式分成3個檔案 第乙個檔案 fang.cs using system using system.collections.generic using system.text using system.windows.forms using system.drawing namespace snak...