R блестящий: добавить код Konami внутри блестящего приложения - PullRequest
0 голосов
/ 04 марта 2020

Bonjour!

Интересно, как "легко" внедрить код Konami в любое блестящее приложение R

ВХОД (с клавиатуры пользователя на странице блестящего приложения R)
Arrow UP , ВВЕРХ, ВНИЗ, ВНИЗ, ВЛЕВО, ВПРАВО, ВЛЕВО, ВПРАВО, B, A

ВЫХОД
- Добавить забавное изображение на приборную панель
(- Изменить цвет приложения)

1 Ответ

0 голосов
/ 17 марта 2020
library(shiny)
runApp( list(ui = bootstrapPage(
  verbatimTextOutput("results"),
  verbatimTextOutput("allInputs"),
  tags$script('
              $(document).on("keypress", function (e) {
              Shiny.onInputChange("mydata", e.which);
              });
              ') 
)
, server = function(input, output, session) {

  output$results = renderPrint({
    input$mydata
  })

  keysPressed <- reactiveVal()

  observeEvent(input$mydata, {
    keysPressed(c(keysPressed(), input$mydata))
  })

  output$allInputs = renderPrint({
    keysPressed()
  })

}
))

ismirsehregal, который помог мне с кодом, который я нашел
Есть ли в R блестящий способ объединить все значения, полученные входом

Мой окончательный код объединяет все подсказки:

UI.R (внутри тела)

          tags$script('
                   pressedKeyCount = 0;
                      $(document).on("keydown", function (e) {
                      Shiny.onInputChange("pressedKey", pressedKeyCount++);
                      Shiny.onInputChange("pressedKeyId", e.which);
                      });'
            ),

SERVER.R (где-то)

keysPressed <- reactiveVal()

observeEvent(input$pressedKey, {
  keysPressed(c(keysPressed(), input$pressedKeyId))
})

output$secret <- renderUI({
  secretCode = keysPressed()
  if(length(secretCode)>=10)
  secretCode = secretCode[(length(secretCode)-9):length(secretCode)]
  trueCode = c(38,38,40,40,37,39,37,39,66,65)
  if(isTRUE(all.equal(secretCode,trueCode))){
    HTML('<center><img src="4BA140A6A75546D791B01BC0BA9E00A2.png"></center>')
    }
})

c (38,38,40,40,37,39,37,39,66,65) соответствует известным последовательным клавишам ввода кода конами

...