C 貪吃蛇(控制台 集合版)

2021-10-11 00:22:34 字數 3886 閱讀 1813

#include

#include

#include

#include

#include

//#include

//#include

using namespace std;

#define up 'w'

#define down 's'

#define left 'a'

#define right 'd'

char name[20];  // 儲存使用者名稱 有興趣可以製作登入系統

int score = 0;  // 分數

char click = 1; // 記錄敲下的鍵盤按鍵

int speed = 10;      // 速度 其實是延遲的毫秒數

class snake

snake(int x, int y)

~snake(){}

};int footx, footy; // 存放蛇尾

// 宣告存放貪吃蛇的集合列表

listlist_snake;

/*list.assign() 給list賦值                         list.back() 返回最後乙個元素

list.begin() 返回指向第乙個元素的迭代器          list.clear() 刪除所有元素

list.empty() 如果list是空的則返回true            list.end() 返回末尾的迭代器

list.erase() 刪除乙個元素                        list.front() 返回第乙個元素

list.get_allocator() 返回list的配置器            list.insert() 插入乙個元素到list中

list.max_size() 返回list能容納的最大元素數量     list.merge() 合併兩個list

list.pop_back() 刪除最後乙個元素                 list.pop_front() 刪除第乙個元素

list.push_back() 在list的末尾新增乙個元素        list.push_front() 在list的頭部新增乙個元素

list.rbegin() 返回指向第乙個元素的逆向迭代器     list.remove() 從list刪除元素

list.remove_if() 按指定條件刪除元素              list.rend() 指向list末尾的逆向迭代器

list.resize() 改變list的大小                     list.reverse() 把list的元素倒轉

list.size() 返回list中的元素個數                 list.sort() 給list排序

list.splice() 合併兩個list                       list.swap() 交換兩個list

list.unique() 刪除list中重複的元素*/

// 食物類

class food

food;

class controller

// 刪除指定位置的內容

void gotodelete(int x, int y)

} controller;

int main()

// 歡迎介面

void controller::welcome()

void controller :: gotoxy(int x, int y) // 移動游標到指定位置

// 圍牆列印

void controller::creategraph()

for (i = 1; i < 26; i++)

gotoxy(63, 8);

cout << "你好" << name << ", 歡迎進入遊戲世界";

gotoxy(63, 13);

cout << "當前分數:" << score;

gotoxy(63, 18);

cout << "源辰資訊科技提供";

// 初始化蛇

snake head = snake(16, 15); // 初始化蛇頭

snake body = snake(16, 16); // 第一節蛇身

snake foot = snake(16, 17); // 蛇尾

list_snake.push_back(head); // 在列表的末尾新增乙個元素

list_snake.push_back(body);

list_snake.push_back(foot);

// 列印蛇

list:: iterator lt; // 宣告乙個貪吃蛇型別的集合迭代器lt

snake sk;

for (lt = list_snake.begin(); lt != list_snake.end(); lt ++)

}// 建立食物

void controller :: createfood()

list:: iterator lt; // 宣告乙個貪吃蛇型別的集合迭代器lt

snake sk;

// 遍歷蛇,保證生成的這個食物不在蛇身上

for (lt = list_snake.begin(); lt != list_snake.end(); lt ++)}}

gotoxy(food.x, food.y); // 移動游標到食物位置

cout << "⊙"; // 輸出食物

}// 捕獲滑鼠 遊戲主迴圈

bool controller :: clickcontrol()

movingbody(); // 移動蛇

eating(); // 吃食物

}return false;

}// 移動蛇

void controller :: movingbody()

if (x != head.x || y != head.y)

// 蛇速度控制,分數越高,速度越快

int count = score / 10;

if (count <= 10) speed = 150;

else if (count > 10 && count <= 20) speed = 100;

else if (count > 20 && count <= 40) speed = 50;

else speed = 10;

sleep(speed);

}// 吃到食物處理 新增乙個尾巴

void controller :: eating()

}// 判斷是否遊戲結束

bool controller :: judge()

list:: iterator lt; // 宣告乙個貪吃蛇型別的集合迭代器lt

snake sk;

// 遍歷蛇,判斷蛇頭有沒有跟其他部分重合

for (lt = ++ list_snake.begin(); lt != list_snake.end(); lt ++)

}return false;

}void controller :: finish(int x)

system("cls");

showcopy();

gotoxy(20, 10);

cout << "歡迎來到貪吃蛇遊戲";

gotoxy(20, 14);

cout << "遊戲結束...";

gotoxy(20, 18);

cout << "最終得分為: " << score;

控制台版貪吃蛇

include include include include include 地圖大小 define map size 20 全域性螢幕輸出快取區控制代碼 handle g houtput 地圖屬性 struct mapnode s nodetype e type 全域性地圖資料 mapnode ...

C 控制台貪吃蛇

軟體實訓作品,現放出個人源 供需要的同學參考 int startx 8 x起點 const int starty 4 y起點 const int rangex 60 x範圍 const int rangey 20 y範圍 const int endx startx rangex x終點 const ...

C 控制台貪吃蛇

大二下的遊戲程式設計第乙個小作業,以此篇記錄一下,感謝李仕老師的循循善誘和同學們的熱情討論。include include include using namespace std define leftborder 3 define topborder 3 bool gameover,died 遊戲...