[Tutorial] Usando 2D arrays
#1

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
Reply
#2

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).
Reply
#3

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

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

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.
Reply
#6

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
Reply
#7

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

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

acredito q vc pode dar uma melhorada
Reply
#10

Uhh mais ainda? :b
A onde? xb
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)