[Ajuda] Enum teoria
#1

Eu diversas vezes tenho usado enum
Код:
enum LabelEnum{
    number1,
    text2[10],
    text3[200]
};
new Label[5][LabelEnum] = {
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
};
Parece quando vc cria uma classe em outra linguagem e da varios atributos a ela, mas queria entender a parte teorica com mais embazamento, alguйm saberia me explicar oq й isso?
Sу vi isso aqui em PAWN.
Reply
#2

Quote:
Originally Posted by binnyl
Посмотреть сообщение
Eu diversas vezes tenho usado enum
Код:
enum LabelEnum{
    number1,
    text2[10],
    text3[200]
};
new Label[5][LabelEnum] = {
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
    {1000, "Text1", "Text2"},
};
Parece quando vc cria uma classe em outra linguagem e da varios atributos a ela, mas queria entender a parte teorica com mais embazamento, alguйm saberia me explicar oq й isso?
Sу vi isso aqui em PAWN.
O que vocк pretende fazer? Dependendo do que й, isso nгo й necessбrio.
Reply
#3

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
O que vocк pretende fazer? Dependendo do que й, isso nгo й necessбrio.
Eu jб uso pra varias coisas, salvar valores dos players, casas, carros...
Sу queria entender na teoria oq й isso, ou saber como pesquisar, pq isso me parece uma classe, parece um vetor dentro de outro vetor
Reply
#4

Alguйm saberia como me dar um embasamento teorico nisso?
Reply
#5

Enums sгo nada mais que constantes, veja este tutorial : https://sampforum.blast.hk/showthread.php?tid=318307
Reply
#6

Код:
Enum й como se fosse um agrupamento de variбveis que vгo ser usadas para a mesma coisa. Para comeзar, enum, se nгo me engano, significa enumerator.

Por exemplo, se vocк fosse usar variбveis para database de players, vocк usaria:

Code:
new PDinheiro;
new PSkin;
new PVida;

Como vimos, essas 3 variбveis vгo alojar o dinheiro, skin e vida do jogador, mas podemos organizar melhor colocando essas trкs variбveis no enum PlayerData, como no exemplo:

Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida
}

E como usar este enum? Crie uma variбvel global com o parвmetro MAX_PLAYERS, para estabelecer um playerid futuramente e o parвmetro PlayerData para poder usar qualquer variбvel desta enum. Ficaria assim:


Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida
}
new ArrayGlobal[MAX_PLAYERS][PlayerData];

Para usar, seria mais fбcil, olhe:

Code:
ArrayGlobal[playerid][Dinheiro] = 5000;
ArrayGlobal[playerid][Vida] = 100;

Isso setaria o dinheiro do cara para 5000 e a vida para 100. Quer dizer, nгo setaria, mas alojaria, para setar seria preciso o SetPlayerMoney e SetPlayerHealth.

Tambйm й possнvel variбveis com index, como:

Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida,
Pvi[4]
}

Um exemplo de uso й:
Code:
ArrayGlobal[playerid][Pvi][2] = 5;

Isso setaria o index 2 da variбvel Pvi da enum PlayerData para determinado playerid em 5.

Espero que tenha entendido.
by: AcerPilot
Reply
#7

A enum em Pawn й uma enumeraзгo de constantes, havendo nela uma tendкncia de se estabelecer sequкncias numйricas. Quando seus elementos nгo sгo inicializados, tem-se uma progressгo aritmйtica de razгo unitбria (sequкncia 0, 1, 2, ..., como no seu cуdigo) .



Como os нndices de um vetor seguem essa ordem, й possнvel fazer a indexaзгo atravйs do identificador (nome) de determinada enum. No fim, pode-se trabalhar com essa estrutura derivada como se fosse uma struct da linguagem C, que й capaz de conter diferentes tipos de dados.



No C++, uma das inspiraзхes do Pawn, a keyword struct cria uma classe com todos os membros pъblicos por padrгo. Mesmo se aplicada como a struct original do C, pela norma gera-se uma classe com somente variбveis, o que significa que sua interpretaзгo da enum do Pawn como classe faz sentido !



Espero ter ajudado .
Reply
#8

Quote:
Originally Posted by DelK
Посмотреть сообщение
Код:
Enum й como se fosse um agrupamento de variбveis que vгo ser usadas para a mesma coisa. Para comeзar, enum, se nгo me engano, significa enumerator.

Por exemplo, se vocк fosse usar variбveis para database de players, vocк usaria:

Code:
new PDinheiro;
new PSkin;
new PVida;

Como vimos, essas 3 variбveis vгo alojar o dinheiro, skin e vida do jogador, mas podemos organizar melhor colocando essas trкs variбveis no enum PlayerData, como no exemplo:

Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida
}

E como usar este enum? Crie uma variбvel global com o parвmetro MAX_PLAYERS, para estabelecer um playerid futuramente e o parвmetro PlayerData para poder usar qualquer variбvel desta enum. Ficaria assim:


Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida
}
new ArrayGlobal[MAX_PLAYERS][PlayerData];

Para usar, seria mais fбcil, olhe:

Code:
ArrayGlobal[playerid][Dinheiro] = 5000;
ArrayGlobal[playerid][Vida] = 100;

Isso setaria o dinheiro do cara para 5000 e a vida para 100. Quer dizer, nгo setaria, mas alojaria, para setar seria preciso o SetPlayerMoney e SetPlayerHealth.

Tambйm й possнvel variбveis com index, como:

Code:
enum PlayerData
{
PDinheiro,
PSkin,
PVida,
Pvi[4]
}

Um exemplo de uso й:
Code:
ArrayGlobal[playerid][Pvi][2] = 5;

Isso setaria o index 2 da variбvel Pvi da enum PlayerData para determinado playerid em 5.

Espero que tenha entendido.
by: AcerPilot
Eu sei como usar, mas +rep por tentar me ajudar

Quote:
Originally Posted by rjjj
Посмотреть сообщение
A enum em Pawn й uma enumeraзгo de constantes, havendo nela uma tendкncia de se estabelecer sequкncias numйricas. Quando seus elementos nгo sгo inicializados, tem-se uma progressгo aritmйtica de razгo unitбria (sequкncia 0, 1, 2, ..., como no seu cуdigo) .



Como os нndices de um vetor seguem essa ordem, й possнvel fazer a indexaзгo atravйs do identificador (nome) de determinada enum. No fim, pode-se trabalhar com essa estrutura derivada como se fosse uma struct da linguagem C, que й capaz de conter diferentes tipos de dados.



No C++, uma das inspiraзхes do Pawn, a keyword struct cria uma classe com todos os membros pъblicos por padrгo. Mesmo se aplicada como a struct original do C, pela norma gera-se uma classe com somente variбveis, o que significa que sua interpretaзгo da enum do Pawn como classe faz sentido !



Espero ter ajudado .
Esse era o ponto, vlw +rep tbm

Entгo й como se fosse uma classe, mas sу com atributos, sem metodos (claro que nгo se instancia, se usa uma posiзгo do vetor)
Nгo tinha visto isso em nenhum outro lugar, entгo isso й sу do pawn?
Reply
#9

Quote:
Originally Posted by binnyl
Посмотреть сообщение
Eu sei como usar, mas +rep por tentar me ajudar
Entгo й como se fosse uma classe, mas sу com atributos, sem metodos (claro que nгo se instancia, se usa uma posiзгo do vetor)
Nгo tinha visto isso em nenhum outro lugar, entгo isso й sу do pawn?
Existem duas coisas em seu tуpico, um enumerador e uma array bidimensional. Ken ensinou o conceito de enumeradores, e sim, й plausнvel pensar nessa tйcnica como uma classe. Mas para sanar de vez a sua dъvida, eu resumo dizendo que й uma array bidimensional que foi aninhada a um enum, pense nisso como uma composiзгo.
Ah, vale tambйm deixar claro que enumeradores nгo sгo tipados em pawn.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)