欧美网站设计特点,成都网站建站,二级建造师报考条件2021考试时间,设计好看的网页C语言贪吃蛇小游戏演示和说明 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础#xff0c;训练编程思维#xff0c;培养解决问题的思路#xff0c;领略多姿多彩的C语言。 游戏开始后#xff0c;会在中间位置出现一条只有三个节点的贪吃蛇#xff0c;并随机出现一个食物训练编程思维培养解决问题的思路领略多姿多彩的C语言。 游戏开始后会在中间位置出现一条只有三个节点的贪吃蛇并随机出现一个食物如下图所示 图1游戏初始化 按下键盘上的任意一个键贪吃蛇开始移动。和大部分游戏一样你可以通过W、A、S、D四个键来控制移动方向如下图所示 图2游戏进行中 当贪吃蛇出界或者撞到自己时游戏结束如下图所示 图3游戏结束 这个版本的贪吃蛇将有以下特点
使用控制台终端ASCII字符表示蛇和食物方向控制W, A, S, D简单的游戏结束逻辑蛇撞墙或撞到自己 c
#include stdio.h
#include stdlib.h
#include conio.h // 注意这是特定于某些编译器的如Borland C或Turbo C
#include windows.h // 用于Sleep函数 #define WIDTH 20
#define HEIGHT 10
#define SNAKE_LEN 100 typedef struct { int x, y;
} Point; Point snake[SNAKE_LEN], food;
int snakeSize 3;
int direction 2; // 0: left, 1: up, 2: right, 3: down
int gameOver 0; void initialize() { for (int i 0; i WIDTH 2; i) printf(#); printf(\n); for (int i 0; i HEIGHT; i) { for (int j 0; j WIDTH; j) printf( ); printf(#\n); } for (int i 0; i 3; i) { snake[i].x WIDTH / 2 i; snake[i].y HEIGHT / 2; } food.x rand() % (WIDTH - 2) 1; food.y rand() % (HEIGHT - 1) 1; while (snake[0].x food.x snake[0].y food.y) { food.x rand() % (WIDTH - 2) 1; food.y rand() % (HEIGHT - 1) 1; } draw();
} void draw() { system(cls); for (int i 0; i WIDTH 2; i) printf(#); printf(\n); for (int i 0; i HEIGHT; i) { for (int j 0; j WIDTH; j) { if (j 0 || j WIDTH - 1) printf(#); else if (i snake[0].y j snake[0].x) printf(O); else { int eat 0; for (int k 0; k snakeSize; k) if (snake[k].x j snake[k].y i) { printf(o); eat 1; break; } if (!eat i food.y j food.x) printf(F); else printf( ); } } printf(#\n); } for (int i 0; i WIDTH 2; i) printf(#); printf(\n);
} void input() { if (_kbhit()) { switch (_getch()) { case w: case W: if (direction ! 1) direction 0; break; case s: case S: if (direction ! 0) direction 1; break; case a: case A: if (direction ! 3) direction 2; break; case d: case D: if (direction ! 2) direction 3; break; } }
} void move() { Point head snake[0]; switch (direction) { case 0: head.x--; break; case 1: head.y--; break; case 2: head.x; break; case 3: head.y; break; } // Check collision if (head.x WIDTH || head.x 0 || head.y HEIGHT || head.y 0) gameOver 1; for (int i 1; i snakeSize; i) if (snake[i].x head.x snake[i].y head.y) gameOver 1; for (int i snakeSize - 1; i 0; i--) snake[i] snake[i - 1]; snake[0] head; if (head.x food.x head.y food.y) { food.x rand() % (WIDTH - 2) 1; food.y rand() % (HEIGHT - 1) 1; snakeSize; while (snake[0].x food.x snake[0].y food.y) { food.x rand() % (WIDTH - 2) 1; food.y rand() % (HEIGHT - 1) 1; } }
} int main() { initialize(); while (!gameOver) { input(); move(); draw(); Sleep(100); // 控制游戏速度 } printf(Game Over!\n); return 0;
}注意
代码中使用了_kbhit()和_getch()函数这些函数是特定于某些编译器的如Borland C或Turbo C在标准C库中并不包含。如果你使用的是GCC或其他不支持这些函数的编译器你可能需要寻找替代方法如使用curses库等。 Sleep()函数用于Windows平台如果你在其他平台上编译可能需要替换为相应的函数如usleep()在Unix/Linux上。
演示程序百度网盘下载地址百度网盘 请输入提取码 密码u5ee