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

相关推荐

  • idea 最新激活码(破解版激活)

    idea 最新激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
  • vue子组件向父组件传值的三种方式_vue子组件修改父组件值

    vue子组件向父组件传值的三种方式_vue子组件修改父组件值如需了解老子怎么控制儿子的,传送门:子组件child.vue<template><div><button@click=”$emit(’emit’,’方式1:传参给父组件第1个参数’,’方式1:传参给父组件第2个参数’,’…’)”>方式1:通过emit传参给父组件(推荐此方式)</button><button@click=”emit(‘方式2:传参给父组件第1个参数’,’方式2…

    2022年10月2日
  • html 竖排导航条,html 导航栏

    html 竖排导航条,html 导航栏html>lvnian学习(http://lvnian.blog.51cto.com/)ul{list-style-type:none;margin:0;padding:0;}a:link,a:visited{display:block;font-weight:bold;color:#FFFFFF;background-color:#98bf21;width:120px;text-align…

    2022年5月28日
  • 刷流量和刷点击率的方法探讨

    本文主要用到的工具软件有《网页自动操作通用工具》或《网页自动刷新监控工具》,其中《网页自动操作通用工具》包含《网页自动刷新监控工具》所有功能,所以主要以前者为例说明。请自行在网上搜索和下载软件。许多朋友需要用到提高流量或点击率,比如:提高自己博客访问量,小说访问量,视频点击率,论坛帖子点击率等。这样就可以提高自己的排名或在网…

    2022年4月13日
  • c语言编写图书管理系统程序_C语言图书管理系统

    c语言编写图书管理系统程序_C语言图书管理系统DOS界面的图书管理系统,具体内容如下程序分为两块:管理员操作(收录图书、删除图书等)和会员操作(注册、借书、还书等);1、管理员操作界面2、会员操作界面global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义)#include”iostream”#include”string”#include”fstream”#inclu…

    2022年10月11日
  • QStringList与QString互转

    QStringList与QString互转QStringListfonts;fonts&lt;&lt;"Arial"&lt;&lt;"Helvetica"&lt;&lt;"Times"&lt;&lt;"Courier";QStringstr=fonts.join(",");QStringstr="name1,path1;name2,p

    2022年4月29日

发表回复

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

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