﻿1
00:00:04,400 --> 00:00:05,180
‫Olá e bem-vindo.

2
00:00:05,180 --> 00:00:12,050
‫Nesta palestra, vamos refatorar nosso código para tornar nossa função de captura menor e mais

3
00:00:12,050 --> 00:00:12,770
‫legível.

4
00:00:12,770 --> 00:00:15,170
‫E vamos usar os parâmetros novamente.

5
00:00:15,290 --> 00:00:18,770
‫Desta vez, vamos criar uma função que o recebe como parâmetro.

6
00:00:18,770 --> 00:00:21,110
‫Vamos mergulhar e ver como fazer isso.

7
00:00:22,160 --> 00:00:29,030
‫Portanto, geralmente é uma prática recomendada que as funções tentem caber em uma única tela.

8
00:00:29,060 --> 00:00:31,190
‫Agora, no meu caso, minha tela é muito grande.

9
00:00:31,460 --> 00:00:32,720
‫Mas ainda estamos aprendendo.

10
00:00:32,720 --> 00:00:37,250
‫Então, na verdade, faz sentido ter funções ainda menores para tornar as coisas compreensíveis.

11
00:00:38,060 --> 00:00:46,040
‫E acho que essa função de captura ficou muito longa, então acho que podemos dividi-la em unidades bastante funcionais.

12
00:00:46,040 --> 00:00:52,160
‫O primeiro será o bit que faz a varredura e faz todo o cálculo dos vetores

13
00:00:52,160 --> 00:00:57,710
‫inicial e final e gera o resultado do acerto e se acertamos ou não.

14
00:00:57,710 --> 00:01:03,110
‫O booleano que diz se acertamos e o segundo bit está dentro da instrução if

15
00:01:03,110 --> 00:01:08,900
‫que provavelmente podemos deixar como trabalho de agarrar, porque na verdade isso tem a ver com agarrar, certo?

16
00:01:08,900 --> 00:01:10,730
‫Temos que acordar o corpo rígido.

17
00:01:10,730 --> 00:01:16,190
‫Temos que pegar um componente que faça sentido ser um método chamado em uma função chamada grab.

18
00:01:16,550 --> 00:01:20,150
‫Mas essa outra coisa é um pouco mais tangencial.

19
00:01:20,150 --> 00:01:23,450
‫É mais um utilitário que precisamos extrair.

20
00:01:23,780 --> 00:01:28,550
‫Então eu gostaria de desafiá-lo a criar esse utilitário, pegue uma bola ao seu alcance.

21
00:01:28,550 --> 00:01:33,110
‫Isso é o que eu acho que deveria ser chamado, a coisa que descreve o que esse pedaço de código faz.

22
00:01:33,380 --> 00:01:40,220
‫Então extraia todo esse código de varredura em uma nova função privada, como pensar sobre quais devem ser seus parâmetros e

23
00:01:40,220 --> 00:01:41,540
‫seu valor de retorno.

24
00:01:41,540 --> 00:01:43,490
‫Lembre-se, você tem duas saídas.

25
00:01:43,760 --> 00:01:46,460
‫Então nós temos acertou e acertou o resultado.

26
00:01:46,850 --> 00:01:51,650
‫Então você precisa pensar em tentar usar um parâmetro out para fazer isso funcionar.

27
00:01:52,160 --> 00:01:58,040
‫Agora, se você quiser uma pequena dica, vou mostrar o que vou colocar no arquivo de cabeçalho em apenas

28
00:01:58,250 --> 00:01:58,940
‫um segundo.

29
00:01:58,940 --> 00:02:01,280
‫Se você não fizer isso, você pode pausar o vídeo agora mesmo.

30
00:02:01,850 --> 00:02:04,040
‫Caso contrário, eu vou te dar a dica.

31
00:02:04,790 --> 00:02:10,820
‫Então vamos pegar um ponto h e embaixo de onde temos que pegar

32
00:02:11,210 --> 00:02:18,330
‫fisicamente, vamos ter um tipo de retorno booleano para nos dizer se algo tem, podemos pegar algo

33
00:02:18,360 --> 00:02:27,020
‫pegar bem, vamos pegar um bola ao alcance, então precisamos dar a ela um parâmetro que será um parâmetro de

34
00:02:27,020 --> 00:02:27,590
‫saída.

35
00:02:27,620 --> 00:02:35,360
‫Portanto, será uma referência não constante ao resultado F hit por referência.

36
00:02:36,530 --> 00:02:41,240
‫E comercial e, em seguida, chamaremos esse resultado de alt hit assim.

37
00:02:41,420 --> 00:02:49,130
‫E então eu acho que isso não vai mudar nada em nossa função, então podemos torná-la constante também.

38
00:02:49,280 --> 00:02:51,980
‫São alguns pontos de bônus se você já tinha pensado nisso.

39
00:02:52,580 --> 00:02:57,620
‫Então vá em frente, pause, grave o vídeo e tente preencher essa função no arquivo C++.

40
00:03:01,030 --> 00:03:01,390
‫OK.

41
00:03:01,390 --> 00:03:02,120
‫Bem vindo de volta.

42
00:03:02,140 --> 00:03:04,720
‫Então eu vou copiá-lo para o C++.

