C++完结的调控台-贪吃蛇

4:别的的正是一对C++的中坚语法了 

C++达成的调控台-贪吃蛇,完结调节台贪吃蛇

星期日终于得以挤出一整段时间了

想了想就写个贪吃蛇吧    第二遍写 大约下了140行  也不算太多吗

日后ACM竞技是在做不来就自个儿打个贪吃蛇玩

ps:本来想写个品种的 但是为着便于你们阅读 就写在贰个文件之中了

测量检验了下  无紧要BUG     然而 功德圆满 未有测量试验

 

 

知识点:

1:刷新窗口 system(“cls”);

2: time.h 用来编排机械钟系统;

3:SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 
复位光标地方,即你想在那边输出就把光标移到特别地方输出就可以了

  开始还或然有叁个思路便是 不用数组存地图 只用定位光标来  更新蛇 
前面开采某个困难

4:别的的正是部分C++的着力语法了 

感兴趣的能够砍下去游玩

贴代码:

//基础知识clock_t clock(void)  返回从程序开始到现在为止的时间单位毫秒 CLOCKS_PER_SEC 转换为秒的单位 相当于1000.0 
/* 打开exe 后输出普通游戏画面并在地图中间提示 按任意键开始游戏
*/
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<list>
#include<string>
using namespace std;
class  retro_snake
{
private:
    COORD zz;//缓存前进的点用; 
    list<COORD>snake;//保存蛇 
    string ma[15]; //保存游戏画面 
    int direction; //保存现在蛇的前进方向 
    int grates;
    int level;     //游戏等级 
    int rate;      //游戏速率 
public:
    retro_snake() //初始化游戏 
    {
        level = 0; rate = 800;  grates = 0; direction = 1;
        for (int i = 0; i<15; i++)
        {
            if (i == 0 || i == 14)
                ma[i] = "###################################";//35
            else
                ma[i] = "#                                 #";
        }
        zz.X = 17; zz.Y = 7;
        snake.push_front(zz);
    }
    void draw(void) const//绘画游戏界面
    {
        for (int i = 0; i<15; i++)
            cout << ma[i] << endl;
        cout << "得分:" << grates << "等级:" << level << endl;
        cout << "w: 上 s:下 a:左 d:右  空格:暂停 " << endl;
    }
    void creat_food()//生成食物
    {
        int x, y;
        do
        {
            x = rand() % 14 + 1;
            y = rand() % 34 + 1;
        } while (ma[x][y] != ' ');
        ma[x][y] = '$';
    }
    void clock_system(void)//时钟系统 控制游戏进行
    {
        double Start = clock();
        char ch = 'w'; bool flag;//初始化前进方向
        creat_food();
        while (1)
        {
            while ((clock() - Start)<rate && !(flag=_kbhit()));//一秒后自动读取 或者直接有键入 
            Start = clock();
            if (flag)
            {
                ch = _getch();
                int direction_;
                if (ch == ' ')//暂停的功能实现
                {
                    while (!_kbhit());
                    ch = _getch();
                    Start = clock();
                }
                else if (ch == 'r')
                {

                }
                switch (ch)
                {
                case 'w':direction_ = 1; break;
                case 'a':direction_ = 3; break;
                case 's':direction_ = 4; break;
                case 'd':direction_ = 2; break;
                default:direction_ = 0;
                }
                if (direction_ + direction != 5&&direction_!=0) direction = direction_;//如果输入的方向不和现在前进的方向冲突 就改变
            }
            switch (direction)
            {
            case 1:zz.X = snake.front().X; zz.Y = snake.front().Y - 1; break;
            case 2:zz.X = snake.front().X + 1; zz.Y = snake.front().Y; break;
            case 3:zz.X = snake.front().X - 1; zz.Y = snake.front().Y; break;
            case 4:zz.X = snake.front().X; zz.Y = snake.front().Y + 1; break;
            }
            if (ma[zz.Y][zz.X] == '#' || ma[zz.Y][zz.X] == '.')
            {
                COORD coord; coord.X = 3; coord.Y = 8;
                SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
                cout << "游戏结束"; 
                Sleep(300);
                break;
            }
            else if (ma[zz.Y][zz.X] == '$')
            {
                grates++; level = grates / 10; 
                level = min(5, level);
                rate = 800 - level * 100;
                ma[snake.front().Y][snake.front().X] = '.';
                snake.push_front(zz);
                ma[snake.front().Y][snake.front().X] = '@';
                if (snake.size() == 429)
                {
                    COORD coord; coord.X = 3; coord.Y = 8;
                    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
                    cout << "功德圆满";
                    Sleep(300);
                    break;
                }
                creat_food();
            }
            else
            {
                ma[snake.front().Y][snake.front().X] = '.';
                snake.push_front(zz);
                ma[snake.front().Y][snake.front().X] = '@';
                ma[snake.back().Y][snake.back().X] = ' ';
                snake.pop_back();
            }
            system("cls");
            draw();
        }
    }
    void start(void)
    {
        draw();
        COORD coord; coord.X = 13; coord.Y = 8;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
        cout << "按任意键开始";
        while (!_kbhit());
            char ch =_getch();
        system("cls");
        draw();
        clock_system();
    }
};
int main()
{
    retro_snake Game;
    Game.start();
    return 0;
}

金沙js333娱乐场 , 

周天终于能够挤出一整段光阴了 想了想就写个贪吃蛇吧 第四回写
大致下了140行 也不算太多…

知识点:

ps:本来想写个档案的次序的 但是为着便利你们阅读 就写在二个文书之中了

贴代码:

2: time.h 用来编排石英钟系统;

星期日终于得以腾出一整段年华了

 

  开头还会有二个思路正是 不用数组存地图 只用定位光标来  更新蛇 
后边开掘有一些不方便

事后ACM竞技是在做不来就和好打个贪吃蛇玩

发表评论

电子邮件地址不会被公开。 必填项已用*标注