Playlist C#:
https://youtube.com/playlist?list=PLW-9djkTMdfUZkgBm8s0_bNMcW7THwwD6
Aprenda a criar j...
Video Transcript:
o Rei Davi seja muito bem-vinda mais um vídeo do canal Christian jogos aqui quem vos fala é o n Soares e no vídeo de hoje eu quero te ensinar o básico da linguagem de programação C Sharp em 30 minutos então você vai sair desse vídeo já não mais tão cru quando o assunto é programação mas sim sabendo os conceitos fundamentais dessa linguagem conforme eu falei durante as aulas nós vamos estudar conceitos fundamentais e dentre esses conceitos eu separei aqui o estudo de variáveis funções e métodos condicionais coleções laços de repetição classes e acessar dores a gente vai tá vendo tudo isso a partir de agora então sem Muita enrolação e bora pro vídeo mas antes não esqueça de esmagar seu like e também se inscrever no canal [Música] para praticar vamos nessa aula eu criei um script na game and Earn your it E também utilizarei o Microsoft visual a community para tá fazendo a edição desse escute Lembrando que você não precisa necessariamente trabalhar com o it para aplicar tudo que eu vou ensinar aqui afinal ensinar e conceitos fundamentais do ser Sharp e eles são aplicáveis a tudo tá bom e bem para gente começar a estudar a gente precisa entender os conceitos mais básicos dos echarpe e vamos começar aqui vendo o conceito de variável variável que também é conhecido como atributo de uma classe nada mais é do que o espaço na memória do computador que armazena algum w que pode ser alterado durante o tempo de execução do algoritmo e como é que eu crio ou melhor declarar uma variável No seu chá primeiro de tudo você tem que passar o tipo da variável seguido do nome dela E você também pode atribuir ou não um valor a essa variável já no momento da declaração dela então existem vários tipos de variáveis né como por exemplo uma variável kit que é do tipo inteiro é uma variável numérica do tipo e teve então só armazenar números inteiros tá e aqui você pode passar o nome para essa variável E aí não sei Sharp a gente encerra um bloco de instrução passando um ponto e, sempre tá bom então aqui eu declarei uma variável do tipo inteira com nome Speed E como eu falei eu posso também passar ou não já na declaração dela um valor e para passar esse valor eu uso o sinal de igual e passa o valor que eu quiser como nesse caso aqui é uma variável do tipo inteira tem que ser um número inteiro então três né seja um número que for mas tem que ser inteiro eu não posso botar um número quebrado por exemplo como esse exemplo aqui no caso que seria o número decimal então beleza A gente já entendeu como declaramos uma variável quais tipos existem existem vários Tá mas os principais seriam números inteiros como eu falei números Floyd que aqui se inseriam números decimais então aquele exemplo que eu passei aqui eu já poderia fazer tá é E no caso de flout eu preciso passar um F para indicar para o compilador tem um número flute tá isso é muito importante e também existem variáveis do tipo string que armazenar iam é caracteres especiais né como por exemplo em name ter que nesse caso a gente poderia passar entre "o nome né pra esse personagem em nome do personagem então aqui ó armazenaria um caractere especial né nessa variável do tipo string tem também variáveis do tipo bum variáveis booleanas elas armazenam o valor verdadeiro ou falso necessariamente tá então por exemplo uma variável chamada idade que eu poderia armazenar se o inimigo está vivo ou não E aí eu poderia passar um valor de verdadeiro ou falso tá e perceba que quando a gente trabalha com programação é super interessante trabalhar com termos em inglês então no momento em que você declara a sua variável é sempre legal você trabalhar com nomenclaturas em inglês tá começando sempre com a primeira letra minúscula belê E aí já é detalhe tá bom é detalhe que a gente deixa para outro vídeo e o outro vídeo que a gente pode estudar melhor sobre boas práticas certo então aqui por exemplo a gente tem uma variável Speed certo declarado aqui uma variável string que eu posso colocar de eliminei me também declarado aqui e pronto temos dois exemplos de variáveis criadas lembrando e reforçando que esses valores eles podem ser alterados em tempo de execução Então você está executando o seu script e você pode mudar o valor que tá aqui e mudar o valor que tá aqui com fome suas necessidades agora a gente vai entender o conceito de funções e métodos tá a funções e métodos são a mesma coisa o que muda o que difere é só nomenclatura em algumas linguagens utiliza-se mais função e outras utiliza-se mais o nome método mas no final das contas é a mesma coisa e não sei Sharp a gente da Claro método começando pelo retorno que ele vai nos dar é a primeira coisa que a gente tem que entender que o método ele é um conjunto de blocos um conjunto de instruções que a gente pode armazenar várias instruções de uma vez para executá-las todas né de uma vez só quando a gente chamar esse método só que a gente precisa passar o tipo de retorno que esse método vai nos dar e geralmente a gente trabalha com void porque é um retorno vazio significa que eu não preciso retornar nada tá Eu só preciso Chamar esse método e ele vai ser executado então void e aí como eu falei um método é uma um conjunto de instruções Então eu preciso passar para ele uma nomenclatura que indique o que ele vai fazer quando eu chamá-lo né Então como aqui eu tenho uma classe com o nome de Anime e aqui eu tô criando né eu tô programando como se fosse um inimigo eu poderia criar um método por exemplo para mover mover não é movimento para mover o nosso inimigo eu poderia criar e para atacar tá e perceba que a estrutura de um método consiste basicamente em Eu tenho um tipo de retorno eu tenho o nome do método né e dentro de entre os parentes eu posso passar um parâmetro tá mas aí é assunto para outra conversa e eu abro e fecho Chaves tá feita aqui a estrutura de um método então aqui eu tenho um método que seria responsável pela movimentação e um outro método que seria responsável pelo ataque tá então aqui eu colocaria instruções relacionadas à movimentação e aqui a gente começa a estudar agora mas não conceito da nossa aula que é o conceito de condicionais condicionais são instruções no código que dependem exclusivamente de alguma condição como o nome já diz e o mais convencional mais conhecido de todos Talvez seja o wi-fi né with é um condicional que nos faz com que eu tenho que atender alguma coisa algum requisito para que ele Execute o que tiver dentro então como funciona a estrutura de 11 e eu declaro pif abro e fecho é parênteses e também abro e fecho chaves dentro do IF eu preciso passar alguma condição para que o bloco que esteja aqui dentro seja lido Então vamos supor que eu queira checar para que isso aqui Execute o Speedy seja maior tá do quiser IPI para formular uma condição a gente pode utilizar desses sinais de maior e menor menor ou igual maior ou igual tá são sinais que você com certeza deve ter aprendido aí nas suas aulas de matemática do Ensino Fundamental se você não tiver matado elas né então a gente tem aqui uma condicional que eu estou checando se o Speedy é maior ou igual a zero Além disso eu também posso colocar mais de uma condicional para ser checada ao mesmo tempo que eu tô chegando sua Speed é maior ou igual a zero assim como eu também posso criar mais uma condicional aqui dentro da desse mês E para isso eu vou criar aqui uma outra variável que vai pode ser Fruit para diferenciar um pouco eu vou chamar de Health que seria a vida no nosso inimigo então se o Speed for maior ou igual a zero e e é e Health for maior do que zero também por exemplo tá acontece alguma coisa Claro que quer um exemplo hipotético mas só pra gente entender que eu posso colocar duas condicionais ao mesmo tempo de tudo mesmo esses dois e comerciais eles indicam E então eu tô chegando se isso daqui e isso daqui é verdadeiro tá eu também assim como também posso utilizar uou que seriam duas Barrinhas que aí nesse caso eu estaria chegando se essa condição ou essa condição forem verdadeiras foi atendida está então uma das duas tem que ser atendidas para que Execute o que tiver dentro de si Fi Então o que a gente entendeu um pouco só de condicionais bem uso prático disso aqui consistiria em eu poderia deixar esse método movimente aqui e checar se a velocidade do inimigo é maior do que zero e aqui dentro Eu executaria uma animação por exemplo do personagem porque eu saberia que ele estaria movimentando né Por exemplo eu poderia criar também um método chamado Dead que eu chamaria para o Quando o inimigo fosse derrotado e nesse caso eu poderia criar um like e chegasse a vida dele fosse menor ou igual a zero e aqui dentro Eu executaria alguma animação algum bloco de instrução referente a morte do inimigo e para fechar todo wi-fi também pode ser seguido de um alce Então eu tenho um livro aqui chegando o seu Speed a maior do que zero e eu posso adicionar também um Elson tá o quê que esse é o faria wellsie sempre executado se wi-fi não atende a condicional então enquanto o Speed for maior do que zero Eu leio o que tiver o El se né no caso Então se a gente traduzir seria se então el se eu leria sua Speed não atendesse a essa condição ou seja em outras palavras fosse igual ou menor a 0 no outro conceito muito utilizado dentro do ser chato e ao conceito de coleção nós conseguimos criar através de uma instrução específica coleções de variáveis coleções de dados né a gente queira armazenar durante a execução do nosso algoritmo E essas execuções elas podem ser dadas através de a Reis de dicionários de listas né aqui a gente vai ver dois a Reis e listas Então como é que eu posso armazenar por exemplo várias variáveis dentro de um local só né Imagine que um colecionável seja uma gaveta né de um guarda-roupa quando você tem um guarda-roupa com várias gavetas você pode armazenar várias peças de roupa dentro do seu mesmo guarda bom então entenda como uma rei e um limite né ou seja um colecionável sendo um guarda-roupa no colo você pode guardar em cada gaveta uma coisa diferente uma peça de roupa diferente e nesse caso aqui trazendo para programação seria uma variável um dado um valor diferente como é que eu faço para declarar esse colecionável bem começando pelo Array né que é o mais convencional você simplesmente passa o nome da variável né nesse caso aqui Um empate que a gente já até viu e aí a gente abre e fecha essas chavinha saque a gente passa o nome em seguida por exemplo int Array e pronto tá declarado o nosso Array dentro desse Array eu posso armazenar vários kits é um monte de valor inteiro e se eu quiser já no momento da declaração do Array passar os valores que vão ser armazenados aqui eu passo um igual mil quint abre e fecha de novo as chaves Av e fecha os colchetes e aqui dentro você vai passar todos os valores inteiros que você quer armazenar dentro desse Array divididos né separados por uma, então por exemplo 1 2 3 4 5 6 7 8 9 10 pode pode ser a quantidade de valor que você quiser que você precisar para o seu algoritmo funcionar aqui dentro desse int Array nós acabamos de armazenar para vez desse código dessa instrução 10 kits tá 10 valores inteiros cada um separado por, aqui além disso nós temos também o lixo né conforme eu tinha adiantado para declarar um list né é bem simples também list só muda assim táxi aqui tá galera lixe o tipo do lixo que nesse caso é íntimo para gente seguir o mesmo Exemplo né intelist certo e tá feita que a declaração da nossa lista né a precisa armazenar nesse link e já no momento da declaração e ele vai ter Então você vai passar aqui igual a new list tá lembrando que na programação galera o igual ele serve para indicar que uma variável né tá recebendo o valor então não é que a hit list é igual a isso daqui né ou int Array é igual a isso aqui na verdade o correto é a gente leu encerrei recebe todas essas informações aqui assim como o lixo vai receber aqui em baixo agora então eu abre e fecha aqui parênteses e abre e fecha o colchete e aqui sim eu passo os valores vou passar os mesmos valores que estão aqui em cima tá divididos por, também pode ver que a estrutura é um pouco diferente mas ao mesmo tempo um pouco parecida né bem qual a diferença dos dois né eu devo usar esse ou devo utilizar esse basicamente tanto faz vai variar de acordo com o seu gosto como programador a diferença na minha opinião é que o lixo é mais versátil um exemplo se eu precisar Em algum momento a vou pegar esse esse método aleatório aqui em algum momento adicionar ou remover algum membro aqui de dentro desse lixo eu posso simplesmente chamar o intelist. AD e aqui eu passo um valor qualquer nesse nessa linha aqui nessa instrução eu tô adicionando a minha lista o três então ao invés de ficarem 10 valores passaram a ser Onze Depois dessa leitura dessa linha porque o estarei adicionando três aqui no final é como se ficasse assim tá E também eu posso remover eu posso usar o vimo e aqui eu passo o número nesse exemplo eu removeria por exemplo um nesse caso eu removeria um após essa linha ser lida e aí esse lixo passaria a ser isso daqui tá então o like se ele tem esse tipo de versatilidade que o Array não tem tá só diferem isso também Belê e bem mais é muito bacana para gente ver é o conceito de Laços de repetição bem aqui em cima a gente tem uma rei e a gente tem um lixo né mas como é que eu faço para acessar os valores que estão dentro tanto do Array quanto do lixo individualmente vamos porque eu preciso de resgatar todos o algum valor específico que esteja aqui dentro porque o meu algoritmo exige isso por algum motivo né para fazer isso né para você conseguir acessar os elementos de um Array ou os elementos de um lixo você pode utilizar ou do foreach um do forr Começando aqui pelo for each a estrutura do Forte é bem simples tá se você tiver utilizando o visual Studio fica que o rack Zinho você pode digitar forma de pressionar duas vezes tava toda vez que aparecer esse ícone Zinho significa que ele pode completar para você se você pressionar dos Estados é o seu pressionados está bem e aí o compilador já faz o código para você tá mas olha só que a gente precisa entender aqui dentro da estrutura eu preciso passar o tipo da variável que o e do Array ou do list tá então se isso aqui é uma rede isso aqui também é uma rede gente não faz sentido Eu por exemplo passar aqui um Fruit né para fazer a leitura Então eu vou passar aqui um 20 e é que eu passo o nome de cada item que tá aqui dentro geralmente têm que seu nome correspondente para você não se perder então se isso aqui é uma rede de números inteiros isso aqui também eu vou passar 20 numbers por exemplo tá nesse caso aqui nossa aqui e eu preciso passar a coleção ou seja o Array ou lixe então eu posso passar o Array aqui ou wichita tanto faz ele vai fazer a leitura de todos os elementos que estão dentro desse lixo nesse exemplo aqui porque eu tô passando lixo Se eu passasse aqui com int Array eu faria a leitura de todos os elementos que estão dentro desse Array nesse exemplo aqui e se for each seria executado 10 vezes ele rodaria 10 vezes por quê Porque são dez elementos que estão aqui dentro beleza e o forte ele já trabalha João maneira um pouquinho diferente mas a função é a mesma então estrutura do foco olha digitei foge apareceu quadradinho dos estab já completa para mim a estrutura do foco consiste no seguinte a é criado uma variável local inteira chamada de isso aqui é um padrão tá gente é uma convenção todo mundo faz assim na geralmente Mas você pode trocar e se por algum algum outro nome que você preferir Tá mas 21 e recebe zero então aqui a gente tem uma variável inteira que está recebendo valor de zero inicialmente beleza e aqui a gente tem uma Tão beleza que a gestão a declaração aqui a gente tem uma condicional então enquanto ue foi menor do que o valor que tiver aqui ui vai ser acrescido vai ser implementado Tá então vamos entender isso aqui melhor aqui a gente tem uma condicional conforme eu falei aqui tá compilador tá demonstrando eu porque porque eu preciso passar algum valor numérico né para que esse foi Olá seja lido x números de vezes certo então se eu passar aqui por exemplo 10 e se for vai ser lido dez vezes então você consegue entender que a estrutura é diferente do Forte porque o forte ele já faz a leitura direto no tamanho do Array ou no tamanho do lixo né E aqui no formam a gente precisa passar manualmente a quantidade de vezes que se for vai ser lido no entanto eu não preciso né E nem é uma boa prática vou passar um número assim do jeito que eu fiz aqui foi só um exemplo né eu posso por exemplo como eu quero acessar esse Array aqui no nosso contexto eu posso passar o each Array. Length porque assim com ponto linf eu faço uma leitura do tamanho máximo de sua Rei então se ele tem 10 aqui vai ser lido dez vezes se ele tivesse 20 aqui seria lido 20 vezes assim como se ele tivesse três três elementos aqui dentro né aqui seria Lido é mas olha só Diferentemente do Array que a gente passa opulência which exist que a gente passe.
Counter tá Então olha só voto é criar um outro fórum aqui em baixo tá e eu vou passar ao invés do enxerguei eu vou passar o intellisense perceba que vai divulgar um erro aqui para mim porque não não não existe length dentro de um lixo tá nesse caso eu tenho que passar o ponto caught ok então ele é só E se for vai ser executado tantas vezes quanto estiver existirem elementos aqui dentro desse Array certo e esse for vai ser executado tantas vezes quanto existirem elementos dentro desse lixo beleza perceba aqui é a mesma coisa só que com nomenclaturas diferentes no Array eu passo. Length e no list eu passo. Caught e aqui dentro né Beleza não basta só eu executar de acordo com o tamanho né extensão daquele o rei ou daquele lixo eu preciso acessar cada membro individual mente aqui dentro Então nesse caso eu vou passar aqui o int Array tá agora que entra a outra finalidade desse vizinho né dessa variável local que tá aqui no nosso for eu vou passar aqui o each Array abro e fecho Chaves posso passar we certo e aí eu executa alguma coisa conforme eu necessite tá então por exemplo não é uma variável local mente a kit corrente Number né Número atual recebe é o número que tá passando aqui então Olha só vamos entender que que eu fiz aqui dentro desse foco eu declarei uma variável local tá do tipo int passei o nome para ela de carro a gente não bem e estou atribuindo a ela o elemento atual desse Array Lembrando que nesse exemplo aqui esse forma se executados 10 vezes porque existem dez elementos aqui dentro certo então esse int Array com as chaves e aqui dentro serve para gente passar em cada um desses elementos como esse começa a receber do zero e ele vai valer 0 1 2 3 4 5 6 7 8 9 10 eu consigo acessar cada elemento de dentro do Array através dele passando né o nome do Array e entre Chaves ui porque se eu perco cada elemento de dentro do Array e passo para essa variável local a mesma coisa se eu fizesse aqui embaixo eu só teria que mudar o int Array né pelo list it alist a mesma lógica tá bom tem para a gente finalizar vamos entender o que e também vamos entender o nosso último conceito aqui dessa aula que é o conceito de classe tá olha só vamos dar uma olhada aqui no nosso script inteiro Tá o que que a gente tem aqui eu tenho variáveis certo essa parte toda aqui são variáveis que a gente declarou e essa parte toda aqui são métodos que a gente também declarou certo então a gente tem variáveis e temos métodos né perceba que tudo isso tá dentro dessa grande estrutura aqui né que tá escrito pobre que classe anime E ai correto então a gente consegue entender que uma classe armazena variáveis e métodos então entenda que uma classe basicamente tá porque no conceito de orientação a objeto toma conversa para outro tutorial outra aula né que seria um objeto no caso uma classe serve para armazenar variáveis e métodos conforme a gente Oi Paulo eu posso criar várias e várias classes conforme a minha necessidade eu posso por exemplo criar uma outra classe aqui Public Class por exemplo Enemy huepow né Seria algo como arma do inimigo abro e fecho Chaves né é pochetes então aqui eu tenho plus.
no Apple e aqui eu tenho uma classe e uma classe N E ai são classes diferentes estão aqui dentro eu poderia criar variáveis né ou seja atributos dessa arma do inimigo e também né tudo se né então poderia criar atributos aqui como por exemplo é de Imaginext seria o dano que essa arma Tiraria um flute chamado Fahrenheit né Por exemplo Já que é uma arma essa arma poderia disparar uma quantidade de balas um determinado tempo e também poderia ter um método chamado aqui shot chute né seria um método para atirar Beleza agora perceba que interessante existe uma coisa não sei o chamado acessador do jeito que eu fiz aqui todos os métodos e todas as variáveis de ambas as classes estão privadas então não consigo por exemplo acessar uma informação que tá aqui aqui dentro tá porque quando uma uma variável um método está privado Eu só consigo acessar as informações de dentro da própria classe tá e como é que eu identifico o que tá privado que não tá se eu não declarar nada antes do método antes da variável com antes do método automaticamente compilador já entendi que isso aqui é privado se eu quiser tornar essa informação pública ou seja acessável de fora dessa classe e fora dessa classe É só colocar um Publique antes da variável ou antes do método então por exemplo eu quero acessar o valor do dano e quero acessar o Fire rate fora dessa classe é assim como eu quero acessar também esse método para tirar fora dessa classe agora Perceba o uso disso daqui o método chamado ataque no inimigo né e meu inimigo deve ter uma arma nesse exemplo Beleza quando eu atacar eu quero que na verdade ele chama esse método para tirar né que é o método que tá na arma para acessar primeiramente Eu precisaria a referenciar essa classe aqui dentro dessa outra classe para tal eu posso criar como se fosse uma variável então eu criarei aqui ele meu Apple poderia passar o nome para ela de Ué como por exemplo tá E aqui dentro do ataque eu simplesmente chamaria o apple.