首页主机资讯c++代码贪吃蛇怎么写

c++代码贪吃蛇怎么写

时间2024-08-12 21:40:03发布访客分类主机资讯浏览1273
导读:下面是一个简单的C++贪吃蛇游戏代码示例: #include <iostream> #include <conio.h> #include <windows.h> using namespace std...

下面是一个简单的C++贪吃蛇游戏代码示例:

#include <
    iostream>
    
#include <
    conio.h>
    
#include <
    windows.h>
    

using namespace std;
    

bool gameOver;
    
const int width = 20;
    
const int height = 20;
    
int x, y, fruitX, fruitY, score;
    
int tailX[100], tailY[100];
    
int nTail;

enum eDirection {
 STOP = 0, LEFT, RIGHT, UP, DOWN }
    ;
    
eDirection dir;


void Setup()
{
    
    gameOver = false;
    
    dir = STOP;
    
    x = width / 2;
    
    y = height / 2;
    
    fruitX = rand() % width;
    
    fruitY = rand() % height;
    
    score = 0;

}


void Draw()
{
    
    system("cls");
    
    for (int i = 0;
     i <
     width + 2;
     i++)
        cout <
    <
     "#";
    
    cout <
    <
     endl;
    

    for (int i = 0;
     i <
     height;
 i++)
    {
    
        for (int j = 0;
     j <
     width;
 j++)
        {
    
            if (j == 0)
                cout <
    <
     "#";
    
            if (i == y &
    &
     j == x)
                cout <
    <
     "O";
    
            else if (i == fruitY &
    &
     j == fruitX)
                cout <
    <
     "F";

            else
            {
    
                bool print = false;
    
                for (int k = 0;
     k <
     nTail;
 k++)
                {
    
                    if (tailX[k] == j &
    &
 tailY[k] == i)
                    {
    
                        cout <
    <
     "o";
    
                        print = true;

                    }

                }
    
                if (!print)
                    cout <
    <
     " ";

            }
    

            if (j == width - 1)
                cout <
    <
     "#";

        }
    
        cout <
    <
     endl;

    }
    

    for (int i = 0;
     i <
     width + 2;
     i++)
        cout <
    <
     "#";
    
    cout <
    <
     endl;
    
    cout <
    <
     "Score: " <
    <
     score <
    <
     endl;

}


void Input()
{

    if (_kbhit())
    {

        switch (_getch())
        {
    
        case 'a':
            dir = LEFT;
    
            break;
    
        case 'd':
            dir = RIGHT;
    
            break;
    
        case 'w':
            dir = UP;
    
            break;
    
        case 's':
            dir = DOWN;
    
            break;
    
        case 'x':
            gameOver = true;
    
            break;

        }

    }

}


void Logic()
{
    
    int prevX = tailX[0];
    
    int prevY = tailY[0];
    
    int prev2X, prev2Y;
    
    tailX[0] = x;
    
    tailY[0] = y;
    
    for (int i = 1;
     i <
     nTail;
 i++)
    {
    
        prev2X = tailX[i];
    
        prev2Y = tailY[i];
    
        tailX[i] = prevX;
    
        tailY[i] = prevY;
    
        prevX = prev2X;
    
        prevY = prev2Y;

    }


    switch (dir)
    {
    
    case LEFT:
        x--;
    
        break;
    
    case RIGHT:
        x++;
    
        break;
    
    case UP:
        y--;
    
        break;
    
    case DOWN:
        y++;
    
        break;
    
    default:
        break;

    }
    

    if (x >
    = width)
        x = 0;
    
    else if (x <
     0)
        x = width - 1;
    

    if (y >
    = height)
        y = 0;
    
    else if (y <
     0)
        y = height - 1;
    

    for (int i = 0;
     i <
     nTail;
 i++)
    {
    
        if (tailX[i] == x &
    &
     tailY[i] == y)
            gameOver = true;

    }
    

    if (x == fruitX &
    &
 y == fruitY)
    {
    
        score += 10;
    
        fruitX = rand() % width;
    
        fruitY = rand() % height;
    
        nTail++;

    }

}


int main()
{
    
    Setup();

    while (!gameOver)
    {
    
        Draw();
    
        Input();
    
        Logic();
    
        Sleep(10);

    }
    
    return 0;

}
    

这只是一个简单的贪吃蛇游戏示例,你可以根据需要进行更多的功能扩展和优化。希望对你有帮助!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c++代码贪吃蛇怎么写
本文地址: https://pptw.com/jishu/693611.html
java实体类的定义方法是什么 mysql如何查询某字段只包含数字

游客 回复需填写必要信息