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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因

    谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因从2020年11月20号左右,谷歌地球中国服务器全部关停,所有原来可以使用的hosts,全部不能使用了,导致原来可以在电脑上打开谷歌地球的,现在全部提示无网络,如下图:这个是谷歌地球的最新版,一样打不开:解决办法,尝试了,国内所有的有关谷歌地图的软件。唯一现在可以使用的:BIGEMAP如下图分享地址给大家,大家可以安装来试一试,免费可用:http://download.bigemap.com/bmsetup.rar欢迎留言,提供更多谷歌地球的信息…

    2022年9月19日
    3
  • android操作系统详细目录结构

    android操作系统详细目录结构\system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。下面是详细的介绍:\system\app\AlarmClock.apk闹钟\system\app\AlarmClock.odex\system\app\Browser.apk浏览器

    2022年10月15日
    2
  • 《当时只道是寻常》——安意如——品纳兰容若《饮水词》「建议收藏」

    目录    如梦令2    如梦令4    浣溪沙5    浣溪沙6    浣溪纱7    虞美人9    虞美人(秋夕信步)10    虞美人11    虞美人12    虞美人14    虞美人15    蝶恋花16    蝶恋花18    蝶恋花19    蝶恋花散花楼送客21    采桑子塞上咏雪花22    采桑子23    采桑子25    采桑

    2022年4月10日
    75
  • golang操作elasticsearch详解[通俗易懂]

    golang操作elasticsearch详解[通俗易懂]golang操作elasticsearch详解直接上代码packagemainimport( “bytes” “context” “fmt” “github.com/olivere/elastic/v7” “log” “strconv”)constIndexName=”test_index”funcmain(){ IsDocExists(“xxx”,IndexName)}//获取Es客户端funcGetEsClient()*elastic.Clie

    2022年5月5日
    61
  • postfix邮箱_用post方式发送文件

    postfix邮箱_用post方式发送文件一、首先关闭防火墙[root@localhost~]#systemctlstopfirewalld[root@localhost~]#setenforce0[root@localhost~]#getenforcePermissive二、搭建postfix[root@localhost~]#yuminstallpostfix三、配置postfix[root@local…

    2022年9月23日
    2
  • linux快捷键(mac版)

    linux快捷键(mac版)控制台快捷键command+a:回到命令开头command+e:回到命令结尾command+u:删除前面所有内容vim快捷键普通模式移动到第一行:gg移动到最后一行:G移动到第几行:数字+G向下移动几行:数字+enter到当前行第几个字符:数字+space查找字符串:/+字符串ZZ显示行号:(:setnu)替换:(:n1,n2/s/word1/word2/gc),$s代表行尾撤销/重做:u/ctrl+rnyy:向下复制多行p:在下一行粘

    2025年5月25日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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