自行找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;
}
如下图所示