大一下:第一次使用vs制作闪烁贪吃蛇(含C语言代码)部分感受

自行找ai和B站鹏哥拼制而成

1首先使用vs一定要保存。

这是我本人第一次使用visual studio,希望可以对同样第一次使用该软件的同学有用。 和Devc++不同,他的需要保存再来调试。我以前都没有这个习惯。刚开始我还以为我的软件缺失了又重新下载了一遍。。。。。。后来才发先需要先保存

2假如无法运行可以进行以下操作

如下图

//1   尝试清理解决方案并重新生成项目。您可以在 Visual Studio 中

// 选择 "生成" -> "清理解决方案",然后再次尝试重新生成项目

要注意将原先控制台删除

在其他软件上如devc++控制台太多会导致卡顿

在vs则是直接无法运行!!!

//2   确保目标文件 "snake2.exe" 没有被其他程序占用

// ,关闭任何可能正在运行或锁定该文件的应用程序

//3最后发现是360安全卫士把我的代码当作木马病毒删了

// 小心360卫士他会删除你的代码。。。

一定要千万千万小心360浏览器,假如使用360要将你的文件夹设置为可信任才行!!!

3贪吃蛇游戏要点:如何推迟页面出现

void SetPos(int x, int y) {

    COORD coord = { 0,0 };//未初始化了局部变量 COORD coord;。

    coord.X = x;

    coord.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void welcome() {

    SetPos(40, 14);//用于定位输出位置

    wprintf(L"Welcome to the Snake Game\n");

    SetPos(42, 16);

    system("pause");//停止

}

如下图所示

以下是相关代码

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#define WIDTH 30

#define HEIGHT 20

#define UP 'w'

#define DOWN 's'

#define LEFT 'a'

#define RIGHT 'd'

int length;

int headX, headY;

int fruitX, fruitY;

int tailX[100], tailY[100];

int score;

int gameOver;

char direction;

void SetPos(int x, int y) {

    COORD coord = { 0,0 };//未初始化了局部变量 COORD coord;。

    coord.X = x;

    coord.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void welcome() {

    SetPos(40, 14);

    wprintf(L"Welcome to the Snake Game\n");

    SetPos(42, 16);

    system("pause");

}

void Setup() {

    gameOver = 0;

    length = 1;

    headX = WIDTH / 2;

    headY = HEIGHT / 2;

    fruitX = rand() % WIDTH;

    fruitY = rand() % HEIGHT;

    score = 0;

    direction = RIGHT;

}

void Draw() {

    system("cls");

    int i, j;

    for (i = 0; i < WIDTH + 2; i++)

        printf("#");

    printf("\n");

    for (i = 0; i < HEIGHT; i++) {

        for (j = 0; j < WIDTH; j++) {

            if (j == 0)

                printf("#");

            if (i == headY && j == headX)

                printf("O");

            else if (i == fruitY && j == fruitX)

                printf("F");

            else {

                int printTail = 0;

                for (int k = 0; k < length; k++) {

                    if (i == tailY[k] && j == tailX[k]) {

                        printf("o");

                        printTail = 1;

                    }

                }

                if (!printTail)

                    printf(" ");

            }

            if (j == WIDTH - 1)

                printf("#");

        }

        printf("\n");

    }

    for (i = 0; i < WIDTH + 2; i++)

        printf("#");

    printf("\n");

    printf("Score: %d\n", score);

}

void Input() {

    if (_kbhit()) {

        switch (_getch()) {

        case UP:

            direction = UP;

            break;

        case DOWN:

            direction = DOWN;

            break;

        case LEFT:

            direction = LEFT;

            break;

        case RIGHT:

            direction = RIGHT;

            break;

        case 'x':

            gameOver = 1;

            break;

        }

    }

}

void Logic() {

    int prevX = tailX[0];

    int prevY = tailY[0];

    int prev2X, prev2Y;

    tailX[0] = headX;

    tailY[0] = headY;

    for (int i = 1; i < length; i++) {

        prev2X = tailX[i];

        prev2Y = tailY[i];

        tailX[i] = prevX;

        tailY[i] = prevY;

        prevX = prev2X;

        prevY = prev2Y;

    }

    switch (direction) {

    case UP:

        headY--;

        break;

    case DOWN:

        headY++;

        break;

    case LEFT:

        headX--;

        break;

    case RIGHT:

        headX++;

        break;

    default:

        break;

    }

    if (headX >= WIDTH) headX = 0;

    else if (headX < 0) headX = WIDTH - 1;

    if (headY >= HEIGHT) headY = 0;

    else if (headY < 0) headY = HEIGHT - 1;

    for (int i = 0; i < length; i++) {

        if (tailX[i] == headX && tailY[i] == headY)

            gameOver = 1;

    }

    if (headX == fruitX && headY == fruitY) {

        score += 10;

        length++;

        fruitX = rand() % WIDTH;

        fruitY = rand() % HEIGHT;

    }

}

int main() {

    welcome();

    Setup();

    while (!gameOver) {

        Draw();

        Input();

        Logic();

        Sleep(10);

    }

    return 0;

}

如下图所示

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值