| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9226 人关注过本帖
标题:c语言如何实现模拟键盘输入?
取消只看楼主 加入收藏
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
c语言如何实现模拟键盘输入?
是这样的,我在做c语言程序设计,是海龟作图问题。源代码如下:


#include<stdio.h>
void print(int [][51]);
void move(int [][51],int,int,int);
void yidong(int [][51],int,int,int);

int x=0,y=0;  //海龟位置坐标,为全局变量,初始在左上角。
int main()
{
    int step[51][51];
    int i,j,a=1,gostep=1,direct=1,record=1;
    for(i=0;i<=49;i++)
      for(j=0;j<=49;j++)
          step[i][j]=0;
      for(;;){         printf("a=%d,gostep=%d,direct=%d,record=%d,x=%d,y=%d\n",a,gostep,direct,record,x,y);      
       printf("请输入 a ");//(输入“1”代表不记录移动痕迹,“2”代表记录移动痕迹;“3”代表笔尖向左转,“4”代表笔尖向右转,“5”代表开始移动gostep步
       scanf("%d",&a);
      
       if(a==2) record=1;
       if(a==1) record=0;
       if(a==4)
       {
            direct++;
            if(direct==5) direct=1;
            continue;
       }
       if(a==3)
       {
          direct--;
          if(direct==0) direct=4;
          continue;
       }
      if(a==5)
      {   printf("请输入 gostep");
          scanf("%d",&gostep);
          move(step,gostep,direct,record);
          continue;
      }
      if(a==6)
        print(step);
      if(a==7)
      {printf("请输入 gostep");
          scanf("%d",&gostep);
          yidong(step,gostep,direct,record);
          continue;
      }
   
      if(a==9)
        return 0;
      }
}
//打印海龟踪迹,显示在屏幕上
void print(int s[][51])
{
    int i,j;
    for(i=0;i<50;i++){
        for(j=0;j<50;j++){
            printf(s[i][j]==0? "-":"*");
        }
    printf("\n");
    }
}

//海龟移动,i,j,k分别对应:gostep,direct,record
void move(int t[][51],int i,int j,int k)
{
    int xmove,ymove,num;
    if(j==1)
    {
        xmove=1;ymove=0;}
    if(j==2)
    {
        xmove=0;ymove=1;
    }
    if(j==3)
    {
        xmove=-1;ymove=0;
    }
    if(j==4)
    {
        xmove=0;ymove=-1;
    }
    for(num=0;num<i;num++)
    {        
        if(x<0||x>50||y<0||y>50)
        {
             printf("the place is danger ,you are died\n");
            return;
        }   
        t[y][x]+=k;
        x=x+xmove;
        y=y+ymove;
    }
}


void yidong(int t[][51],int i,int j,int k)
{
    int xmove,ymove,num;
    if(j==1)
    {
        xmove=-1;ymove=1;}
    if(j==2)
    {
        xmove=1;ymove=1;
    }
    if(j==3)
    {
        xmove=1;ymove=-1;}
    if(j==4)
    {
        xmove=-1;ymove=-1;
    }

    for(num=0;num<i;num++)
    {        
        if(x<0||x>50||y<0||y>50)
        {
             printf("the place is danger ,you are died\n");
            return;
        }   
        t[y][x]+=k;
        x=x+xmove;
        y=y+ymove;
    }
}




但是每次都要手动输入一大堆数字,很麻烦。请问如何实现模拟键盘输入,只要每次运行就会自动输入以下数字:
1,4,5,5,3,2,5,50,  1,4,5,5,4,2,5,50,  1,4,5,10,4,5,25,2,4,5,10,  1,5,5,4,2,5,22,  3,5,10,  3,5,44,  3,5,10,  3,5,22,   1,3,5,12,2,5,5,4,5,20,3,3,5,40,4,4,5,20,3,5,1,7,12,4,4,7,12,4,7,13,6。
搜索更多相关主题的帖子: void include yidong 源代码 
2012-04-01 16:44
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 3楼 smallmoon521
那要用什么做啊?我是初学者,不懂啊!!现在万分困惑
2012-04-01 17:12
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 2楼 TonyDeng
可不可以写一段代码我看看啊?我根本不知道该如何操作啊
2012-04-01 17:26
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 3楼 smallmoon521
比如我输入回车键的话, 这样写对吗? keybd_event(VK_RETURN 0D,0,0,0);
不知道为什么这样写第一次编译通过了,之后就一直有错误
2012-04-01 17:33
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 7楼 smallmoon521
a是无法直接赋值的啊,我就是用a来控制海龟移动的啊
2012-04-01 19:38
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 10楼 TonyDeng
搜卡!明白了!万分感谢啊~~~
2012-04-01 21:35
快速回复:c语言如何实现模拟键盘输入?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017554 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved