使用c++怎么编写一个贪吃蛇游戏

  介绍

这篇文章给大家介绍使用c++怎么编写一个贪吃蛇游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、基本思路

制作贪吃蛇游戏,首先必须要有的材料是蛇和得分的食物;其次是游戏逻辑,1。要能使用键盘控制蛇的移动;2。食物被吃掉要能再次生成并且蛇要做出相应变化;3。蛇咬到自己的身体和墙会死亡;最后是图形界面的显示。

二、蛇和食物

蛇和食物使用结构体来储存,代码比较简单。

# include  & lt; graphics.h>   # include  & lt; stdio.h>   # include  & lt; time.h>   # include  & lt; conio.h>      # define  SIZE  30   # define  N  1000年,//蛇的长度限制      struct 作   {   ,int  x;   ,int  y;   };      enum  Ch {=, up  72年,down =, 80年,left =, 75年,right =, 77年,P=112,},//ASCII码,枚举      struct 蛇   {   ,int  n;   [N], Coor 可控硅;   ,Ch  ch;//蛇的方向   }蛇;         struct 食物   {   ,Coor  fsr;//食物坐标   ,int 旗帜;//标记食物是否被吃的掉   }食物;

三、游戏逻辑实现

<强> 1。键盘控制蛇的移动

蛇的移动和方向改变主要是依靠SnakeMove和ChangeSnake两个函数实现,ChangeSnake函数通过键盘输入的ch值来判断用户对蛇方向的控制,从而修改snake.ch(蛇的方向)的值,然后SnakeMove函数通过修改后的蛇。ch的值来控制蛇的移动,如果没有新的ch值从键盘输入,蛇会一直保持原来的方向移动到地图边界。

void  SnakeMove (), {   ,for  (int 小姐:=,snake.n 作用;1;,小姐:祝辞,0;,我——),{   ,snake.scr[我].x =, snake.scr[小姐,安康;1]方式;   ,snake.scr[我].y =, snake.scr[小姐,安康;1].y;      ,}   ,switch  (snake.ch), {   ,case :   ,snake.scr [0] .y  -=,大小;   ,打破;   ,   ,case 下:   ,snake.scr [0] .y  +=,大小;   ,打破;   ,   ,case 左:   ,snake.scr [0] .x  -=,大小;   ,打破;   ,case 右:   ,snake.scr [0] .x  +=,大小;   ,打破;   ,}   }      void  ChangeSnake (), {   ,switch  (getch ()), {   72年,case    ,if  (snake.ch  !=,向下),{=,snake.ch ;   ,}   ,打破;   80年,case    ,if  (snake.ch  !=,), {=,snake.ch ;   ,}   ,打破;   75年,case    ,if  (snake.ch  !=,右),{=,snake.ch ;   ,}   ,打破;   77年,case    ,if  (snake.ch  !=,左),{=,snake.ch ;   ,}   ,打破;   112年,case    ,系统(“pause");   ,}   }

<强> 2。食物被吃的触发事件

当食物被蛇吃掉(蛇头坐标和食物坐标重合),蛇身长度加一,食物存在标记置0;

void  EatFood (), {   ,if  (snake.scr [0] .x ==, food.fsr.x&, snake.scr [0] .y ==, food.fsr.y), {   ,snake.n + +;=,food.flag  0;   ,}   }

<强> 3。游戏结束事件

当蛇头触碰边界或者自己的身体(蛇头坐标超出地图边界或与蛇身任一坐标重合),窗口打印OverGame函数中预设的界面,并且关闭程序。

void  GameBreak (), {   ,   ,//撞的墙   ,if  (snake.scr [0] .y  & lt;, 1, | |, snake.scr [0] .y> 706年,| |,snake.scr [0] .x  & lt;, 1, | |, snake.scr [0] .x> 946), {   ,OverGame ();   ,}   ,//撞身体   ,for  (int 小姐:=,snake.n 作用;1;,小姐:祝辞,0;,我——),{   ,if  (snake.scr [0] .x ==, snake.scr[我].x&, snake.scr [0] .y ==, snake.scr[我].y), {   ,OverGame ();      ,}   ,}   }         void  OverGame (), {   ,清除设备();   ,settextcolor(红色);   ,settextstyle (100, 0,, L"黑体“);   ,outtextxy (400,, 250,, L"菜“);   ,睡眠(2000);   ,退出(0);   }

四、图形界面的显示

<强> 1。素材准备

需要准备的素材有蛇头的图片(如果不是对称图形,可以准备四个不同方向的图片),蛇身的图片(如果制作蛇头和蛇身一样的话则可以直接使用蛇头的图片),得分果实的图片。

<强> 2。背景制作及图片导入

将所有图片放入vs的项目文件夹即可直接在代码中通过loadimage函数对图片名字调用,GameInit函数主要进行游戏初始化,将蛇长度置为一,坐标置为(0,0),食物存在标记置零,打印游戏欢迎界面(GameStart函数)。

使用c++怎么编写一个贪吃蛇游戏