在linux中使用C语言编程贪吃蛇代码

时间: 2024-05-12 07:19:21 浏览: 13
以下是一个简单的贪吃蛇游戏代码,使用C语言编写,可以在Linux系统中运行。 ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <termios.h> #include <fcntl.h> #define ROW 20 #define COL 40 int x, y; // 蛇头坐标 int fx, fy; // 食物坐标 int score; // 得分 int len; // 蛇长 int dir; // 方向 int map[ROW][COL]; // 地图 int getch(void) { struct termios oldt, newt; int ch; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); ch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); return ch; } void init() // 初始化 { int i, j; x = ROW / 2; y = COL / 2; score = 0; len = 1; dir = 1; map[x][y] = len; fx = rand() % ROW; fy = rand() % COL; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (i == 0 || i == ROW - 1 || j == 0 || j == COL - 1) { map[i][j] = -1; } else { map[i][j] = 0; } } } map[fx][fy] = -2; } void draw() // 绘制 { system("clear"); int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (map[i][j] == -1) { printf("#"); } else if (map[i][j] == 0) { printf(" "); } else if (map[i][j] == -2) { printf("$"); } else { printf("*"); } } printf("\n"); } printf("Score: %d\n", score); } void update() // 更新 { int i, j; int nx = x, ny = y; switch (dir) { case 1: // 上 nx--; break; case 2: // 下 nx++; break; case 3: // 左 ny--; break; case 4: // 右 ny++; break; } if (nx == fx && ny == fy) { // 吃到食物 len++; score += 10; fx = rand() % ROW; fy = rand() % COL; } else if (map[nx][ny] != 0) { // 撞到自己 printf("Game Over!\n"); exit(0); } else { // 移动 for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (map[i][j] > 0) { map[i][j]--; } } } } map[x][y] = len; x = nx; y = ny; map[x][y] = len + 1; } int main() { init(); while (1) { draw(); usleep(100000); if (kbhit()) { // 按键 int ch = getch(); if (ch == 27) { // 方向键 ch = getch(); if (ch == 65 && dir != 2) { dir = 1; } else if (ch == 66 && dir != 1) { dir = 2; } else if (ch == 68 && dir != 4) { dir = 3; } else if (ch == 67 && dir != 3) { dir = 4; } } else if (ch == 'q') { // 退出 exit(0); } } update(); } return 0; } ``` 注意:该代码使用了Linux特有的头文件和函数,无法在Windows等其他操作系统中编译运行。

相关推荐

最新推荐

recommend-type

C语言实现贪吃蛇游戏代码

本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 //------------------------------------------problm区------------------------------ //①思考typedef 定义的变量如何利用fwrite...
recommend-type

贪吃蛇C语言代码实现(难度可选)

主要为大家详细介绍了贪吃蛇C语言代码实现,游戏难度可供选择,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言课程设计报告——贪吃蛇源程序.doc

C 语 言 课 程 设 计(小游戏贪吃蛇的程序设计报告) 目 录 一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构...
recommend-type

贪吃蛇代码-C语言-VC 6.0

贪吃蛇代码-C语言-VC 6.0 一个C语言写的简单贪吃蛇源代码
recommend-type

C语言课程设计+贪吃蛇代码

C语言课程设计+贪吃蛇代码 C语言课程设计+贪吃蛇代码 C语言课程设计+贪吃蛇代码
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。