Lógica de Programação
Você devia estar pensando que nessa terceira aula seria sobre programação para WYD em si, não é mesmo? Mas não. Não podemos pular nenhuma parte. Devemos também conhecer a lógica de programação. A lógica de programação deve fazer parte do nosso dia-a-dia de programação.
Sendo para mim, uma das coisas mais importantes, porque se você dominar isso, conseguirá fazer diversas coisas juntamente com o aprendizado da linguagem utilizada. Lembrando que a lógica se aplica a qualquer linguagem de programação, por isso, é altamente recomendável que você estude muito isso. Porque se você um dia quiser trocar a linguagem, você só estudará a síntese dos códigos e depois irá se aprofundando.
Eu posso dar meu exemplo: era programador de Delphi. Estudei arduamente a tal Lógica de Programação. Todos os códigos delphi eu havia decorado. Depois migrei para o AutoIT também. E graças a lógica de programação, criei diversos hacks apenas usando o help do autoit. Depois migrei também para o C++ , que hoje estou fazendo essa aula. E aprendi PHP rapidamente graças a isso. Por isso, recomendo muito que estude Lógica de Programação.
O que é lógica de programação?
São 9 passos para fritar um ovo. Viu que todos os passos existe um verbo? Esses verbos são as funções e nesse algoritmo são:
PS: Esse código não é compilável. É apenas um exemplo.
Viram que cada verbo tinha uma função? Temos 5 funções e mais uma que é o que faz todas funcionarem e que as chama para que o ovo seja frito.
Viram como é fácil?
Lógica de programação é o uso da matemática (algoritmos) na hora da programação. Algoritmo é ua sequência finita de instruções bem definidas e não ambíguas. Geralmente os exemplos são de culinária (realmente, a maioria dos exemplos em tutoriais são com comida). Aqui está um: fritar um ovo.
1 - colocar a frigideira no fogo.
2 - colocar óleo na frigideira.
3 - retirar o ovo da geladeira
4 - esperar o óleo ficar quente.
5 - quebrar o ovo separando a casca
6 - colocar o conteúdo do ovo na frigideira
7 - esperar o ovo ficar frito
8 - retirar o ovo da frigideira
9 - apagar o fogo
São 9 passos para fritar um ovo. Viu que todos os passos existe um verbo? Esses verbos são as funções e nesse algoritmo são:
- Retirar
- Colocar
- Esperar
- Quebrar
- Apagar
Seguindo essa sequencia, teríamos um código mais ou menos assim:
void Retirar_Ovo(int src, int ovo)
{
if(src == 1) ovo -= 1; // Tira da geladeira
else if(src == 2) ovo_pronto += 1; // Tira da frigideira
else ovo = ovo;
}
void Esperar(int type)
{
if(type == 1) // Espera óleo ficar quente
Sleep(5000); // Em milisegundos = 5seg
else if(type == 2) // Esperar fritar
Sleep(10000);
}
void Quebrar(int ovo_index)
{
ovo.Quebrar[ovo_index] += 1;
ovo->Casca.Pos = lixo;
ovo->Gema.Pos = frigideira;
return ovo.Quebrado;
}
void Apagar()
{
fire.Force = 0;
return;
}
void Colocar(int type)
{
if(type == 1) // Frigeira no fogão
frigideira.Pos = fogao;
if(type == 2) // Óleo na frigideira
frigideira.Oil += 1;
if(type == 3) // Ovo quebrado na frigideira
frigideira.OvoQuebrado += 1;
}
void main()
{
int ovo_index = 1;
Colocar(1);
Colocar(2);
Retirar_Ovo(1, ovo_index;
Esperar(1);
Quebrar(ovo_index);
Colocar(3);
Esperar(2);
Retirar_Ovo(2, ovo_index);
Apagar();
return;
}
PS: Esse código não é compilável. É apenas um exemplo.
Viram que cada verbo tinha uma função? Temos 5 funções e mais uma que é o que faz todas funcionarem e que as chama para que o ovo seja frito.
Viram como é fácil?
Lógica de Programação no WYD
A lógica de programação será usada sempre no WYD. Tudo em uma source deve ser pensado. Vamos a um exemplo. Para fazer aquele NPC unicórnio. O que terá que ser feito?
Verificar arma direita. Se for 0 continua.
Verificar arma esquerda se é uma das armas requeridas. Se for continua.
Verificar Refinação da Arma, se for igual a 6 continua.
Verificar Level do personagem. Se for maior que 40 continua.
Verificar Se é arch ou mortal. Se for mortal continua.
Verificar se já fez a quest. Se não, continua e entrega e retira os itens.
O que você faria com essa sequencia? Escreveria igualzinho como está ali. Só que em linguagem C++. O verificar seria o if. E assim continuando.
O código ficaria assim:
Não levando em conta o tamanho do código, porque está muito grande e poderia ser melhor, ele funcionaria perfeitamente.
Em todo e qualquer função você terá que pensar, é inevitável.
O código ficaria assim:
void Unicornio(int npcid, int clientid)
{
st_Mob *player = (st_Mob*)GetMobFromIndex(clientid);
if(player->Equip[7].Index == 0)
{
if(player->Equip[6] == ARMASPERMITIDAS)
{
if(player->Equip[6].EF1 == 43 && player->Equip[6].EFV1 == 6)
{
if(player->bStatus.Level >= 40)
{
if(player->Equip[0].EF == 1)
{
if(player->QuestInfo == 0)
{
player->Equip[6].Index = ARMA ENTREGUE;
player->Equip[6].EF1 = 0;
SendAll(clientid);
} else {
SendSay(npcid, "Você já realizou essa quest!");
return;
}
} else {
SendSay(npcid, "Apenas para personagens mortais!");
return;
}
} else {
SendSay(npcid, "Apenas para leveis acima do 40");
return;
}
} else {
SendSay(npcid, "A arma deve estar +6");
return;
}
} else {
SendSay(npcid, "Impossível de trocar com essas armas");
return;
}
} else {
SendSay(npcid, "Largue sua outra arma!");
return;
}
}
Não levando em conta o tamanho do código, porque está muito grande e poderia ser melhor, ele funcionaria perfeitamente.
Em todo e qualquer função você terá que pensar, é inevitável.
Finalizando
Vou finalizando essa parte. Espero que agora saiba o que é lógica de programação e a utilize sempre, pois é uma mão na roda.
Atenciosamente, Shepher.
Nenhum comentário:
Postar um comentário