Jump to content

Archived

This topic is now archived and is closed to further replies.

Pablo Goulart

Como fazer colisão do personagem com o cenário ?

Recommended Posts

#include <allegro5\allegro.h>

#include <allegro5\allegro_native_dialog.h>

#include <allegro5\allegro_image.h>


const float FPS = 60;

const int SCREEN_W = 850;

const int SCREEN_H = 640;

const int BLUE = 64;


enum TECLADO { CIMA, BAIXO, DIREITA, ESQUERDA, END };


int main()

{

//_______VARIAVEIS DO JOGO________

ALLEGRO_DISPLAY *display = NULL;

ALLEGRO_BITMAP *blue = NULL;

ALLEGRO_BITMAP *Cenario = NULL;

ALLEGRO_EVENT_QUEUE *event_queue = NULL;

ALLEGRO_TIMER *timer = NULL;


float bouncer_x = SCREEN_W / 2.0 - BLUE / 2.0;

float bouncer_y = SCREEN_H / 2.0 - BLUE / 2.0;

bool key[] = { false, false, false, false };

bool redraw = true;

bool doexit = false;

bool desenha = true;

bool fim = false;


//________INICIALIZAÇÃO DO ALLEGRO 5__________

if (!al_init()) {

al_show_native_message_box(display, "Error", "Error", "Failed to initialize allegro!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

return 0;

}


if (!al_init_image_addon()) {

al_show_native_message_box(display, "Error", "Error", "Failed to initialize al_init_image_addon!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

return 0;

}

//al_set_new_display_flags(ALLEGRO_FULLSCREEN);

display = al_create_display(800, 600);


if (!display) {

al_show_native_message_box(display, "Error", "Error", "Failed to initialize display!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

return 0;

}

blue = al_load_bitmap("Blue.bmp");


Cenario = al_load_bitmap("Cubo.bmp");


if (!Cenario) {

al_show_native_message_box(display, "Error", "Error", "Failed to load image!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

al_destroy_display(display);

return 0;

}


event_queue = al_create_event_queue();


if (!event_queue) {

al_show_native_message_box(display, "Error", "Error", "Failed to create event_queue!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

al_destroy_display(display);

return 0;

}


timer = al_create_timer(1.0 / FPS);


if (!timer) {

al_show_native_message_box(display, "Error", "Error", "failed to create timer!",

NULL, ALLEGRO_MESSAGEBOX_ERROR);

al_destroy_display(display);

return 0;

}


al_set_target_bitmap(al_get_backbuffer(display));


//______INSTALAÇÃO________

al_install_keyboard();

//________REGISTRO___________

al_register_event_source(event_queue, al_get_display_event_source(display));


al_register_event_source(event_queue, al_get_timer_event_source(timer));


al_register_event_source(event_queue, al_get_keyboard_event_source());


al_flip_display();


al_start_timer(timer);


//_________LOOP PRINCIPAL__________

while (!doexit)

{

ALLEGRO_EVENT ev;

al_wait_for_event(event_queue, &ev);


if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)

{

fim = true;

}

if (ev.type == ALLEGRO_EVENT_TIMER) {


desenha = false;


if (key[CIMA] && bouncer_y >= 4.0) {

bouncer_y -= 4.0;

}


if (key[bAIXO] && bouncer_y <= SCREEN_H - BLUE - 4.0) {

bouncer_y += 4.0;

}


if (key[ESQUERDA] && bouncer_x >= 4.0) {

bouncer_x -= 4.0;

}


if (key[DIREITA] && bouncer_x <= SCREEN_W - BLUE - 4.0) {

bouncer_x += 4.0;

}


if (key[END])

redraw = true;

}

else if (ev.type == ALLEGRO_EVENT_KEY_DOWN) {

switch (ev.keyboard.keycode) {

case ALLEGRO_KEY_W:

key[CIMA] = true;

break;


case ALLEGRO_KEY_S:

key[bAIXO] = true;

break;


case ALLEGRO_KEY_A:

key[ESQUERDA] = true;

break;


case ALLEGRO_KEY_D:

key[DIREITA] = true;

break;

}

}

else if (ev.type == ALLEGRO_EVENT_KEY_UP) {

switch (ev.keyboard.keycode) {

case ALLEGRO_KEY_W:

key[CIMA] = false;

break;


case ALLEGRO_KEY_S:

key[bAIXO] = false;

break;


case ALLEGRO_KEY_A:

key[ESQUERDA] = false;

break;


case ALLEGRO_KEY_D:

key[DIREITA] = false;

break;


case ALLEGRO_KEY_ESCAPE:

doexit = true;

break;

}

}

if (redraw && al_is_event_queue_empty(event_queue)) {

redraw = false;


al_clear_to_color(al_map_rgb(255, 255, 255));


al_draw_bitmap(Cenario, 80, 0, 0);


al_draw_bitmap(blue, bouncer_x, bouncer_y, 0);


al_flip_display();

}

}

while (1);


//________DESTRUIR_________

al_destroy_display(display);

//al_destroy_bitmap(Correndo);

al_destroy_bitmap(Cenario);

al_destroy_event_queue(event_queue);

al_destroy_timer(timer);

al_destroy_bitmap(blue);


return 0;



}


Share this post


Link to post
Share on other sites

  • Similar Content

    • By Roberto S. Santos
      Bom dia.
      Eu gostaria de postar uma foto do meu computador no facebok usando VB.NET com login automático.
      Teria como fazer em VB.net ou HTML ?
      Obrigado.
    • By Quencyjones79
      Olá boa tarde, sou iniciante na linguagem PHP, embora tenha umas noções básicas do código e estou com algumas dificuldades dúvidas no código que está a cor de laranja, se alguém que perceba de código PHP se me puder ajudar, agradecia imenso a ajuda.
       
       
      <?php 
      include "..\ligacao.php";
      ?>
               
      <?php
      $idFunc=$_POST['idFunc'];
      $NomeAlterado=$_POST['NomeAlterado'];
      $idLoja=$_POST['idLoja'];
      $permissao=$_POST['permissao'];
      if($idLoja=="Selecione..."){
          $idLoja=$_POST['idLojaAtual'];
      }
      if($permissao==NULL){
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc); 
       }else{    
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."', ativo_func='".$permissao."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc);
       }
      if($connfunc==1){
           print"<script> alert('Funcionário alterado com sucesso!');
                       location.href='../inserirfuncionario.php';</script>";
          exit;
      }else{
      print"<script> alert('Não foi possível alterar o Funcionário!');
          location.href='../inserirfuncionario.php';</script>";
      exit;
      }    
      ?>
       
      Atentamente,
       
      José Moreira
       
    • By Quencyjones79
      Olá boa tarde, sou iniciante na linguagem PHP, embora tenha umas noções básicas do código e estou com algumas dificuldades dúvidas no código que está a cor de laranja, se alguém que perceba de código PHP se me puder ajudar, agradecia imenso a ajuda.
       
       
      <?php 
      include "..\ligacao.php";
      ?>
               
      <?php
      $idFunc=$_POST['idFunc'];
      $NomeAlterado=$_POST['NomeAlterado'];
      $idLoja=$_POST['idLoja'];
      $permissao=$_POST['permissao'];
      if($idLoja=="Selecione..."){
          $idLoja=$_POST['idLojaAtual'];
      }
      if($permissao==NULL){
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc); 
       }else{    
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."', ativo_func='".$permissao."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc);
       }
      if($connfunc==1){
           print"<script> alert('Funcionário alterado com sucesso!');
                       location.href='../inserirfuncionario.php';</script>";
          exit;
      }else{
      print"<script> alert('Não foi possível alterar o Funcionário!');
          location.href='../inserirfuncionario.php';</script>";
      exit;
      }    
      ?>
       
      Atentamente,
       
      José Moreira
       
    • By flipmartinz13
      Alguém pode me ajudar nessa questão de C++? não estou conseguindo construir o algorítmo corretamente.

      5.92)    Faça um algoritmo que leia a matrícula, nome, sexo e três notas dos alunos de uma escola e obtenha os seguintes resultados:
      a) A matrícula da aluna que obteve a maior média.
      b) A matrícula do aluno que obteve a menor média.
      c) O percentual de mulheres na turma.
      d) Quantos alunos foram aprovados, independente do sexo.
      e) O percentual de alunas aprovadas.
      Obs.: o flag é uma matrícula igual a 0 (zero).
    • By flipmartinz13
      Estou tentando fazer esse exercício de introdução a programação em C++, e estou tendo dificuldades para criar os algoritmos. Alguém poderia me ajudar?


      Uma agência de turismo quer fazer um levantamento das praias da cidade para um programação turística de verão, sabendo-se que cada praia tem um nome e uma distância (em Km) do hotel. Criar um algoritmo que forneça os seguintes dados:
      18

       Porcentagem de turistas nas praias próprias do hotel
       A praia mais adiante
       Nome e distancia das praias não-próprias com distancia do hotel maior que 10 km.
      O algoritmo acaba quando se digita @ para nome da praia.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.