Ir ao conteúdo
  • Cadastre-se

Jogo em C++


Carolina Hencklein

Posts recomendados

Bom dia,

 

Sou nova aqui no fórum e faço faculdade de jogos digitais, preciso de entregar um jogo feito usando opengl, mas não vê-lo funcionar, porque o programa acusa que algumas classes não são tipos válidos e que alguns componentes não existem sendo que eu os declarei

 

também preciso de umas dicas para programar um tiro, a colisão dele com o inimigo e com o jogador e como fazer o jogo parar quando isso ocorre.

Link para o comentário
Compartilhar em outros sites

má fica muito difícil ajudar sem ver o que voce ta fazendo..configurar o ambiente pra opengl realmente nao é fácil se voce nao tiver um bom guia..

 

Se for usar a SDL,ve esse tutorial

http://pontov.com.br/site/index.php/opengl/137-criando-um-ambiente-para-jogos-com-sdlopengl

 

Se for usar freeglut ve esse tutorial 

http://seevisionc.blogspot.com.br/2013/08/setting-up-freeglut-and-gltools-with.html

 

PS:Eu nunca usei opengl + Code blocks,mas acho que ja tem alguma coisa "built-in" no code blocks pra SDL,mas eu nao tenho certeza!

Link para o comentário
Compartilhar em outros sites

Oi desculpe demorar em postar algo com o código, mas eu estava sem internet em casaclasse de controle do jogo.doc

 

esta em doc, porque não tenho permissão para enviar outros tipos de arquivo

São  classe de controle das ações do game e a biblioteca da mesma

 

Preciso que o jogo:

De game over quando o jogador colidir com o inimigo

Contagem de Tempo

Contagem de pontos

Pro power-up pensei em aumento de velocidade

E que o jogador atire uma esfera no inimigo e essa esfera só se desloque no eixo z

 

 

Link para o comentário
Compartilhar em outros sites

oi caroline,a maioria das coisas que voce me perguntou são dependentes da implementação das suas classes Player,Enemy, Camera,só posso tentar ajudar de uma forma superficial   
 
Pra renderizar texto..pode procurar sobre a biblioteca"FreeType",não tem como eu colocar aqui(isso no minimo precisaria de uma classe inteira,talvez voce ache algumas prontas pela internet)

Ou voce pode usar a função "glutBitmapCharacter" pra mostrar em caractere,mas tem que setar e desabilitar algumas coisas antes

Pra colisão simples voce pode definir um raio pra cada ator na classe e comparar esse raio com a distancia atual entre eles,se for menor que o raio,então colide,geralmente funções de colisão são colocadas dentro de um outro loop contendo a ação então é normal usar um if pra testar a condição da distancia em vez de fazer um loop,mas ja que é só pra mostrar.."fimpartida" seria o tempo dado pra partida,POR EXEMPLO :

GLfloat *player_pos = m_player.getPosition();GLfloat *enemy_pos = m_enemy.getPosition();unsigned int posvertice = 4; //Testa com qualquer vertice//ator.raio seria a constante definida na classe pro raio maximo que algo pode se aproximar do atorwhile((player_pos[posvertice] - enemy_pos[posvertice]) > ator.raio || fimpartida >0)  {//Faz o que tem que fazer//Depois algum resultado que influenciou na posição atual dos personagens,então seta a nova//posição  m_player.setPosition(pos_atual_player);                                m_enemy.setPosition(pos_atual_enemy); }//Quando sair do loop testaria se o loop parou porque houve colisãoif((player_pos[posvertice] - enemy_pos[posvertice] ) < ator.raio){  glRasterPos2i(pos_xtela,pos_ytela);  //Seleciona posição na tela onde vai ser escrito  glutBitmapCharacter(fontecaractere,"gameover"); //Escreve gameover}return;

Pra contar o tempo voce pode usar a classe CStopWatch, alguma coisa como:

CStopWatch contatempo;contatempo.getElapsedSeconds(); //Dentro de um loop..

Contar pontos é só contar..

Pra mover a esfera só para o eixo z teria que aplicar uma transformação,voce poderia usar a classe "GLMatrixStack" para segurar sua M3DMatrix44f,ou então pode usar a classe GLFrame pra representar os vértices do objeto,isso simplifica porque "GLMatrixStack" pode aplicar todas as transformações nescessarias,POR EXEMPLO

GLFrame ator_esfera;GLMatrixStack mtx_ator_esfera;  

Depois na função que renderiza a cena,poderia usar

 ator_esfera.MoveForward(0.1f);                //Move 0.1f pra frente mtx_ator_esfera.PushMatrix(ator_esfera);        //Passa para GLMatrixStack a pilha de                                                 //ator_esfera com um novo valor mtx_ator_esfera.Translate(tx,ty,tz);              mtx_ator_esfera.Rotate(ang_ += 0.5f,rx,ry,rz);  //Aplica Transformação ob_esfera.Desenha(//argumentos);             //ob_esfera pode ser um "GLTriangleBatch" mtx_ator_esfera.PopMatrix();

Só pra terminar voce teria que passar essa matriz transformada de "mtx_ator_esfera" pro shader como argumento,isso pode ser feito com a classe "GLGeometryTransform",que poderia ter tanto a pilha de mtx_ator_esfera,quanto a pilha de Frustum,e ja faria automaticamente a transformação da pilha de ambos com a função "GetModelViewProjectionMatrix()", resultando na matriz de projeção de modelo-visualização,pra isso voce teria que setar o objeto de "GLGeometryTransform" (de preferência no construtor da classe)pra que ele aponte pro topo da pilha de ambos com a função "SetMatrixStacks"

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!