C++ 双人贪吃蛇

本文介绍如何在C++中实现双人贪吃蛇游戏,通过修改基本贪吃蛇算法,使用goto语句分隔两只蛇的计数器,并利用move变量控制移动。尽管使用switch()函数处理蛇的移动变得复杂,尤其是当第二条蛇的输入与地图字符不一致时。此外,游戏规则设定为任一蛇死亡则游戏结束,未实现改变蛇头颜色的功能。
摘要由CSDN通过智能技术生成

这篇代码基于博主的“C++ 贪吃蛇基本算法”,加入第二只蛇让他移动并不难,但考虑到要让两只蛇的移动互不干扰那还真是破事真多。博主将“C++ 贪吃蛇基本算法”中的while(1)改成了goto,以用来将两条蛇的计数器分开,并加入了变量“move”来判断按键是操纵谁。在这篇代码中,switch()函数可能阅读起来非常困难,因为蛇2输入的按键与地图上的字符不匹配,所以这篇代码看起来并不是很明了。由于太麻烦,所以我设定成只要一条蛇GG游戏就GG。事实上改变蛇头的颜色并不是很难,但我实在懒。

#include <iostream>
#include <windows.h>
#include <cstring>
#include <time.h>
#include <conio.h>
using namespace std;

int error1(char x,char y)
{
    if(x<y)
        if((y-x==3)||(y-x==4))
            return 1;
    if(x>y)
        if((x-y==3)||(x-y==4))
            return 1;
    if(x==y)
        return 1;
    return 0;
}
int error2(char x,char y)
{
    if(x<y)
        if(y-x==2)
            return 1;
    if(x>y)
        if(x-y==2)
            return 1;
    if(x==y)
        return 1;
    return 0;
}
//纠正强行自噬 

int Pos(long x,long y)
{
    HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos={x,y};
    SetConsoleCursorPosition(direct,pos);
}
//改变光标位置

int Color(long clr)
{
    HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(direct,clr);
}
//改变输出颜色 

int Show(long judge)
{
    HANDLE direct=GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(direct,&cci);
    cci.bVisible=judge;
    SetConsoleCursorInfo(direct,&cci);  
} 
//是否显示光标 

int main()
{
    char map[15][18];
    char Key1,Keys1,Key2,Keys2,Key;
    long xh1,yh1,xt1,yt1,start1,timeover1;
    long xh2,yh2,xt2,yt2,start2,timeover2;
    long xm,ym,level,move;
    long X,Y;

    memset(map,' ',sizeof(map));
    for(long i=0;i<=14;i++)
    {
        if((i==0)||(i==14))
            for(long j=0;j<=17;j++)    
                map[i][j]='b';                        
        else
            map[i][0]=map[i][17]='b';
    }
    //地图初始化 
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值