当前位置: 首页 > news >正文

(C语言贪吃蛇)14.用绝对值方式解决不合理的走位

目录

 

前言

 解决方式

运行效果

总结


 

前言

        我们上节实现了贪吃蛇四方向走位,但是出现了一些不合理的走位,比如说身体节点和头节点重合等等,本节我们便来解决这个问题。

        

        我们希望贪吃蛇撞到自身时游戏会重新开始,并且贪吃蛇的运动方向不能与上一秒的运动方向相反,即贪吃蛇的身体节点不能重合。

 解决方式

        对于我们上节宏定义的四个方向需要改变其值,为了更好的以绝对值的方式判断方向。

#define UP 1

#define DOWN 2

#define LEFT 3

#define RIGHT 4

修改后:

#define UP 1

#define DOWN -1

#define LEFT 2

#define RIGHT -2

我们这样修改的目的是:之前我们改变方向的时候是通过change()函数,只要我们有按键被按下的时候就改变他的方向,现在我们封装一个函数turn()来判断不合理走位。

void turn()
{int direction;if(dir != abs(dir)){dir = direction;}
}

 这个函数用来判断贪吃蛇的走位是否合理,如果按下的按键方向和之前运动的方向相反,那么就不执行,那么我们就解决了贪吃蛇的一个不合理走位了。

void turn(int direction)
{if(abs(dir) != abs(direction)){dir = direction;}
}void* changeDir()
{while (1){key = getch();switch (key){case 0402:turn(DOWN);break;case 0403:turn(UP);break;case 0404:turn(LEFT);break;case 0405:turn(RIGHT);break;}}
}

该文件默认名称为snake13.c

打开终端运行以下指令编译该文件

“gcc snake13.c -lcurses”

系统默认生成一个名为“a.out”的可执行文件,输入以下指令运行该文件

"./a.out" 

运行效果

        打开终端运行该程序,可以看出贪吃蛇已经正常运行,不会出现不合理的走位。

在Windows环境中可能会出现乱码,因为上下左右键作为相应键会返回出一些值出现在屏幕上导致乱码,我们只需要加上ncurses库里自带的函数即可。

(出现问题的友友这样修改就行了)

void initNcurse()
{initscr();keypad(stdscr,1);noecho();
}

 

        此时我们的贪吃蛇就不会出现不合理的走位了! 

总结

        我们本节解决了贪吃蛇不合理走位的问题,通过宏定义改变数值然后封装函数解决问题。


http://www.mrgr.cn/news/42544.html

相关文章:

  • Redis缓存
  • NVIDIA机密计算文档
  • AAA Mysql与redis的主从复制原理
  • 探索画中画视频剪辑:创意无限,轻松实现
  • vue3+vite@4+ts+elementplus创建项目详解
  • HTML详解
  • macos安装git并连接gitCode远程仓库
  • 创建实体类pojo实现Serializable接口
  • 全球最具影响力的思想家颜廷利在中国影响力地位
  • ubuntu * 表达的应用
  • I2C以及OLED屏幕的实际应用
  • 【C++】—— vector模拟实现
  • k8s-集群部署
  • 微智启yolo数据集划分工具免费分享下载
  • 腾讯云技术深度解析:从微服务到AI编程助手的应用实践
  • Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
  • 神经网络分类任务
  • webGL入门(六)图形旋转
  • 快速点特征直方图 (FPFH) 描述符 和 点特征直方图 (PFH) 描述符 的差异
  • Redis篇(面试题 - 连环16炮)(持续更新迭代)