c++编写入门版贪吃蛇,只要你想学就能学会

c++编写入门版贪吃蛇,只要你想学就能学会

c++编写入门版贪吃蛇,只要你想学就能学会

老规矩,先效果图
在这里插入图片描述
代码是用原生c++控制台程序编写的。这里面的算法很值得学习。

首先我们需要编写一个蛇的结构体。

struct body
{
   
    int x,y;
    body *last,*next;
    body(){
   last=next=NULL;}
}*head;

蛇的body里面有next为了连接蛇与蛇,然后last是为了标记蛇的尾部的。

int Rand(int l,int r)
{
   
    return rand()%(r-l+1)+l;
}

因为蛇吃的东西是需要随机生成的,蛇一开始的位置,方向全部都是随机的,所以我们封装好一个随机函数。

需要模拟真随机需要用到

 srand((unsigned)time(NULL));

这里面的地图+蛇,全部数据都写在一个二维数组里面

char map[23][53];

一开始的时候需要把墙体写好

//地图
    for( i=0;i<22;i++)
        for(int j=0;j<52;j++)
            map[i][j]=' ';
    for( i=0;i<52;i++)
        map[0][i]=map[21][i]='#';
    for( i=0;i<22;i++)
        map[i][0]=map[i][51]='#';

需要生成蛇的位置和方向

//生成蛇的位置
    srand((unsigned)time(NULL));
    head=new body;
    head->x=Rand(5,15),head->y=Rand(10,40);

	//生成蛇的方向
    d=Rand(0,3);
    switch(d)
    {
   
        case 0:map[head->x][head->y]='|';map[head->x+1][head->y]='|';break;
        case 1:map[head->x][head->y]='-';map[head->x][head->y+1]='-';break;
        case 2:map[head->x][head->y]='|';map[head->x-1][head->y]='|';break;
        case 3:map[head->x][head->y]='-';map[head->x][head->y-1]='-';break;
    }

最后我们需要控制蛇体移动,这里需要写上自己的摇杆。

		for(int i=0;i<=10;i++)
        {
   
            if(GetKeyState('S')<0&&d!=2)
                x=0;
            if(GetKeyState('D')<0&&d!=3)
                x=1;
            if(GetKeyState('W')<0&&d!=0)
                x=2;
            if(GetKeyState('A')<0&&d!=1)
                x=3;
            Sleep(10);
        }
        d=x;
        eat=(map[head->x+dd[d][0]][head->y+dd[d][1]]=='*');
        Update(head,head->x+dd[d][0],head->y+dd[d][1]);

eat是判断是否吃了食物。
Update就是要画出蛇的每一步。

在这个平台上有收徒的打算,如果小伙伴刚好需要一个能答疑,能带着你学习的师父,请联系我,q:2316773638

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2863.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • typora安卓_Markdown编辑器:Typora

    typora安卓_Markdown编辑器:Typora免费好用的Markdown写作工具,支持图片,代码高亮、插入表格、自定义主题、CSS完全配置等。如果你懂一点计算机基础,它还可以是一个“浏览器”。Typora(V0.9.9.26)关于Typora的介绍如下:Readable&WritableTyporawillgiveyouaseamlessexperienceasbothareaderandaw…

  • ODBC与JDBC比較

    ODBC与JDBC比較

  • 新闻专栏~ART让Android更流畅

    新闻专栏~ART让Android更流畅

  • 使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。[通俗易懂]

    使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。[通俗易懂]使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。

  • 电脑蓝屏0x000000f4解决步骤_0x000000c4开机就蓝屏

    电脑蓝屏0x000000f4解决步骤_0x000000c4开机就蓝屏电脑蓝屏的问题是大家最常见到的电脑问题之一,大多时候蓝屏故障的出现都和软件有关,少数为硬件不兼容或者故障导致。这里粗略的分析下STOP:0x000000F4字段的问题,仅做参考!以下先来看看网友是怎么分析与解决问题的吧!蓝屏代码0x000000f4原因分析:知道了原因,那么就下手解决类似问题就轻松了。1.先从软处着手,如运行莫软件导致错误,建议重装该软件,一般均可解决。2.考虑是否有其它软件同时运行导致冲突的或者主机配置内存过小导致内存溢出或者耗竭的(如采用XP系统建议配置512MB内存以上或.

  • GridView利用CheckBox复选框列实现单选功能

    GridView利用CheckBox复选框列实现单选功能自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持)://设置显示复选框列gridview.Option

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号