挑战!贪吃蛇小游戏的实现(2)

这篇具有很好参考价值的文章主要介绍了挑战!贪吃蛇小游戏的实现(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在贪吃蛇小游戏的实现(1)中,我们学习了win32 相关的一些知识,本篇文章,博主将带领大家从0开始实现贪吃蛇小游戏!

挑战!贪吃蛇小游戏的实现(2),算法,数据结构,c语言

贪吃蛇游戏设计与分析

本地化

  • <locale.h>实现本地化,该头文件提供的函数用于控制C标准库中对于不同的地区会产生不一样行为的部分,如:数字量的格式,货币量的格式,字符集以及日期和时间的表示形式
  • 类项:通过修改地区,程序可以改变它的行为来适应世界的不同区域,但地区的改变可能会影响库的许多部分,其中有一部分使我们不希望改变的。所以C语言支持针对不同的类项进行修改,下面的一个宏,指定一个类项
LC_COLLATE 影响字符串比较函数
LC_CTYPE 影响字符处理函数
LC_MONETARY 影响货币格式
LC_TIME 影响时间格式
LC_NUMERIC 影响printf()的数字格式
LC_ALL 针对所有类项的修改
  • setlocale函数char * setlocale (int category,const char* locale);其中第一个参数可以是前面说明的类项中的一个,第二个参数有两种取值:“C”和“ ”。“C”代表正常模式,“ ”代表本地模式。

在任意程序执行开始时,都会隐藏调用

setlocale(LC_ALL,"C");

当程序运行起来后,想改变地区,就要调用setlocale函数切换到本地模式

setlocale(LC_ALL," ");
  • 宽字符的打印
  1. 宽字符的字面量必须加上前缀L,否则C语言会把字面量当做窄字符类型来处理。
  2. 前缀L加在单引号前面,表示宽字符,宽字符的打印用wprintf,对应wprintf的占位符为%lc
  3. 在双引号前面表示宽字符,对应wprintf的占位符为%ls
#include <stdio.h>
#include <locale.h>
int main()
{
  setlocale(LC_ALL," ");
  wchar_t ch1 = L'新';
  wchar_t ch2 = L'年';
  wchar_t ch3 = L'快';
  wchar_t ch4 = L'乐';

  wprintf(L"%lc\n",ch1);
  wprintf(L"%lc\n",ch2);
  wprintf(L"%lc\n",ch3);
  wprintf(L"%lc\n",ch4);
  return 0;
}

元素设计

  • 地图坐标:实现一个27行,58列的棋盘,再围绕地图画出墙。

挑战!贪吃蛇小游戏的实现(2),算法,数据结构,c语言

  • 蛇身和食物:初始化状态,假设蛇的长度是5,蛇身的每个节点为〇,在固定的一个坐标处,比如(24,5) 处开始出现蛇,连续5个节点。注意:蛇的每个节点的x坐标必须是2的倍数,否则可能会出现蛇的一个节点有一半出现在墙体内另一半出现在墙体外的情况。关于食物,就是在墙体内随机生成一个坐标(x坐标必须是2的倍数)坐标不能和蛇的身体重合,然后打印❤
  • 数据结构设计
  1. 蛇节点结构:在游戏运行过程中,蛇每次吃一个食物,身体就会变长一节,如果我们使用链表存储蛇的信息,那么蛇的每一节其实就是链表的每个节点。每个节点只需要记录好地图上的坐标就行。蛇节点结构如下:
    typedef struct SnakeNode
    {
    	int x;
    	int y;
    	struct SnakeNode* next;
    }SnakeNode,*pSnakeNode;
  2. 要管理整条贪吃蛇,需要再封装一个snake结构来维护整条贪吃蛇
    typedef struct Snake
    {
    	pSnakeNode _pSnake;//维护整条蛇的指针
    	pSnakeNode _pFood;//维护食物的指针
    	enum DIRECTION _Dir;//蛇头方向
    	enum GAME_STATUS _Status;//游戏状态
    	int _Score;//当前获得分数
    	int _foodWeight;//默认每个食物十分
    	int _sleepTime;//每走一步的休眠时间
    }Snake,*pSnake;
  3. 枚举蛇的运动方向
    enum DIRECTION
    {
    	UP = 1,
    	DOWN,
    	LEFT,
    	RIGHT
    };
  4. 枚举运动状态
    //枚举游戏状态
    enum GAME_STATUS
    {
    	OK,//正常运行
    	KILL_BY_WALL,//撞墙
    	KILL_BY_SELF,//咬到自己
    	END_NORMAL//正常结束
    };
    

     游戏流程设计

在下一节中,我们将根据游戏流程的设计,进行具体代码的实现~今天是博主复工的第一天,相信不少小伙伴也都以及回到工作学习的岗位上了,新年新气象,大家一起加油冲呀!!! 

挑战!贪吃蛇小游戏的实现(2),算法,数据结构,c语言文章来源地址https://www.toymoban.com/news/detail-833674.html

到了这里,关于挑战!贪吃蛇小游戏的实现(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio实现贪吃蛇小游戏

    贪吃蛇是一款经典的街机游戏,不仅在电子游戏史上占有一席之地,也在很多人的童年回忆中留下了深刻的印象。在游戏中,玩家需要操纵一条蛇通过吃食物来增加自己的长度,同时要避免撞到墙或自己的身体。随着蛇不断吃食物,它的身体会越来越长,游戏的难度也会随之

    2024年02月05日
    浏览(31)
  • 基于Unity+MySQL实现贪吃蛇小游戏

    【主界面控制程序】: using TMPro; using UnityEngine; using UnityEngine.UI; public class MainUIController : MonoBehaviour {     private static MainUIController _instance; //制作外部调用的方法     public static MainUIController Instance    //制作外部调用的方法     {                                        

    2023年04月15日
    浏览(35)
  • 使用Python+pygame实现贪吃蛇小游戏

    使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下: 游戏源码如下: 第二种 就不给出运行效果图了,你可以运行看看。 下面给出另一种实现源码: OK! 

    2024年01月16日
    浏览(43)
  • 使用TypeScript实现贪吃蛇小游戏(网页版)

    本项目使用webpack+ts所编写 下边是项目的文件目录 /src下边的index.html页面是入口文件 index.ts是引入所有的ts文件 /modules文件夹是用来存放所有类的 index.html index.ts  /style/less /modules/Food.ts /modules/GameControl.ts /modules/ScorePanel.ts /modules/Snake.ts

    2024年02月13日
    浏览(29)
  • 学生学python编程---实现贪吃蛇小游戏+源码

    前言 这几年人工智能技术大发展,Python因此几乎成了第一位的语言。实际上,多年来,它不仅在软件工程师中得到广泛使用,也是各行业通用的专家语言,就是说,不管孩子以后做什么,都可能用得着。准备针对我自己上小学的孩子,每周抽出些时间,通过学习他们感兴趣的

    2023年04月09日
    浏览(31)
  • C语言从零实现贪吃蛇小游戏

    制作不易,点赞关注一下呗!!! 文章目录 前言 一.  技术要点 二、 WIN32API介绍 三、 贪吃蛇游戏设计与分析         1.游戏开始前的初始化         2.游戏运行的逻辑  总结 当我们掌握链表这样的数据结构之后,我们就可以用它来做一些小项目,比如童年小游戏贪吃蛇

    2024年02月20日
    浏览(29)
  • C语言之实现贪吃蛇小游戏篇(2)

    目录 🎇测试游戏test.c 🎇游戏头文件包含函数声明snake.h 🎇游戏实现snake.c 屏幕录制 2023-12-02 204515   ✔✔✔✔✔最后感谢大家的阅读,若有错误和不足,欢迎指正!乖乖敲代码哦!  代码---------→【唐棣棣 (TSQXG) - Gitee.com】 联系---------→【邮箱:2784139418@qq.com】

    2024年02月05日
    浏览(45)
  • 使用Java实现一个简单的贪吃蛇小游戏

    基于java实现贪吃蛇小游戏,主要通过绘制不同的图片并以一定速度一帧一帧地在窗体上进行展示。 开发工具:eclipse java工具包:jdk1.8 代码地址:https://gitee.com/jay_musu/games-and-tools.git 创建一个新的项目,并命名。创建一个名为images的文件夹用来存放游戏相关图片。然后再在项

    2024年02月11日
    浏览(33)
  • 儿童节小游戏——HTML+JS实现贪吃蛇

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:前端案例分享专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:儿童节小游戏——

    2024年02月07日
    浏览(31)
  • 小游戏贪吃蛇的实现之C语言版

    找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:C语言 目录 游戏前期准备: 设置控制台相关的信息  GetStdHandle GetConsoleCursorInfo  SetConsoleCursorInfo SetConsoleCursorPosition GetAsyncKeyState 贪吃蛇游戏设计与分析  本地化 地图,食物

    2024年04月23日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包