效果圖如下:
1.蛇的資料結構使用雙鏈表實現,資料結構如下:
typedef struct另外注意,由於要在鍊錶頭部插入節點,在尾部刪除節點,所以最好選擇自帶頭節點和尾節點的雙鏈表,這樣可以統一空鍊錶與非空鍊錶的插刪過程。pos;
typedef
struct
nodenode;
typedef
struct
dlinkdlink;
dlink snake;
//the snake
2.計時控制使用setitimer來完成,自己捕獲sigalrm訊號,呼叫處理函式。
在這一步一直碰到乙個問題,在資訊顯示介面的時間和 蛇的移動其實是不同步的,因為time時間統計總是按照實際1s來進行,而蛇的移動速度會根據level而加快,怎樣控制資訊介面和遊戲介面的分別重新整理。
細節實現如下:
在initgame中設定固定的時間間隔
setticker(20) //setticker為自定義函式,以20ms作為時鐘間隔(就是說,1s中產生50個sigalrm訊號)
level的提公升根據蛇的長度snake.count來進行: level = snake.count / 3 +1;
在資訊重新整理函式showinfo()中使用 if(1 != ttime % 50) return; 來控制該函式後面的內容1s執行一次。
在snake重新整理函式showsnake()中使用 if(1 != ttime %(20-level) ) return; 來控制函式的執行,與level大小相關。(這裡需要改進,應該用一種更好的控制方法~~~~)
linux 下 curses庫 安裝 和使用
curses庫是用來開發簡單圖形介面程式乙個庫 也許它的功能不止這些,但是目前我只知道這乙個!ubuntu下安裝方法 sudo apt get install libncurses5 dev curses的基本用法如下 1.包含標頭檔案 curses.h 3.重要的函式 initscr 在開始cur...
linux 下 curses庫 安裝 和使用
curses庫是一組函式,程式設計師可以用它們來設定游標的位置和終端螢幕上顯示的字元樣式。curses庫最初是由ucb的開發小組開發的。大部分控制終端螢幕的程式使用curses。曾經由一組簡單的函式組成的庫現在包括了許多複雜的特性。ubuntu下安裝方法 sudo apt get install l...
linux 下curses庫的安裝和使用
sudo apt get install libncurses5 dev curses的基本用法如下 1.包含標頭檔案 curses.h 3.重要的函式 initscr 初始化curses庫和ttty。在開始curses程式設計之前,必須使用initscr 這個函式來開啟curses模式 endwi...