六十三吖 2016-12-04 08:47 采纳率: 0%
浏览 1993

c语言贪吃蛇 请解释问题原因,不要代码

以下是我写的还未完成的贪吃蛇代码,现在的主要问题是//蛇动 这里,代码我都检查几遍了,可是为什么运行的时候蛇还是没有动呢,请哪位大神解释下,万分感谢,请不要给我别的源代码,谢谢!

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define SankeLong 20

#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

//方向
enum {to_east=2,to_west=-2,to_north=-1,to_south=1};

//蛇数组
int q_arrSanke[SankeLong][3] = {0};

//边框
char q_StrGameBack[20][48] = { "■■■■■■■■■■■■■■■■■■■■■■■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■                                          ■\n",
                               "■■■■■■■■■■■■■■■■■■■■■■■\n" };

void StartGame()
{
    printf("\t\t\t    欢迎来到贪吃蛇世界\n\n");
    printf("\t\t\t     W A S D 控制方向\n");
    printf("\t\t\t    按下空格键开始游戏\n");
}

void StartMusic()
{
    PlaySound("E:\\茜拉-想你的夜.wav",NULL,SND_FILENAME | SND_ASYNC);
}

//输入空格切换界面
void ShuSpace()
{
    char c;
    c = getch();
    if (c == ' ')
        return;
    else
        ShuSpace();
}

//停止播放音乐
void StopMusic()
{
    PlaySound(NULL, 0, 0);
}

//游戏边框
void GameBoard()
{
    int i, j;
    for (i = 0; i < 20; i++)
    {
        printf("%s", q_StrGameBack[i]);
    }

}

//产生一个随机位置
void SetSankeRandPos()
{
    int mX = -1;
    int mY = -1;

    //产生随机数
    srand((unsigned int)time(NULL));
    mX = rand() % 19 + 1;
    mY = rand() % 18 + 1;

    //首次蛇节点
    q_arrSanke[0][0] = mY;
    q_arrSanke[0][1] = mX * 2;
    q_arrSanke[0][2]=  to_west;

    q_arrSanke[1][0] = mY;
    q_arrSanke[1][1] = mX * 2+2;
    q_arrSanke[1][2] = to_west;

    q_arrSanke[2][0] = mY;
    q_arrSanke[2][1] = mX * 2+4;
    q_arrSanke[2][2] = to_west;
}

//画蛇
void DrawSnake()
{
    int i = 0;
    for (i = 0; q_arrSanke[i][0] != 0; i++)
    {
        memcpy(&q_StrGameBack[q_arrSanke[i][0]][q_arrSanke[i][1]], "■",2);
    }
}

//蛇动
void MoveSnake()
{
    int i = SankeLong-1;
    while (i--)
    {
        if (q_arrSanke[i][0]==0)
        {
            continue;
        }
        else
        {
            q_arrSanke[i][0] = q_arrSanke[i - 1][0];
            q_arrSanke[i][1] = q_arrSanke[i - 1][1];
            q_arrSanke[i][2] = q_arrSanke[i - 1][2];
        }
    }
    if (q_arrSanke[0][2] == to_west || q_arrSanke[0][2] == to_east)
        q_arrSanke[0][1] += q_arrSanke[0][2];
    else
        q_arrSanke[0][0] += q_arrSanke[0][2];
    DrawSnake();
}

//游戏界面
void GameView()
{
    system("cls");                   //清空界面
    GameBoard();                     //游戏边框
    SetSankeRandPos();               //产生一个随机位置
    DrawSnake();
    while (1)
    {
        system("cls");
        MoveSnake();
        GameBoard();                     //游戏边框
        Sleep(500);

    } 
}


int main()
{   
    //StartGame();                     //游戏封面
    //StartMusic();                    //播放游戏音乐
    //ShuSpace();                      //输入空格切换界面
    //StopMusic();                     //停止播放音乐
    GameView();                        //游戏界面

    system("pause");
    return 0;
}
  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2016-12-04 08:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP