我需要从键盘读取输入数据而不必输入RStudio

时间:2014-07-28 19:04:16

标签: r input

我正在编写R中的经典乒乓atari游戏,我对桨的运动有一个小小的挫折。我正在尝试从键盘读取输入,以便用户可以移动拨片,但我需要“快速”读取它,并且我很快就意味着没有使用scan()函数按下输入按钮。此外,如果用户不移动拨片,我需要程序继续运行,但我想我可以用一个简单的如果有时钟条件来做到这一点。任何有关这方面的建议将不胜感激。到目前为止,我保留了我的代码乒乓代码:

sale = FALSE
x.dir <- runif(1,min=-1,max=1)
y.dir <- runif(1,min=-1,max=1)
x<-0
y<-0
barra.izq<-c(-1,1)
barra.der<-c(-1,1)
while (sale==FALSE){
  plot.new()
  plot.window(xlim=c(-6,6),y=c(-6,6))
  rect(-5.,-5.,5.,5., angle=45)    #rectangulo de cancha
  rect(-5.1,barra.izq[1],-5,barra.izq[2], col="blue")   #barra izquierda
  rect(5.,barra.der[1],5.1,barra.der[2], col="blue")   #barra derecha
  points(x,y)
  x<-x+(x.dir)/3
  y<-y+(y.dir)/3
  if (abs(x)>=5) {
        if (x<0){
          if((barra.izq[1] < y) && (y < barra.izq[2])){
          x.dir <- - x.dir
          }
          else {
          sale <- TRUE
          points(x,y,col= "red")
          }
      }
      if (x>0){
          if( (barra.der[1]<y) && (y < barra.der[2])){
          x.dir <- -x.dir 
          }
          else {
          sale <- TRUE
          points(x,y,col="red")
          }
      }
  }
  if (abs(y)>=5){
      y.dir<- -y.dir
  }
  Sys.sleep(0.00001)
}

2 个答案:

答案 0 :(得分:0)

您可以在某些图形设备上使用getGraphicsEvent读取与图形窗口关联的按键。默认的Rstudio设备不起作用,但您可以在Rstudio中运行windows()以创建与getGraphicsEvent一起使用的Windows图形设备。

如果您想要更通用的东西,那么您可以使用跨平台的tcltk软件包来捕获按键并相应地调整图形。此包中的计时功能可能使其成为最佳选择。

sudoku包中的playSudoku函数使用两种方法,您可以查看该代码的示例。也许这个功能并不是我原先想到的完全浪费时间。

答案 1 :(得分:0)

我遇到了类似的问题,这是我找到的解决方案......如果您正在使用Window,则会有一个名为AutoKeyboard的免费软件here

您设置了一个计时器,例如每隔//only bind data after a specific action protected void Button1_Click(object sender, EventArgs e) { ListView1.DataSource = ValvesDataSource; ListView1.DataBind(); } 秒,[ENTER]键被Windows按下,如果用户实际上没有,则在您的R代码中添加0.1条件按下任何代码只是继续。好消息是您还可以定义停止键或时间限制。 希望它有所帮助。