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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无线通信架构_无线接入网的三层架构

    无线通信架构_无线接入网的三层架构无线通信主要是利用无线电(Radio)射频(RF)技术的通信方式,无线网络是采用无线通信技术实现的网络。无线通信知识架构参考这篇文章——https://blog.csdn.net/zh328271057/article/details/85040145问题在于,无线通信在网络技术方面主要包含无线网络和移动网络(或称为蜂窝移动网络)无线网络可分为两种:近距离无线网络和远距离无线网络,近距离…

    2022年9月21日
    0
  • 十大下载激活成功教程版最厉害的软件_pix4D激活成功教程

    十大下载激活成功教程版最厉害的软件_pix4D激活成功教程中国著名的D版和激活成功教程软件下载网站 (1)无忧软件网 – 不可多得的激活成功教程软件下载基地,附有无忧书库,无忧字体,代码基地,无忧教学,**园地,完全游戏http://www.51soft.com/ ;(2)精品软件秀 – 软件下载网页,可惜更新太慢!分类清楚,更新及时,也值得一看。http://www.ohsoft.com/ ;(3)163软件园 – 163软件园是国内著名的软件网站,网站定位是提供“提

    2022年10月13日
    0
  • 多线程死锁的产生以及如何避免死锁

    多线程死锁的产生以及如何避免死锁一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如果有两辆汽车分别从桥的左右两端驶上该桥,则会出现

    2022年7月13日
    18
  • resnet50 pytorch_resnet34结构

    resnet50 pytorch_resnet34结构ResNet18、ResNet20、ResNet34、ResNet50网络结构与实现

    2022年10月5日
    0
  • NMF-matlab

    NMF-matlabmatlab练习程序(非负矩阵分解)  这个算法是Lee和Seung在1999年发表在nature杂志上的。具体论文看这里:http://www.seas.upenn.edu/~ddlee/Papers/nmf.pdf。  看不懂英文没关系,可以看这个中文的介绍:http://wenku.baidu.com/view/94c8af0bf78a6529647d5331.html。

    2022年6月16日
    39
  • install scim to ubuntu

    install scim to ubuntu

    2021年4月23日
    178

发表回复

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

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