1 00:00:02,380 --> 00:00:06,940 Assim, podemos chegar à tela do jogo agora e o computador está adivinhando 2 00:00:06,970 --> 00:00:12,340 um número aqui, um número aleatório que exclui nosso número real para o primeiro palpite inicial. 3 00:00:12,370 --> 00:00:18,010 Agora precisamos ter certeza de que suposições subsequentes podem ser feitas quando pressionamos o botão inferior ou superior 4 00:00:18,010 --> 00:00:21,350 aqui na tela do jogo. Para isso, vamos 5 00:00:21,400 --> 00:00:27,820 adicionar uma função dentro do nosso componente funcional, porque essa função precisará acessar o estado circundante 6 00:00:27,820 --> 00:00:36,790 e o componente circundante e atribuir o nome que você desejar, como próximo manipulador de adivinhação, qualquer nome que você preferir e essa 7 00:00:36,790 --> 00:00:38,700 é uma função que você 8 00:00:38,710 --> 00:00:43,810 realmente deve ter um argumento, a direção em que o próximo palpite deve 9 00:00:43,810 --> 00:00:47,390 ser, tão baixo ou maior. Agora, a 10 00:00:47,390 --> 00:00:54,060 primeira coisa que quero fazer aqui é garantir que validemos a direção. 11 00:00:54,110 --> 00:00:59,600 Agora, essa função aqui deve ser executada quando os botões lá embaixo são pressionados, mas é 12 00:00:59,600 --> 00:01:04,970 claro o valor da direção, portanto o valor que passamos como argumento deve diferir com base 13 00:01:05,240 --> 00:01:06,190 no botão. 14 00:01:06,200 --> 00:01:13,070 Portanto, aqui temos o próximo manipulador de palpites conectado ao onPress, sem parênteses, para fornecer esse 15 00:01:13,100 --> 00:01:19,140 ponteiro em nossa função ao onPress, para que seja executado eventualmente quando o usuário pressionar 16 00:01:19,140 --> 00:01:26,060 isso, mas fui pré-configurar o argumento que será passado para o próximo manipulador de palpites quando isso 17 00:01:26,060 --> 00:01:27,350 é executado. 18 00:01:27,350 --> 00:01:33,530 Podemos fazer isso com o bind, vincular isso porque o primeiro argumento a vincular é sempre o que isso deve se 19 00:01:33,530 --> 00:01:38,450 referir na função que está sendo chamada, não importa aqui, então podemos apenas vinculá-lo a isso. 20 00:01:38,600 --> 00:01:44,780 O segundo valor que passamos aqui para vincular será o primeiro argumento recebido por nossa função e, 21 00:01:44,810 --> 00:01:51,580 portanto, esta será a direção recebida aqui e, é claro, depende de você qual lógica você usa aqui, para 22 00:01:51,580 --> 00:01:52,560 mim faz 23 00:01:52,600 --> 00:02:00,820 sentido simplesmente usar um string onde aqui passamos mais baixo como string e, para o outro botão, passamos maior para que tenhamos esses 24 00:02:00,970 --> 00:02:02,710 dois identificadores que são 25 00:02:02,740 --> 00:02:08,830 essencialmente passados para o próximo manipulador de palpites. Portanto, a direção será menor ou 26 00:02:08,830 --> 00:02:10,780 maior e agora 27 00:02:10,900 --> 00:02:14,110 queremos validar se isso está correto. 28 00:02:14,110 --> 00:02:20,670 Então, por exemplo, se você selecionou um número digamos 55 e o computador adivinhou 60, se você der a 29 00:02:20,800 --> 00:02:25,390 um computador a dica dos números deve ser maior, isso está obviamente errado 30 00:02:25,390 --> 00:02:30,190 porque o número deve ser menor, seu número era 55, acho tinha 60 anos, 31 00:02:30,190 --> 00:02:31,690 está incorreto se você 32 00:02:31,690 --> 00:02:37,290 disser ao computador que o número que deve adivinhar em seguida deve ser maior que 60, 33 00:02:37,290 --> 00:02:37,790 certo? 34 00:02:37,810 --> 00:02:39,340 Portanto, queremos validar 35 00:02:39,540 --> 00:02:43,370 isso e, portanto, aqui podemos verificar se a direção 36 00:02:43,390 --> 00:02:54,870 é igual a mais baixa. Portanto, se você pressionou o botão inferior e a estimativa atual é menor, sugere a escolha do usuário; portanto, o computador adivinhou 37 00:02:54,880 --> 00:03:01,270 um número menor que nossa escolha, então menor é a dica errada, certo, porque o 38 00:03:01,270 --> 00:03:01,870 número 39 00:03:01,900 --> 00:03:03,900 precisa ser menor, precisa ser 40 00:03:03,970 --> 00:03:11,100 maior porque o palpite já era muito baixo. Portanto, esse é um cenário possível em que estamos recebendo 41 00:03:11,100 --> 00:03:16,110 uma dica errada, a alternativa e vou colocá-la entre parênteses para deixar bem claro 42 00:03:16,110 --> 00:03:18,300 que essa é uma condição aqui. 43 00:03:18,330 --> 00:03:20,440 Portanto, a alternativa a 44 00:03:20,490 --> 00:03:26,010 isso, a segunda condição que quero verificar é que a direção aqui é realmente maior 45 00:03:26,250 --> 00:03:30,920 e, ao mesmo tempo, o palpite atual já é maior que a 46 00:03:30,930 --> 00:03:33,460 nossa escolha e também é uma 47 00:03:33,480 --> 00:03:35,600 dica incorreta, exatamente na direção oposta. 48 00:03:35,940 --> 00:03:41,220 Nos dois casos em que estamos dando uma dica incorreta, quero lançar um alerta e você aprendeu que pode fazer isso com a API 49 00:03:41,220 --> 00:03:48,300 de alerta, a classe de alerta que você pode importar do React Native no final. Então aqui, em nossa verificação, usarei alerta de alerta para 50 00:03:48,300 --> 00:03:55,460 lançar um alerta com um título de, digamos, não minta, é claro que você pode escolher qualquer nome que quiser, 51 00:03:55,530 --> 00:03:57,820 estou escapando da citação única 52 00:03:57,840 --> 00:04:03,240 que fui imprimir como um personagem aqui com uma barra invertida à esquerda, porque, caso 53 00:04:03,240 --> 00:04:07,710 contrário, fecharia a string porque estou usando aspas simples para cercar minhas strings. 54 00:04:07,710 --> 00:04:09,010 Então esse é o meu 55 00:04:09,090 --> 00:04:13,230 título e, em seguida, o texto pode ser que você saiba que isso está errado, mas é claro que 56 00:04:13,230 --> 00:04:19,480 você pode ter qualquer texto que quiser aqui, também pode ser menos moralista, se quiser. Agora, quero apresentar um botão aqui e o botão 57 00:04:19,480 --> 00:04:25,260 diz que já foram explicados os objetos que você passa para a terceira matriz de argumentos cujo 58 00:04:25,320 --> 00:04:32,880 alerta recebe e aí o texto pode se arrepender e o estilo pode ser cancelado e você não precisa fornecer um manipulador 59 00:04:32,880 --> 00:04:39,120 onPress, se você não fornecer uma, a única coisa que acontecerá é que clicar no botão fechará o 60 00:04:39,120 --> 00:04:41,400 alerta, o que é bom. 61 00:04:42,000 --> 00:04:47,550 Então, aqui estamos dando ao usuário um toque nos dedos, por assim dizer, e assegurando que nenhuma dica 62 00:04:47,550 --> 00:04:48,530 incorreta seja 63 00:04:48,600 --> 00:04:50,040 dada e que eu queira 64 00:04:50,040 --> 00:04:54,590 retornar aqui, então quero interromper a execução da função se tivermos um valor tão incorreto. 65 00:04:54,780 --> 00:04:56,580 Se passarmos por esse 66 00:04:56,580 --> 00:05:01,330 bloco if, se dermos uma dica correta, queremos gerar um novo número aleatório. 67 00:05:01,920 --> 00:05:06,940 Então, aqui, quero verificar se a direção é mais baixa e 68 00:05:07,200 --> 00:05:08,850 agora sabemos que 69 00:05:08,850 --> 00:05:15,810 estava correto, para que o computador adivinhe um número menor que o número anterior, então sabemos que 70 00:05:15,810 --> 00:05:22,170 um novo número aleatório deve ser gerado para uma suposição atual. o limite superior máximo. 71 00:05:22,200 --> 00:05:29,940 Portanto, podemos chamar gerar aleatoriamente entre novamente e o número mínimo, provavelmente esse é um, mas e se o 72 00:05:30,060 --> 00:05:32,930 usuário já adivinhou outro número em 73 00:05:32,940 --> 00:05:39,440 que dissemos ao computador que ele era muito pequeno e que teríamos um problema aqui porque 74 00:05:39,540 --> 00:05:44,410 o menor limite nem sempre é um, e se o usuário adivinhou 75 00:05:44,430 --> 00:05:48,430 10 e dissemos que não, tem que ser maior? 76 00:05:48,480 --> 00:05:53,670 Bem, então o usuário adivinha 50 e dizemos que deve ser menor que isso, é claro que 77 00:05:53,670 --> 00:05:54,410 o computador 78 00:05:54,420 --> 00:06:00,240 deve adivinhar novamente, mas não deve adivinhar abaixo de 10, porque já mencionamos que isso é muito pequeno anteriormente. 79 00:06:00,330 --> 00:06:08,700 Portanto, nosso máximo e mínimo atuais devem se ajustar ao longo do tempo, conforme sugerimos se o número calculado pelo computador é 80 00:06:08,700 --> 00:06:11,080 muito pequeno ou muito grande. 81 00:06:12,130 --> 00:06:16,690 Portanto, podemos usar outro gancho fornecido pelo React e esse é o gancho useRef. 82 00:06:16,690 --> 00:06:23,290 Agora você deve conhecer esse gancho como um gancho que permite criar um objeto que pode ser vinculado a entradas; portanto, 83 00:06:23,350 --> 00:06:28,960 seus elementos de entrada em jsx têm acesso a eles em seu código e essa é uma maneira 84 00:06:28,960 --> 00:06:33,870 de usá-lo, mas useRef também permite que você fazer outra coisa que é bem legal. 85 00:06:34,120 --> 00:06:39,720 Ele permite que você defina um valor que sobrevive à re-renderização do componente; portanto, o que resta 86 00:06:39,760 --> 00:06:42,810 é a reconstrução desse componente e é exatamente 87 00:06:43,120 --> 00:06:48,940 isso que precisamos aqui, porque queremos fazer o login no mínimo e no máximo que possamos alterar, 88 00:06:49,180 --> 00:06:53,320 mas que não serão regenerados apenas. porque o componente é renderizado novamente. 89 00:06:53,320 --> 00:07:00,060 Portanto, aqui na parte superior deste componente, depois de inicializar o estado, podemos criar 90 00:07:00,360 --> 00:07:10,430 uma nova constante, currentLow talvez onde useRef seja um e, em seguida, outra constante, currentHigh em que useRef seja 100, esses são 91 00:07:10,440 --> 00:07:16,590 nossos limites iniciais que estamos usando aleatoriamente número e agora podemos atualizar essas 92 00:07:17,160 --> 00:07:18,240 referências aqui. 93 00:07:18,390 --> 00:07:20,790 Então, sabemos que a direção deve ser menor, o que 94 00:07:20,790 --> 00:07:27,450 podemos fazer nesse caso, em vez de gerar instantaneamente um novo número, podemos definir currentHigh. current, porque as referências geradas pelo 95 00:07:27,450 --> 00:07:33,960 React são objetos que possuem uma propriedade atual em que o valor real 96 00:07:33,960 --> 00:07:36,120 é armazenado, portanto, 97 00:07:36,150 --> 00:07:39,320 definimos atual igual ao palpite atual. 98 00:07:39,330 --> 00:07:45,570 Então, o que estamos dizendo é que, se eu estou lhe dizendo, o computador que você adivinhou é muito 99 00:07:45,570 --> 00:07:53,610 grande e você deve adivinhar um número menor, então eu sei que esse número que adivinhei é meu currentHigh, o número correto pode ' não 100 00:07:53,610 --> 00:07:55,320 seja maior que esse, 101 00:07:55,320 --> 00:07:58,780 então eu salvo o número que adivinhei como meu máximo atual. 102 00:07:58,800 --> 00:08:05,160 E, novamente, essas constantes de referência aqui não são regeneradas quando esse componente é criado novamente. Em 103 00:08:05,160 --> 00:08:11,700 vez disso, se elas foram inicializadas uma vez, um pouco como o estado atual, elas são armazenadas 104 00:08:11,790 --> 00:08:17,490 desanexadas desse componente e o React reconhece que elas já foram inicializadas. e não os 105 00:08:17,490 --> 00:08:22,440 regenerará, mas, em vez disso, inicialize currentHigh com o valor armazenado anteriormente. 106 00:08:22,440 --> 00:08:28,240 Portanto, é um pouco como se você estivesse gerenciando isso em um estado, a diferença para o estado, em vez disso, se você 107 00:08:28,240 --> 00:08:32,290 alterar o valor armazenado lá, o componente não será renderizado novamente, porque não queremos isso aqui. 108 00:08:32,370 --> 00:08:37,890 Não quero renderizá-lo novamente apenas porque estou salvando uma nova alta, que não tem impacto na minha opinião, 109 00:08:37,890 --> 00:08:39,780 no meu código jsx, apenas 110 00:08:39,780 --> 00:08:44,020 na minha lógica, mas, por isso, não precisa renderizar novamente o componente, é por 111 00:08:44,070 --> 00:08:47,580 isso que uso uma referência aqui em vez de um estado. 112 00:08:47,640 --> 00:08:50,730 Então, isso está acontecendo se for mais baixo; 113 00:08:50,760 --> 00:08:55,980 se dissermos ao computador que o palpite é muito pequeno e o número 114 00:08:55,980 --> 00:08:57,060 real deve ser 115 00:08:57,060 --> 00:09:04,970 maior, deve ser maior. Nesse caso, definimos a corrente baixa como a palpite atual, porque sabemos nós temos um limite 116 00:09:04,970 --> 00:09:06,020 inferior. 117 00:09:06,230 --> 00:09:12,230 E agora o objetivo é ou o truque é gerar um novo número aleatório que leve esses limites em 118 00:09:12,230 --> 00:09:13,280 consideração, portanto, onde 119 00:09:13,280 --> 00:09:22,190 usamos a corrente baixa com nossa ref e depois. corrente no mínimo e currentHigh. current no máximo e quero 120 00:09:22,190 --> 00:09:30,850 excluir o palpite atual, para que não possamos adivinhar o mesmo número aqui novamente, para que, para 121 00:09:30,850 --> 00:09:38,440 a próxima função, definitivamente obteremos um número diferente. Então isso é algo que eu armazeno em um número constante e 122 00:09:38,440 --> 00:09:39,900 próximo, que é gerado 123 00:09:39,910 --> 00:09:41,200 aqui quando o 124 00:09:41,350 --> 00:09:46,020 próximo manipulador de palpites é executado, o que acontece quando tocamos em um desses botões. 125 00:09:46,240 --> 00:09:49,140 E agora o próximo número é o próximo número 126 00:09:49,150 --> 00:09:54,370 que queremos usar, então agora o que podemos fazer como podemos chamar definir palpite atual e adicionar o 127 00:09:54,370 --> 00:10:01,660 próximo número, agora o componente será renderizado novamente e produzirá o próximo palpite. Então, vamos tentar, por enquanto não temos o 128 00:10:01,660 --> 00:10:02,960 jogo terminado, 129 00:10:02,980 --> 00:10:06,820 mas pelo menos podemos tentar adivinhar números aqui. 130 00:10:06,850 --> 00:10:09,250 Então, digito 53 como meu número, 131 00:10:09,250 --> 00:10:12,040 agora começamos e o computador adivinhou 85. 132 00:10:12,100 --> 00:10:18,220 Se agora digo mais, recebemos esse aviso porque mentimos, tínhamos 53 como número, portanto, o palpite é alto 133 00:10:18,220 --> 00:10:21,590 demais, deve ser menor. 134 00:10:21,610 --> 00:10:23,260 Agora são 28, bem, isso é muito baixo, deve ser maior. 135 00:10:23,260 --> 00:10:28,830 Então, se eu tocar mais baixo, recebo o aviso, se eu tocar mais, subimos agora 78 136 00:10:28,840 --> 00:10:34,030 e agora, neste momento, 23, o palpite anterior será nosso limite inferior e agora, quando 137 00:10:34,030 --> 00:10:38,360 eu tocar mais baixo, 78 o palpite atual será nosso limite superior, então 138 00:10:38,380 --> 00:10:44,300 o próximo palpite certamente não será superior a 78 e nem inferior a 23, mas ainda é 139 00:10:44,430 --> 00:10:46,690 muito baixo, é muito grande, quero dizer, 140 00:10:46,690 --> 00:10:48,460 é muito baixo, então vamos 141 00:10:48,460 --> 00:10:49,580 usar um 142 00:10:49,600 --> 00:10:51,520 maior, um mais baixo e 143 00:10:51,520 --> 00:10:53,460 esse seria o correto . 144 00:10:53,500 --> 00:10:56,560 Por enquanto, não temos nada que verifique se o 145 00:10:56,580 --> 00:10:57,820 computador adivinhou corretamente. 146 00:10:58,120 --> 00:11:00,130 Então, essa é a próxima coisa que teremos que implementar aqui.