Bom dia.
Gostaria de uma informação em relação a objetos em C++.
Estou criando um jogo para um trabalho de Computação Gráfica e ele funciona com bolas caindo e a gente alinha elas para o lugar certo.
Está tudo bem, com uma bola já está quase pronto.
Porém, preciso criar mais de uma bola.
De que forma posso fazer para dinamicamente chamar instâncias de BOLA?
Posso ter, talvez 3 bolas na tela.
Por exemplo:
aqui instanciei uma bola. e não posso fazer isso denovo em bola1 pois ela ainda está aparecendo na tela.
Se alguém não entendeu desse jeito que coloquei, posso tentar ser mais claro, mas creio que já deu bem pra entender o que eu preciso.
Obrigado.
Abraço
Você não aprendeu a usar vetores de objetos, ou então ponteiros?
C++ não é Java (tem uma sintaxe ligeiramente diferente).
Você até pode usar a notação que você mostrou, mas provavelmente não é exatamente isso que você quer.
Como não sei se você pode usar STL (droga - lição de casa tem dessas coisas - um monte de coisas que na prática eu usaria, não posso lhe ensinar só porque vocês ainda não aprenderam isso), não vou lhe dar um exemplo pronto.
É, não conheço STL, mas pelo que procurei aqui agora, acho que é o que eu preciso. Vou dar uma pesquisada sobre como adaptar ele no meu código.
Se alguém tiver alguma outra dica, pode enviar por favor.
Obrigado
Vc não pode ser um conjunto (Set) de bolas?
Para implementar um Set vc pode usar um Array, uma Lista Encadeada, qq coisa. Ai bastaria adicionar uma nova bola.
Algo como
adicionaBola(){
this.bolas.add(new Bola());
}
onde o metodo add pode ser uma forma de adicionar uma nova bola. Acredito que existe um stl::set para isto.
Você pode fazer uso da classe Vector!
#include <iostream>
#include <vector>
int main(int argc, char* args[])
{
vector<Bola *> bolas;
Bola* bola;
bola = new Bola("Primeira Bola");
bolas.push_back(bola);
bola = new Bola("Segunda Bola");
bolas.push_back(bola);
bola = new Bola("Terceira Bola");
bolas.push_back(bola);
}
Para mais informações: http://www.cplusplus.com/reference/stl/vector/
Certo, mas a todo o momento ele está fazendo uma releitura da main para redesenhar.
Os métodos na main fazem bola.mover(), bola.verificacor(), bola.cair() (por exemplo).
Como este vector cria um vetor de objetos de nome “bola” como ele vai diferenciar uma bola da outra?
Abraço
Ah, e se eu criasse uma lista encadeada, como eu poderia referenciar esses objetos bola que são criados?
e como ele geraria o nome do objeto?
Valeu
[quote=Lisossomo]Certo, mas a todo o momento ele está fazendo uma releitura da main para redesenhar.
Os métodos na main fazem bola.mover(), bola.verificacor(), bola.cair() (por exemplo).
Como este vector cria um vetor de objetos de nome “bola” como ele vai diferenciar uma bola da outra?
Abraço[/quote]
Para cada objeto criado com o operador new, é criada uma área na memória que referencia esse objeto!
O Vector é como um ArrayList de Java, por exemplo. É uma coleção que guarda uma sequência de vários objetos do mesmo tipo. Em cada posição do vector, você encontra um objeto do tipo diferente. Caso você queira trabalhar com cada bola, faça uma iteração no vector e pegue cada um dos objetos por vez, executando os métodos de desenho ou ação, por exemplo!
Deu pra entender mais ou menos?
Hmm, então seria mais ou menos bolas[1].move() e tal?
[quote=Lisossomo]Hmm, então seria mais ou menos bolas[1].move() e tal?
[/quote]
Exactly! 
Cada bola se encontra em uma posição do vetor. Para acessá-las, pega uma posição específica e voilà!
Valeu pela dica.
Vou adaptar no código.
Abração