#include #include // Windows下使用getch(),Linux下可以使用ncurses库 #include #include #include // 用于Windows下的Sleep()函数 #define WIDTH 30 #define HEIGHT 10 #define GROUND_HEIGHT (HEIGHT - 1) int dino_position = GROUND_HEIGHT; // 恐龙的位置 int obstacle_position = WIDTH - 1; // 障碍物的起始位置 int score = 0; int is_jumping = 0; // 是否在跳跃状态 int jump_height = 3; // 跳跃高度 int jump_progress = 0; // 当前跳跃进度 void draw() { system("cls"); // 清屏 for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { if (i == dino_position && j == 1) { printf("D"); // 用D代表小恐龙 } else if (i == GROUND_HEIGHT && j == obstacle_position) { printf("|"); // 用|代表障碍物 } else if (i == GROUND_HEIGHT) { printf("_"); // 地面 } else { printf(" "); // 空白 } } printf("\n"); } printf("Score: %d\n", score); } void update() { // 障碍物向左移动 obstacle_position--; if (obstacle_position < 0) { obstacle_position = WIDTH - 1; score++; // 每当避开一个障碍物,得分+1 } // 处理跳跃逻辑 if (is_jumping) { if (jump_progress < jump_height) { dino_position--; jump_progress++; } else { dino_position++; if (dino_position >= GROUND_HEIGHT) { dino_position = GROUND_HEIGHT; is_jumping = 0; // 跳跃结束 jump_progress = 0; } } } // 检查碰撞 if (obstacle_position == 1 && dino_position == GROUND_HEIGHT) { printf("Game Over! Final Score: %d\n", score); exit(0); // 游戏结束 } } void jump() { if (!is_jumping) { is_jumping = 1; } } int main() { srand(time(0)); // 随机数种子 while (1) { if (_kbhit()) { // 检测键盘输入 char ch = _getch(); if (ch == ' ') { // 按空格键跳跃 jump(); } } update(); // 更新游戏状态 draw(); // 绘制游戏画面 Sleep(100); // 控制游戏速度 } return 0; }