作业帮 > 综合 > 作业

控制一个*星号.按左就往左边走,按右就往右边走.上就往上走,下不用说了吧···DEVC++通过.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 02:59:47
控制一个*星号.
按左就往左边走,按右就往右边走.
上就往上走,下不用说了吧···
DEVC++通过.
lz  你好

这个主要是要用到conio.h中的getch()函数来获取键盘按键值
之后就是控制问题了

以下是详细代码和注释:(c语言版)
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define VK_UP 72  //按键上
#define VK_DOWN 80//按键下
#define VK_LEFT 75//按键左
#define VK_RIGHT 77//按键右

int row=0, col=0;//星号的位置(行标和列标)  初始化(0,0)

//将*移动到指定新位置
void move_to()
{
\x05int i,j;

\x05system("cls");//刷屏

\x05//先移动到指定行
\x05for(i=0; i<row; i++)
\x05{
\x05\x05printf("\n");
\x05}

\x05//再移动到指定列
\x05for(j=0; j<col; j++)
\x05{
\x05\x05printf(" ");
\x05}

\x05printf("*");
}

//移动操作
void move(int direction)
{
\x05//根据方向来确定走向的行列标row、col  以控制*的位置
\x05switch(direction)
\x05{
\x05case VK_UP:
\x05\x05if(row)
\x05\x05{
\x05\x05\x05row--;
\x05\x05}
\x05\x05break;

\x05case VK_DOWN:
\x05\x05row++;
\x05\x05break;

\x05case VK_LEFT:
\x05\x05if(col)
\x05\x05{
\x05\x05\x05col--;
\x05\x05}
\x05\x05break;

\x05case VK_RIGHT:
\x05\x05col++;
\x05\x05break;
\x05}

\x05//移动到指定位置
\x05move_to();
}

int main()
{
\x05int dir;//方向

\x05move_to();
\x05while(1)
\x05{
\x05\x05dir = getch();//获取键盘按键值
\x05\x05move(dir);
\x05}
\x05return 0;
}

运行截图:


再答: 控制台的程序 应该只能用这个方法来刷屏
没办法 控制台的UI要求达不到不闪屏的高要求
再问: 好吧,看在你写了一段程序的份上,但是要加我Q Q102 588 9687,验证乱答哦!