关于我的用bioskey()的误解 希望大家别犯我这样的错误
我写俄罗斯方块 方块移动的函数() 本来是想在按DOWN键 方块向下 按LEFT 向LEFT。。。
结果发现需要按3下DOWN才移动 后来才明白尽管bioskey是在if的条件中 但是系统会顺序执行bioskey(0) 参数为0 会等待你输入一个方向 所以如果按第一下DOWN 方块会下移1格
再按DOWN 执行第2个条件句(条件不成立什么都不执行) 再按DOWN 才执行第3个条件句(条件仍然不成立)
void move()/*该函数在主函数中的循环结构中*/
{
if(bioskey(0)==DOWN)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x,(y+SIZE),0,shape);
y=y+SIZE;
}
if(bioskey(0)==RIGHT)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x+SIZE,y,0,shape);
x=x+SIZE;
}
if(bioskey(0)==LEFT)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x-SIZE,y,0,shape);
x=x-SIZE;
}
}
改成下面的 问题解决
void move()
{
key=bioeysk(0);
if(key==DOWN)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x,(y+SIZE),0,shape);
y=y+SIZE;
}
if(key==RIGHT)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x+SIZE,y,0,shape);
x=x+SIZE;
}
if(key==LEFT)
{setfillstyle(SOLID_FILL,BLACK);
drawshape(x,y,0,shape);
setfillstyle(SOLID_FILL,BLUE);
drawshape(x-SIZE,y,0,shape);
x=x-SIZE;
}
}
[此贴子已经被作者于2006-9-23 1:54:03编辑过]