|
19 - Array
O array é uma das operações em programação de jogos muito importante.
Um array é uma variavel comum que pode armazenar mais de um valor porém esse valor precisa ser sempre do mesmo tipo.
Um Array é
um grupo de posições de memoria consecutivas, todas de mesmo nome
e mesmo tipo. Para fazer referência a uma posição particular
de um array, especificamos o nome do array e o número da posição
daquele elemento no array.
Vamos criar um
array de nome números com 12 elementos.
O primeiro elemento é referenciado como numeros[0] e o ultimo como numeros[11].
Assim podemos ter vários valores em uma array e acessar esse valor atravez
de um indice que é chadado de subscrito.
c[0] = 10
c[1] = 02
c[2] = 25
.
.
c[11] = 01
Um subscrito pode
ser uma operação inteira. Por exemplo, se a = 5 e b = 6 o comando:
c[ a + b] += 2;
adiciona 2 ao elemento de array c[11].
e para imprimir
um valor de uma posição de uma array:
cout << c[0] << endl;
ou seja, cada subscrito
de uma array recebe um valor e esse valor interage em seu programa como se fosse
uma variavel simples.
Operação
matemática
c = numero[11] / 2
Uma array pode
ser Iniciamos da seguinte forma
tipo nome[quantidade
de elementos] = { valor dos elementos separado por virgurla };
int teste[10]
= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
ou apenas
int teste[10];
bool teste[2]
char teste[3]
CÓDIGO...
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int numeros[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2,
1 }; // array de 10 elementos
inta=2, b=4;
cout
<< numeros[1] << endl;
cout << numeros[2] + 3 << endl;
cout << numeros[a +
b] << endl;
cout << ++numeros[4] << endl;
cin;
return 0;
}
FIM DE CÓDIGO...
Observe que o valor
10 está no elemento numeros[0]
observe que numeros[a + b] é igual a numeros[6]
observe que ++numeros[4] incrementa o valor de 6
Arrays Multidimensionais
Os arrays em C++
podem ter vários subscritos, um uso comum de arrays com vários
subscritos é representar tabelas de valores que consistem em informações
organizadas em linhas e colunas. Para identificar um elemento especifico de
uma tabela, devemos especificar dois subscritos: o primeiro identifica
a linha do elemento e o segundo a coluna.
É com este tipo de array que iremos fazer graficos em 3D e cenários para jogos 2D.
|
|
| |
coluna 0 |
coluna 1 |
coluna 2 |
| linha 0 |
a[0][0] |
a[0][1] |
a[0][2] |
| linha 1 |
a[1][0] |
a[1][1] |
a[1][2] |
| linha2 |
a[2][0] |
a[2][1] |
a[2][2] |
Um
array com vários subscritos pode ser inicializado em sua declaração
da mesma forma que um array de apenas um subscrito.
int array[2][2]
= { {0,0}, {0,1} };
int array[2][2] = { {1} , {3,4} };
Assim sendo, na
segunda linha, inicializamos array[0][0] com 1, array[1][0]
com 3 e array[1][1] com 4.
O Programa abaixo mostra como enviar esse tipo de variável para funções.
|
|
CÓDIGO...
//
Inicializando arrays multidimensionais
#include <iostream>
using std::cout;
using std::endl;
void imprimir(
int [][3] );
int main()
{
int array1[2][3] = { {1,2,3} , {4,5,6} },
array2[2][3] = { 1,2,3,4,5 },
array3[2][3] = { {1,2}, {4} };
cout
<< "Valores em array1 por linha: "<< endl;
imprimir( array1 );
cout
<< "Valores em array2 por linha: "<< endl;
imprimir( array2 );
cout
<< "Valores em array3 por linha: "<< endl;
imprimir( array3 );
std::cin;
return
0;
}
void imprimir (
int a[][3] )
{
for ( int i = 0; i<2; i++ )
{
for ( int j = 0; j<3; j++ )
cout << a[i][j]
<< ' ';
cout
<< endl;
}
}
FIM DE CÓDIGO...
Observe no exemplo
acima que as forma de se iniciar são várias, mas as formas de
trabalhar com arrays multidimencionais são iguais as unidimensionais,
com a possibilidade de se escrever dados em várias colunas.
Contribuidor
Adriano Waltrick
13/06/2007
|