SA-MP Forums Archive
[Tutorial] Usando 2D arrays - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Usando 2D arrays (/showthread.php?tid=283378)



Usando 2D arrays - FireCat - 14.09.2011

Inicio
P: Mas porque usar 2D arrays?
A: Mas rбpido, mais eficaz, mais simples de usar, quando se sabe usar.

P: Podes explicar agora?
A: Nгo :b

Entгo o que sгo 2D arrays?
2D arrays por exemplo
pawn Code:
new MyArray[2][3] =
{
{1.1,1.1,1.1},
{2.1,2.1,2.1}
}
Й praticamente fazer
new MyArray[2][3] e poderiamos fazer
MyArray[0] = 1;
Ou MyArray[0][1] = 2;
MyArray[0][2] = 3;
3D Arrays sгo por exemplo
pawn Code:
new MyArray[2][2][128];
format(MyArray[0][1],128,"Hello");
print(MyArray[0][1]);
Iria fazer print de "Hello" (sem os "")

Neste exemplo com o MyArray й por exemplo:
MyArray =
[0] = \0 x 128 (eu sei que 0 x 128 = 0 mas quero dizer \0 128 vezes)
[1] = \0 x 128

Entao se tivessemos new MyArray[2];
iria ser:
MyArray[0] = \0
MyArray[1] = \0
Exemplo com random spawns.
Em vez de fazermos
pawn Code:
public OnPlayerSpawn(playerid)
{
new RandomSpawn = random(2);//Random й sempre o total +1!!
if(RandomSpawn == 0)
{
SetPlayerPos(playerid,1.1,1.1,1.1);
}
else if(RandomSpawn == 1)
{
SetPlayerPos(playerid,2.1,2.1,2.1);
}
return 1;
}
Se nгo perceberem essa parte peзam para eu explicar melhor.

Entгo com 2D arrays podiamos simplesmente fazer:
pawn Code:
new Float: RandomSpawns[][] =//Float porque coords sгo floats. Pode ser [][] ou [2][3] porque temos 2 spawns e 3 porque sгo 3 numeros.
{
{1.1,2.1,3.1},
{4.1,5.1,6.1}//Nгo se mete , no ultimo, porque... й o ultimo :b
};
Porque й que os [][] ficam em branco?
Podem nгo ficar. Como estamos a lidar com 2D arrays, tкm de ser obrigatуriamente 2.
E o da esquerda й a quantidade de "linhas" que temos dentro do nosso 2D array.
O outro da direita, й quantos "numeros" ou depende do que tiveres.
Neste caso seria [2][3] porque temos 2 spawns, e 3 valores.

Entгo porque й que se poe em {} e nгo normal?
Porque isto й "dividido", e nгo estamos a falar de enums que sгo variables.
Num sу "variable"
E agora o OnPlayerSpawn
pawn Code:
public OnPlayerSpawn(playerid)
{
new RandomSpawn = random(sizeof(RandomSpawns));//Sizeof = o tamanho de. Neste caso tamanho do RandomSpawns
switch(RandomSpawn)//Switch й mais eficient do que if(... = ...) else if..
{
SetPlayerPos(playerid,RandomSpawns[RandomSpawn][0],RandomSpawns[RandomSpawn][1],RandomSpawns[RandomSpawn][2]);//Setar o pos do player RandomSpawns[o random numero][Float:x]
//porque й o primeiro valor no nosso 2D array.
}
return 1;
}
RandomSpawns[RandomSpawn][0]?
RandomSpawns й como se chama o nosso 2D array.
Entгo porque й que temos RandomSpawn na primeira []?
Eu expliquei que o primeiro [] serve para ver quantas "linhas" temos dentro do nosso 2D array,
E como fizemos random, fizemos random(sizeof(RandomSpawns)) fazer random da quantidade de linhas.
Resumindo: Irб selecionar a linha do 2D array, pelo random, como temos {numero1,numero2,numero3} irб escolher o float x = 0, y = 1, z = 2
Espero que gostem e que nгo se tornem contra mim. :b


Re: Usando 2D arrays - Josma_cmd - 14.09.2011

Poderia dar um belo edit e explicar melhor.
Se quer fazer um tutorial sobre arrays deveria explicar desde o que sгo arrays atй os tipos etc, exemplo de como usa-las em diferentes situaзхes enfim.
Me parece um cуdigo ъtil e explicado(nгo tгo bem explicado).


Re: Usando 2D arrays - JonathanFeitosa - 14.09.2011

Sim, Se й um Tutorial, Tem Que Explicar Um Pouco Melhor, Mais o Code Estб na Boa, Parabйns.


Re: Usando 2D arrays - FireCat - 14.09.2011

Quote:
Originally Posted by Josma_cmd
View Post
Poderia dar um belo edit e explicar melhor.
Tens duvidas a onde?


Re: Usando 2D arrays - Josma_cmd - 14.09.2011

Quote:
Originally Posted by FireCat
View Post
Tens duvidas a onde?
Nгo tenho duvidas, mas pra ser um tutorial precisa ser mais detalhado muitos nгo vгo entender.


Re: Usando 2D arrays - FireCat - 14.09.2011

Quote:
Originally Posted by Josma_cmd
View Post
Nгo tenho duvidas, mas pra ser um tutorial precisa ser mais detalhado muitos nгo vгo entender.
Ok jб estб. Obrigado pela critica


Re: Usando 2D arrays - Kuddy - 14.09.2011

O que sгo 2d arrays? Isto que falta explicar


Re: Usando 2D arrays - FireCat - 14.09.2011

Quote:
Originally Posted by [Magnus]
View Post
O que sгo 2d arrays? Isto que falta explicar
Jб estб


Re: Usando 2D arrays - BrunoBSF - 14.09.2011

acredito q vc pode dar uma melhorada


Re: Usando 2D arrays - FireCat - 14.09.2011

Uhh mais ainda? :b
A onde? xb