43
00:03:05,050 --> 00:03:10,870
‫Vou colocá-lo abaixo do nosso componente de manipulação de física para corresponder à ordem que obtivemos no arquivo

44
00:03:10,870 --> 00:03:11,560
‫de cabeçalho.

45
00:03:12,040 --> 00:03:16,630
‫Vou adicionar o grabber U na frente.

46
00:03:17,050 --> 00:03:18,460
‫Vou indentá-lo corretamente.

47
00:03:18,490 --> 00:03:25,030
‫Vou adicionar em vez do ponto e vírgula, as chaves, e então vou mover o código

48
00:03:25,030 --> 00:03:26,800
‫que temos em mãos.

49
00:03:26,860 --> 00:03:31,270
‫Então, começando na linha 53 para mim, até 65.

50
00:03:31,690 --> 00:03:33,250
‫Vou cortar tudo isso.

51
00:03:34,150 --> 00:03:35,920
‫Vou substituí-lo por algo em apenas um segundo.

52
00:03:36,340 --> 00:03:40,540
‫Vou colá-lo para conseguir pegar uma bola ao alcance.

53
00:03:41,140 --> 00:03:44,660
‫E temos esse resultado de sucesso que criamos.

54
00:03:44,680 --> 00:03:53,290
‫O que podemos fazer é definir isso, resultados de acerto iguais ao nosso resultado de acerto que temos aqui.

55
00:03:53,680 --> 00:04:00,970
‫Podemos querer fazer isso apenas se acertarmos dois, para que possamos colocar essa instrução if atingiu assim e envolver essa

56
00:04:00,970 --> 00:04:08,080
‫atribuição, os resultados de saída para os resultados da ocorrência dentro da instrução if e então podemos ir em

57
00:04:08,080 --> 00:04:15,700
‫frente e no final da função, apenas return foi atingido assim agora existe uma otimização ou uma melhoria que pode ser

58
00:04:15,700 --> 00:04:22,690
‫feita aqui porque estamos passando por referência para o canal de varredura e para o grab ball no

59
00:04:22,690 --> 00:04:23,200
‫alcance.

60
00:04:23,200 --> 00:04:28,930
‫Na verdade, não precisamos criar um novo resultado de acerto aqui e copiá-lo no resultado de acerto.

61
00:04:28,930 --> 00:04:30,070
‫Isso é apenas desperdiçar memória.

62
00:04:30,790 --> 00:04:36,190
‫O que podemos fazer é remover o resultado de acerto que estamos criando por dentro, pegar a bola ao alcance.

63
00:04:36,640 --> 00:04:44,050
‫E, em vez disso, podemos apenas usar a referência que passamos para passar diretamente para a varredura single

64
00:04:44,050 --> 00:04:44,920
‫por canal.

65
00:04:44,930 --> 00:04:50,380
‫Então, na verdade, está passando essa referência para funções na varredura single por canal, onde ela

66
00:04:50,380 --> 00:04:51,460
‫será preenchida.

67
00:04:51,820 --> 00:04:57,160
‫Isso elimina a necessidade da instrução if, tornando essa função um pouco mais rápida e fácil de

68
00:04:57,160 --> 00:04:57,700
‫ler.

69
00:04:57,970 --> 00:05:01,510
‫E, de fato, acho que nem precisamos de uma variável para armazenar hits.

70
00:05:01,510 --> 00:05:03,720
‫Podemos apenas ir em frente e voltar.

71
00:05:03,730 --> 00:05:09,670
‫Será muito mais fácil retornar os resultados do canal Get World Suite.

72
00:05:09,670 --> 00:05:16,030
‫Então, estamos apenas passando os resultados disso de volta para o alcance do alcance ou de quem

73
00:05:16,030 --> 00:05:16,840
‫está ligando.

74
00:05:17,170 --> 00:05:21,900
‫Então, falando de quem está ligando, agora precisamos subir em nossa garra.

75
00:05:21,910 --> 00:05:24,610
‫Precisamos criar nosso resultado de acerto em algum lugar.

76
00:05:24,610 --> 00:05:25,630
‫Temos que criar aqui.

77
00:05:25,630 --> 00:05:27,910
‫Então, acerte o resultado, este é o que vamos preencher.

78
00:05:28,420 --> 00:05:34,930
‫Vamos, então, criar uma variável brilhante que será o hit para definir isso igual a

79
00:05:34,930 --> 00:05:42,100
‫você pegar uma bola ao alcance e passar o resultado do hit por referência que queremos

80
00:05:42,100 --> 00:05:42,970
‫preencher.

81
00:05:43,390 --> 00:05:49,000
‫E então, se acertarmos, vamos seguir em frente e executar o código de captura.

82
00:05:49,360 --> 00:05:50,260
‫Coisas fantásticas.

83
00:05:50,260 --> 00:05:56,560
‫Nós movemos algo nele para uma função para fazer essa função de captura caber em uma única tela.

84
00:05:56,560 --> 00:06:04,030
‫E novamente usamos nossos parâmetros, desta vez criando uma função para nós mesmos que os usa a

85
00:06:04,030 --> 00:06:04,960
‫sério.

86
00:06:05,170 --> 00:06:07,060
‫Vejo vocês no próximo vídeo.

