用户输入和系统输出聊天机器人之间的时间延迟

时间:2016-02-16 01:14:31

标签: javascript

这是一个虚假聊天的代码。我想在用户输入系统输出之间进行时间延迟。我尝试了setTimeout和其他方法但没有成功,但我是JS的初学者。我该怎么做?谢谢大家!

 <!DOCTYPE html>
<html lang="pt">

<head>

    <title>Clarice Lispector</title>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Chat online com Clarice Lispector"> 

<style>
body {
   background-color: buttonface;
   font-family: Helvetica;
   font-size: 10pt;
   margin-top: 10px;
   margin-left: 20px;
   margin-right: 20px;
   margin-bottom: 10px;
   }
.button {
   font-family: Helvetica;
   font-size: 10pt;
   width: 92px;
   }
textarea {
   font-family: arial;
   font-size: 10pt;
   }
select {
   font-family: arial;
   font-size: 10pt;
   width: 350px;
   margin-left: 0px;
   }
td {
   font-family: arial;
   font-size: 10pt;
  }
</style>

<script type="text/javascript">


//----Data Declarations----

var convpatterns = new Array (
  new Array (".*estás aí.*" , "Olá." , "aqui estou"),
  new Array (".*ola.*|.*olá.*" , "Olá.","Tudo bem?"),
  new Array ("bom dia" , "bom dia"),
  new Array ("boa tarde" , "boa tarde"),
  new Array ("que horas são" , "boa tarde"),
  new Array ("boa noite" , "boa noite"),
  new Array (".*de onde voce é.*|.*você é de onde.*|.*voce é de onde.*|.*és de onde.*" , "do Brasil. Ainda que tenha nascido na Europa vim com 2 anos para o Brasil."),
  new Array ("obrigado pelo seu conselho" , "Obrigado a você pela companhia."),
  new Array ("obrigado|obrigada" , "Obrigado a você." , "Não tem de quê."),
  new Array (".*como gosta de ser tratada.*" , "pode me tratar por Clarice."),
  new Array ("(.*?)[\?]" , "Não sei responder a essa questão", "... estou procurando, estou procurando. Estou tentando entender." , "Não tenho dados suficientes para responder",  "desculpe, mas não sei responder"),
  new Array (".*" , "pois..." , "... estou procurando, estou procurando. Estou tentando entender." , "não percebo" , "Ainda bem que sempre existe outro dia. E outros sonhos. E outros risos. E outras pessoas. E outras coisas..." , "Desculpa, mas não entendo. Pouco ou metades nunca me completaram." , "neste momento não sei responder. Pode enviar a sua questão para o meu email."));

uinput = ""
soutput = ""
dialog = ""   

//-----The Core Code------

//-------
 function mainroutine() {
 uinput = document.mainscreen.BasicTextArea4.value;
 dialog = dialog + "Você: " + uinput +  '\r' + "\n";
  conversationpatterns()
 dialog = dialog  +  '\r' + "\n";
  updatescreen();
    var textarea = document.getElementById('textarea_id');
textarea.scrollTop = textarea.scrollHeight;
}


//-------


function conversationpatterns() {
   for (i=0; i < convpatterns.length; i++) {
    re = new RegExp (convpatterns[i][0], "i");
    if (re.test(uinput)) {
      len = convpatterns[i].length - 1;
      index = Math.ceil( len * Math.random());
      reply = convpatterns[i][index];
      soutput = uinput.replace(re, reply);
      soutput = initialCap(soutput);
      dialog = dialog + "Clarice: " + soutput +  '\r' + "\n";
      break;
  }
 }
}

//-------

function initScreen() {
 updatescreen()
}



//-------
function updatescreen() {

 document.mainscreen.BasicTextArea1.value = dialog
 document.mainscreen.BasicTextArea2.value = soutput
 document.mainscreen.BasicTextArea3.value = uinput
 document.mainscreen.BasicTextArea4.value = ""
}

//-------
function initialCap(field) {
   field = field.substr(0, 1).toUpperCase() + field.substr(1);
   return field
}

//----Supplemental Code To Test System---

//------
function runtest(){

var testdata = new Array (
  new Array ("Oi."),
  new Array ("como gosta de ser tratada?"),
  new Array ("qual o seu conselho?"),
  new Array ("nunca serei capaz de escrever um livro"),
  new Array ("obrigado pelo seu conselho.")

);
          for (train=0; train < testdata.length; train++) {
             document.mainscreen.BasicTextArea4.value = testdata[train];
             mainroutine()

             }
}

</script>


</head>    
<body onLoad="initScreen()">

            <div style="height:300px; color:white; background-color:black;margin:0px; padding:0; background-image:url(lispector.jpg);  background-size: 100% 100%; ">
                <br><br>
                <div style="color:white; font-size:20px; line-height:150%; width:; margin:0 auto; padding:0; text-align: center">
                <h1 style="font-weight:100">Conversa com Clarice Lispector</h1>
                <p style="font-family: 'Neucha', cursive; letter-spacing:4px"><br>a partir de textos e entrevistas da autora</p>

                </div>
                <br>
                <br>

            </div>

<form name="mainscreen" onkeypress = "if(event.keyCode == 13) {mainroutine();return false}">

<table align="center">
<tr>
<td>

<br><br>
<textarea placeholder="Escreva a sua mensagem e pressione 'Enter'" name="BasicTextArea4" rows="2" cols="75"></textarea><br />

<textarea id="textarea_id" name="BasicTextArea1" rows="15" cols="75" ></textarea><br />


<textarea style="display:none" name="BasicTextArea2" rows="2" cols="75"></textarea><br />

<textarea style="display:none" name="BasicTextArea3" rows="2" cols="75"></textarea>

</td>
</tr>
</table>

<p align = "center">

<input id=runbutton  class="button" type="button" value="Teste" name="run_button"  onClick="runtest()">
<input id=helpbutton  class="button" type="button" value="Ajuda" name="help_button"  onClick="showhelp()">
</p>
</form>

  <script>
function showhelp() {
    alert("Algumas dicas para fazer conversa: \n\na escrita\no amor\nos livros\nconselhos\ngostos\ndados biográficos\nviagens...");
}
</script>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

这是因为dialog包含用户和&amp;单个变量中的计算机文本。为计算机对话框创建一个新变量,为用户对话框创建另一个变量,最后在不同时间发送它们。

这样的事情:

textareaElement.value = userDialog
setTimeout(function(){
    textareaElement.value = computerDialog
}, 1000)