c跑酷小游戏代码100行
时间: 2023-09-14 07:09:20 浏览: 52
以下是一个简单的 C 语言跑酷小游戏代码,共计 100 行左右:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
// 游戏界面大小
#define ROWS 10
#define COLS 50
// 角色初始位置
#define START_ROW 9
#define START_COL 2
// 障碍物类型
#define OBSTACLE_NONE 0
#define OBSTACLE_SMALL 1
#define OBSTACLE_BIG 2
// 角色状态
#define STATE_RUN 0
#define STATE_JUMP 1
#define STATE_SLIDE 2
// 障碍物结构体
typedef struct obstacle {
int type; // 障碍物类型
int pos; // 障碍物位置
} Obstacle;
// 全局变量
int score = 0; // 分数
int state = STATE_RUN; // 初始状态为跑
int row = START_ROW; // 角色行
int col = START_COL; // 角色列
Obstacle obstacles[COLS]; // 障碍物数组
// 生成障碍物
void generate_obstacle() {
int i;
// 记录已有障碍物的位置
int pos[COLS];
for (i = 0; i < COLS; i++) {
if (obstacles[i].type != OBSTACLE_NONE) {
pos[i] = 1;
} else {
pos[i] = 0;
}
}
// 随机生成新的障碍物
int count = rand() % 2 + 1; // 每次生成 1~2 个障碍物
for (i = 0; i < count; i++) {
int j = rand() % COLS;
while (pos[j] == 1) {
j = rand() % COLS;
}
pos[j] = 1;
Obstacle obstacle;
obstacle.type = rand() % 2 + 1; // 随机生成小障碍物或大障碍物
obstacle.pos = j;
obstacles[j] = obstacle;
}
}
// 渲染游戏界面
void render() {
int i, j;
system("cls"); // 清屏
// 输出游戏界面
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (i == row && j == col) { // 输出角色
if (state == STATE_RUN) {
printf("O");
} else if (state == STATE_JUMP) {
printf("|");
} else if (state == STATE_SLIDE) {
printf("_");
}
} else { // 输出障碍物或空格
int has_obstacle = 0;
for (int k = 0; k < COLS; k++) {
if (obstacles[k].type != OBSTACLE_NONE && obstacles[k].pos == j && i == ROWS - obstacles[k].type) {
has_obstacle = 1;
printf("#");
break;
}
}
if (!has_obstacle) {
printf(" ");
}
}
}
printf("\n");
}
// 输出分数
printf("Score: %d\n", score);
}
int main() {
srand(time(NULL)); // 初始化随机数种子
while (1) {
generate_obstacle(); // 生成障碍物
render(); // 渲染界面
// 获取用户输入
int input = getch();
if (input == ' ') { // 空格键跳
if (state == STATE_RUN) {
state = STATE_JUMP;
}
} else if (input == 's') { // S 键滑
if (state == STATE_RUN) {
state = STATE_SLIDE;
}
} else if (input == 'q') { // Q 键退出游戏
break;
}
// 更新角色状态
if (state == STATE_JUMP) {
row--;
if (row == 0) {
state = STATE_RUN;
}
} else if (state == STATE_SLIDE) {
row++;
if (row == START_ROW) {
state = STATE_RUN;
}
}
// 更新分数
score++;
// 检测碰撞
for (int i = 0; i < COLS; i++) {
if (obstacles[i].type != OBSTACLE_NONE && obstacles[i].pos == col && row == ROWS - obstacles[i].type) {
printf("Game over!\n");
printf("Your score: %d\n", score);
return 0;
}
}
// 清空障碍物
for (int i = 0; i < COLS; i++) {
obstacles[i].type = OBSTACLE_NONE;
obstacles[i].pos = 0;
}
// 延时 100 毫秒
Sleep(100);
}
return 0;
}
```
运行代码后,用户可以通过空格键跳跃,S 键滑行,Q 键退出游戏。通过避开障碍物并尽可能多地跑步,获得高分。