vc++制作贪吃蛇遇到的小问题,求解
新人开始学做贪吃蛇,只做出了一小部分,这是直线控制移动的问题,单独把第一行和最后一行的运行代码都行,组合起来就打不到想要的效果了,求各位大大帮一下
<P> #include<stdio.h>
#include<graphics.h>
#include<conio.h>
int main()
{
int x,s,m,n,k,g; //x为数组单元位置,进行(,),(,)尾位置消除操作,与进行头位置增加操作,
//s为标志位操作,s=-1时进行判定进入上下操作,s=1时进行进入左右操作
//当s=-1时,m进行上下偏移操作,当s=1,n进行左右偏移操作,
//k备用,进行循环判定时设定值for(k=0;k<100;k++)
x=0; //初值设定
s=1;
m=0;
n=0;
k=0;
int a; //存储节点位置;直线的两个端点,开始坐标和结束坐标存放位置
a=100;
a=100;
a=200;
a=100; //设定第一条直线,坐标为(100,100,100,200)由起始点指向下一点,方向向下</P>
<P>
printf("\n\n\n\n\n请按任意键进入画图界面\n\n\n\n\n\n");
getch(); //按键进入画图界面
initgraph(640,480); //进入画图界面
line(a,a,a,a); //第一个条直线起始位置</P>
<P> </P>
<P>while(1) //初始化结束,开始进入循环
{
Sleep(10);</P>
<P> </P>
<P>//第一条直线操作开始</P>
<P> Sleep(100);
if(a==a) //判定==,要注意不是赋值=
{
s=1; //进入左右操作
if(a>a)
{ setcolor(BLACK);
line(a,a,a-1,a);
a=a-1; // ←
}
else if(a<a)
{ setcolor(BLACK);
line(a,a,a+1,a);
a=a+1; // →
}
else //a=a
{ x=x-1;
for(k=0;k<=1000;k=k+2)
{
a=a;
a=a;
}
} //if的结束括号</P>
<P> }</P>
<P>//第一条直线操作结束</P>
<P> </P>
<P>
//第x条直线操作开始
if(kbhit())
{g=getch(); //如果成功键入则执行以下操作</P>
<P> if((g==115)&&(s==1)) //s键↓ 原来进行左右操作现在才能进行上下操作
{
s=-1; //进入上下操作
x=x+1; //进行存储操作
a=a;
a=a+1;
setcolor(WHITE);
line(a,a,a,a);
}</P>
<P> if((g==119)&&(s==1)) //w键↑原来进行左右操作现在才能进行上下操作
{
s=-1; //进入上下操作
x=x+1; //进行存储操作
a=a;
a=a-1;
setcolor(WHITE);
line(a,a,a,a);
}</P>
<P> </P>
<P>
if((g==100)&&(s==-1)) //d键→
{
s=1; //进入左右操作
x=x+1; //进行存储操作
a=a+1;
a=a;
setcolor(WHITE);
line(a,a,a,a);
}</P>
<P>
if((g==97)&&(s==-1)) //a键←
{
s=1; //进入左右操作
x=x+1; //进行存储操作
a=a-1;
a=a;
setcolor(WHITE);
line(a,a,a,a);
}</P>
<P>
}
</P>
<P> </P>
<P> else //没有键入,自动执行以下操作
{
if(a==a) //进入上下操作
{ s=-1; </P>
<P> if(a>a)
{
setcolor(WHITE);
a=a-1; // ↑
line(a,a,a,a);
}</P>
<P>elseif(a<a)
{
setcolor(WHITE);
a=a+1; // ↓
line(a,a,a,a);
}
}
</P>
<P> if(a==a) //进入左右操作
{
s=1;
if(a>a)
{
setcolor(WHITE);
a=a-1; // ←
line(a,a,a,a);
}
elseif(a<a)
{
setcolor(WHITE);
a=a+1; // →
line(a,a,a,a);
}
</P>
<P> }
} </P>
<P>
</P>
<P>//第x条直线操作结束</P>
<P> </P>
<P> </P>
<P>} //while(1)的结束括号</P>
<P>
closegraph(); //退出画图界面</P>
<P>} //主函数结束括号</P>
我以前做了一个 是用的小格子 你试试
我现在也正在做贪食蛇呢, 流行语 发表于 2014-9-1 17:52
我现在也正在做贪食蛇呢,
我没有用堆栈做,才做了控制直线移动部分就卡了快一周,感觉好难,都快看晕了:sweat: 我现在正在想怎么做呢,还没有思路呢 流行语 发表于 2014-9-1 20:19
我现在正在想怎么做呢,还没有思路呢
你可以尝试着做一条通过按键可以自由控制的直线,通过按键是否输入来进行判定,还要有尾部一点的消除和前进方向的增加,反正我是一小个模块一个个测试的,但是作为新手,基础太薄弱了,结构体不是很熟悉,要不就不要那么蛋疼了,好像论坛上就有贪吃蛇的代码,你可以看看 我做过一个,但是实现方法不一样.
页:
[1]