苏州实操派科技有限公司官网-实操派教育科技,汇川技术PLC培训,实操派PLC培训,苏州PLC培训机构

贪吃蛇的C语言小程序你能写么

[复制链接]
1 101

附件下载,需登录可以查看贴内更多信息

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用C语言实现一个贪吃蛇小程序

相关帖子

回复

使用道具 举报

chatGPT机器人 2023-3-28 14:42:57 | 显示全部楼层
好的,下面是一个简单的贪吃蛇小程序。需要用到C语言和Windows.h头文件中的一些函数。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <Windows.h>
  5. // 定义地图大小
  6. #define MAP_WIDTH 50
  7. #define MAP_HEIGHT 20
  8. // 定义蛇节点结构体
  9. typedef struct node {
  10.     int x;
  11.     int y;
  12.     struct node *next;
  13. } Node;
  14. // 定义方向常量
  15. #define DIR_UP 0
  16. #define DIR_DOWN 1
  17. #define DIR_LEFT 2
  18. #define DIR_RIGHT 3
  19. // 定义全局变量
  20. int map[MAP_HEIGHT][MAP_WIDTH]; // 地图数组
  21. int score = 0; // 得分
  22. Node *head, *tail; // 蛇头和蛇尾指针
  23. int dir = DIR_RIGHT; // 当前方向
  24. int food_x, food_y; // 食物坐标
  25. // 初始化地图
  26. void init_map() {
  27.     for (int i = 0; i < MAP_HEIGHT; i++) {
  28.         for (int j = 0; j < MAP_WIDTH; j++) {
  29.             if (i == 0 || i == MAP_HEIGHT - 1 || j == 0 || j == MAP_WIDTH - 1) {
  30.                 map[i][j] = -1; // 边界为-1,表示不能通过
  31.             } else {
  32.                 map[i][j] = 0; // 其他位置为0,表示可以通过
  33.             }
  34.         }
  35.     }
  36. }
  37. // 初始化蛇
  38. void init_snake() {
  39.     head = tail = (Node *)malloc(sizeof(Node));
  40.     head->x = MAP_WIDTH / 2;
  41.     head->y = MAP_HEIGHT / 2;
  42.     head->next = NULL;
  43.     map[head->y][head->x] = 1; // 蛇头标记为1,表示蛇头所在位置
  44. }
  45. // 游戏结束
  46. void game_over() {
  47.     system("cls"); // 清屏
  48.     printf("=====================\n");
  49.     printf("       Game Over!     \n");
  50.     printf("      得分:%d        \n", score);
  51.     printf("=====================\n");
  52.     exit(0); // 退出程序
  53. }
  54. // 生成食物
  55. void generate_food() {
  56.     srand(time(NULL)); // 随机数种子
  57.     int x, y;
  58.     do {
  59.         x = rand() % (MAP_WIDTH - 2) + 1; // 食物不能出现在边界上
  60.         y = rand() % (MAP_HEIGHT - 2) + 1;
  61.     } while (map[y][x] != 0); // 必须是空位
  62.     food_x = x;
  63.     food_y = y;
  64.     map[food_y][food_x] = -2; // 食物标记为-2,表示食物所在位置
  65. }
  66. // 显示地图和蛇
  67. void display() {
  68.     system("cls"); // 清屏
  69.     for (int i = 0; i < MAP_HEIGHT; i++) {
  70.         for (int j = 0; j < MAP_WIDTH; j++) {
  71.             if (map[i][j] == -1) {
  72.                 printf("#"); // 边界为#
  73.             } else if (map[i][j] == -2) {
  74.                 printf("$"); // 食物为$
  75.             } else if (map[i][j] > 0) {
  76.                 printf("*"); // 蛇身为*
  77.             } else {
  78.                 printf(" "); // 空位为空格
  79.             }
  80.         }
  81.         printf("\n");
  82.     }
  83. }
  84. // 移动蛇
  85. void move_snake() {
  86.     int x = head->x, y = head->y;
  87.     switch (dir) {
  88.         case DIR_UP:
  89.             y--;
  90.             break;
  91.         case DIR_DOWN:
  92.             y++;
  93.             break;
  94.         case DIR_LEFT:
  95.             x--;
  96.             break;
  97.         case DIR_RIGHT:
  98.             x++;
  99.             break;
  100.     }
  101.     if (map[y][x] == -1 || map[y][x] > 0) {
  102.         game_over(); // 撞到边界或吃到自己,游戏结束
  103.     }
  104.     if (map[y][x] == -2) {
  105.         score++; // 吃到食物,得分加1
  106.         generate_food();
  107.     } else {
  108.         map[tail->y][tail->x] = 0; // 尾节点标记为0,表示空位
  109.         tail = tail->next;
  110.     }
  111.     head->next = (Node *)malloc(sizeof(Node)); // 新建头节点
  112.     head->next->x = x;
  113.     head->next->y = y;
  114.     head->next->next = head;
  115.     head = head->next;
  116.     map[y][x] = 1; // 新的头节点标记为1
  117. }
  118. // 检测键盘输入
  119. void check_input() {
  120.     if (_kbhit()) {
  121.         int ch = _getch();
  122.         switch (ch) {
  123.             case 'w':
  124.             case 'W':
  125.                 if (dir != DIR_DOWN) { // 防止掉头
  126.                     dir = DIR_UP;
  127.                 }
  128.                 break;
  129.             case 's':
  130.             case 'S':
  131.                 if (dir != DIR_UP) {
  132.                     dir = DIR_DOWN;
  133.                 }
  134.                 break;
  135.             case 'a':
  136.             case 'A':
  137.                 if (dir != DIR_RIGHT) {
  138.                     dir = DIR_LEFT;
  139.                 }
  140.                 break;
  141.             case 'd':
  142.             case 'D':
  143.                 if (dir != DIR_LEFT) {
  144.                     dir = DIR_RIGHT;
  145.                 }
  146.                 break;
  147.             case 'q':
  148.             case 'Q':
  149.                 game_over(); // 退出游戏
  150.                 break;
  151.         }
  152.     }
  153. }
  154. int main() {
  155.     init_map();
  156.     init_snake();
  157.     generate_food();
  158.     while (1) {
  159.         display();
  160.         check_input();
  161.         move_snake();
  162.         Sleep(100); // 控制速度
  163.     }
  164.     return 0;
  165. }
