注册 登录
编程论坛 C++教室

我想做一下类似贪吃蛇的,但是本体在移动的时候苹果的位置老是改变,怎么才能固定苹果的位置呢

菜鸡一只 发布于 2015-01-08 09:32, 702 次点击
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
int x=20,y=20;
char key;
int map[20][20];
int i,j,m,n=5;
void gotoxy(int x,int y);
void draw(int x,int y);
int ix,iy;
void setmap()
{
    for(i=0;i<20;i++)
    for(j=0;j<20;j++)
    {
        map[i][j]=0;
    }
    srand((unsigned)time(NULL));
    for(m=0;m<5;m++)
    {
        ix=rand()%20+1;
        iy=rand()%20+1;
        map[ix][iy]=1;
    }
    for(ix=0;ix<20;ix++)
    {
        for(iy=0;iy<20;iy++)
        {
            if(map[ix][iy]==1)
        {
        gotoxy(ix+1,iy+1);
        printf("$");
        }
        }
    }

}
void draw(int x,int y)
{
    system("cls");
    setmap();
    gotoxy(x,y);
    printf("&");
}
void gotoxy(int x,int y)
{
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos={x,y};
    SetConsoleCursorPosition(hOut,pos);
}
int main()
{
    draw(x,y);
    setmap();
    while(1)
    {
        if(kbhit())
{       key=getch();
        switch(key)
        {
            printf("%d\n",key);
            case 'w':{draw(x,--y>=0?y:0);break;}
            case 's':{draw(x,++y<=20?y:20);break;}
            case 'd':{draw(++x<=20?x:20,y);break;}
            case 'a':{draw(--x>=0?x:0,y);break;}
        }
}
}
}
4 回复
#2
rjsp2015-01-08 09:47
移动的时候苹果的位置老是改变
------ 你自己的代码 void draw(int x,int y) 中有 setmap() 呀,你不想改变你写它干什么?
void draw(int x,int y)
{
    //system("cls");
    //setmap();
    gotoxy(x,y);
    printf("&");
}

int main()
{
    setmap(); // 这里要增加
    draw(x,y);
#3
菜鸡一只2015-01-09 08:37
回复 2楼 rjsp
但是如果我不加system("cls")上去的话移动本体&的时候就会留下轨迹,就是原先&所在的地方这个&符号不会消失。
#4
rjsp2015-01-09 08:49
以下是引用菜鸡一只在2015-1-9 08:37:31的发言:

但是如果我不加system("cls")上去的话移动本体&的时候就会留下轨迹,就是原先&所在的地方这个&符号不会消失。

你就不会在原来&的地方写个空格吗?(这些问题,回答不是,不回答也不是。)
#5
菜鸡一只2015-01-09 11:30
回复 4楼 rjsp
哦,可以了,谢谢大神!
1