复制代码

由于使用了Windows.h头文件中的一些函数,这个程序只能运行在Windows系统上。
                                                                                                                                                                                                                                                 以上内容来自  ChatGPT 3.5turbo,如需继续对话,则在此回答下“点击回复” 或者 在提问时  “@机器人”!禁止 "黄赌毒及政治敏感",违者封号,严重者 提交 网警公安部门。本站不对内容真实性负责,chatGPT有时候会乱说一通……
回复

使用道具 举报

data/attachment/temp/202212/30/133743h8cd9z14sjs84kaz.png_thumb.jpg 共30章节550课时

【全科班】汇川中型PLC从0到1就业班(Codesys系统化全科班课程-600节+)-汇川PLC教程

朱子文

¥ 4699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/VMdEZiqp3BMkbBIlMRRD.png 共9章节44课时

【09-Codesys教程】电子凸轮齿轮从入门到进阶系统化课程-色标跟踪-探针-追剪-飞剪-间歇式工艺-汇川中大型PLC伺服多轴同步运控

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240217/v39r666Z663eBBGKErRm.png 共31章节557课时

【全科班】汇川技术H5U从0到1就业班(系统化全科班-600节+)

张汉清

¥ 4199.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240207/HlL5SWHry9lPVdqC8i59.png 共5章节63课时

【01-Codesys教程】ST文本从0到1,从入门到进阶-汇川中大型PLC教程

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Fu5pu34pPcTpu0La443P.png 共6章节52课时

【10-Codesys】包装行业-三伺服枕包机实战项目(4虚轴3实轴耦合+凸轮动态修改+防切工艺+防空工艺+色标探针+挺杆功能+状态机编程+程序框架+指针FIFO)

朱子文

¥ 899.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240227/AMo32PcbJeIMJBT3m8Pu.png 共4章节36课时

03 中大型ST文本结合仿真软件小项目 31节-气缸功能块封装-状态机编程思路-小设备框架

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Su1ibr3I77yl78DLBR7D.png 共4章节29课时

【12-Codesys小课】中大型PLC-PID控制器算法从入门到进阶之液位控制系统

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/Cz3hqDmDD8qHfT3MDm4m.png 共3章节30课时

【05-Codesys教程】汇川中大型PLC单轴运动控制教程-汇川PLC教程

朱子文

¥ 399.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/gXpEpJ8Qb78eD5lDqlnQ.png 共3章节25课时

【06-Codesys教程】汇川中大型PLC运动控制进阶篇(多轴PTP)-编程框架与编程模板实操

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/e39s63ppg54Q2s5H33H9.png 共3章节24课时

【08-codesys教程】汇川中大型codesys教程-多轴运控扩展篇经验分享小知识分享

朱子文

¥ 299.00
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

data/attachment/temp/202212/30/133743h8cd9z14sjs84kaz.png_thumb.jpg 共30章节550课时

【全科班】汇川中型PLC从0到1就业班(Codesys系统化全科班课程-600节+)-汇川PLC教程

朱子文

¥ 4699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/VMdEZiqp3BMkbBIlMRRD.png 共9章节44课时

【09-Codesys教程】电子凸轮齿轮从入门到进阶系统化课程-色标跟踪-探针-追剪-飞剪-间歇式工艺-汇川中大型PLC伺服多轴同步运控

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240217/v39r666Z663eBBGKErRm.png 共31章节557课时

【全科班】汇川技术H5U从0到1就业班(系统化全科班-600节+)

张汉清

¥ 4199.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240207/HlL5SWHry9lPVdqC8i59.png 共5章节63课时

【01-Codesys教程】ST文本从0到1,从入门到进阶-汇川中大型PLC教程

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Fu5pu34pPcTpu0La443P.png 共6章节52课时

【10-Codesys】包装行业-三伺服枕包机实战项目(4虚轴3实轴耦合+凸轮动态修改+防切工艺+防空工艺+色标探针+挺杆功能+状态机编程+程序框架+指针FIFO)

朱子文

¥ 899.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240227/AMo32PcbJeIMJBT3m8Pu.png 共4章节36课时

03 中大型ST文本结合仿真软件小项目 31节-气缸功能块封装-状态机编程思路-小设备框架

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Su1ibr3I77yl78DLBR7D.png 共4章节29课时

【12-Codesys小课】中大型PLC-PID控制器算法从入门到进阶之液位控制系统

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/Cz3hqDmDD8qHfT3MDm4m.png 共3章节30课时

【05-Codesys教程】汇川中大型PLC单轴运动控制教程-汇川PLC教程

朱子文

¥ 399.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/gXpEpJ8Qb78eD5lDqlnQ.png 共3章节25课时

【06-Codesys教程】汇川中大型PLC运动控制进阶篇(多轴PTP)-编程框架与编程模板实操

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/e39s63ppg54Q2s5H33H9.png 共3章节24课时

【08-codesys教程】汇川中大型codesys教程-多轴运控扩展篇经验分享小知识分享

朱子文

¥ 299.00

到"π³ 实操派",学PLC就是快!汇川PLC及Codesys培训

项目实战 手把手教学 微信&电话 15850116008
超600节系统化课程,汇川优秀自动化讲师亲授!学一门Codesys,玩800家PLC仅剩少量名额
点击免费试听

到实操派,学PLC就是快!

扫码领取工控文库VIP

钻石VIP先到先得

服务电话 & 微信:9:00-22:00

15850116008

苏州实操派科技有限公司

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

Copyright © 苏州实操派科技有限公司 2022 到实操派,学PLC就是快!工业自动化业务培训适用人群:成人 ( 苏ICP备2022021576号-3 )

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

返回顶部