Ir para conteúdo

Arquivado

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

Pablo Goulart

Como da "zoom" no jogo ?

Recommended Posts

Estou desenvolvendo um jogo de guerra e plataforma, mas quando compilo o programa o personagem e o cenário ficam muito pequenos, então eu gostaria de saber com que deixar o cenário e o personagem mais "perto" tipo super mario bros do nintendinho.

 

#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 { KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT };
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[4] = { false, false, false, false };
bool redraw = true;
bool doexit = 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");
if (!Blue) {
al_show_native_message_box(display, "Error", "Error", "Failed to load image!",
NULL, ALLEGRO_MESSAGEBOX_ERROR);
al_destroy_display(display);
return 0;
}
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(3.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_TIMER) {
if (key[KEY_UP] && bouncer_y >= 4.0) {
bouncer_y -= 4.0;
}
if (key[KEY_DOWN] && bouncer_y <= SCREEN_H - BLUE - 4.0) {
bouncer_y += 4.0;
}
if (key[KEY_LEFT] && bouncer_x >= 4.0) {
bouncer_x -= 4.0;
}
if (key[KEY_RIGHT] && bouncer_x <= SCREEN_W - BLUE - 4.0) {
bouncer_x += 4.0;
}
redraw = true;
}
else if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
break;
}
else if (ev.type == ALLEGRO_EVENT_KEY_DOWN) {
switch (ev.keyboard.keycode) {
case ALLEGRO_KEY_W:
key[KEY_UP] = true;
break;
case ALLEGRO_KEY_S:
key[KEY_DOWN] = true;
break;
case ALLEGRO_KEY_A:
key[KEY_LEFT] = true;
break;
case ALLEGRO_KEY_D:
key[KEY_RIGHT] = true;
break;
}
}
else if (ev.type == ALLEGRO_EVENT_KEY_UP) {
switch (ev.keyboard.keycode) {
case ALLEGRO_KEY_W:
key[KEY_UP] = false;
break;
case ALLEGRO_KEY_S:
key[KEY_DOWN] = false;
break;
case ALLEGRO_KEY_A:
key[KEY_LEFT] = false;
break;
case ALLEGRO_KEY_D:
key[KEY_RIGHT] = 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, 0, 0, 0);
al_draw_bitmap(Blue, bouncer_x, bouncer_y, 0);
al_flip_display();
}
}
while (1);
//________DESTRUIR_________
al_destroy_display(display);
al_destroy_bitmap(Blue);
al_destroy_bitmap(Cenario);
al_destroy_event_queue(event_queue);
al_destroy_timer(timer);
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por theuz bergles
      QUERO CRIAR UM GAME, MAS NÃO TENHO CONHECIMENTO PARA TAL.
       
      Olá! A minha ideia é criar um jogo de terror, que tenha realmente uma pegada de medo no psicológico do jogador. Mas como eu disse no título, não possuo conhecimento para tal criação e estou buscando profissionais (podem ser amadores também) que queiram trabalhar nisso comigo. A seguir, estará a apresentação da minha ideia inicial: 
       
       
      •O jogo seria em uma igreja abandonada, onde seriam feitas perguntas, uma de cada vez, em alguma parte (porta, janela, parede, chão, teto...) de um cômodo aleatório do ambiente escolhido. Obs: Perguntas  Sempre vai ter um ponto de interrogação (“?”) ao final de cada pergunta feita pelo demônio. Obs: Respostas  no cômodo estaria escrito “A RESPOSTA É...” e as respostas estariam apresentadas em alternativas: “A), B), C) e D)” e a resposta certa deverá ser falada em voz alta, através do microfone ligado ao seu computador: “A RESPOSTA É A ALTERNATIVA D)”, por exemplo. Obs: As perguntas e respostas sempre vão seguir os padrões grifados com as aspas (“ ”). •Para que tenhamos mais interatividade, o jogador terá que dizer em voz alta, através do microfone conectado ao seu computador, as perguntas escritas pelo demônio, pois assim, o jogo irá entender que você visualizou a pergunta feita, irá processar e, em seguida, escrever a resposta da forma citada acima. E com a resposta (uma das alternativas apresentadas), você também terá que dizer em voz alta através do microfone conectado ao seu computador. •Lembrando que, como o personagem principal tem conhecimento em Latim, as perguntas podem aparecer no respectivo idioma. Porém, se isso acontecer, o demônio irá traduzir a pergunta para o seu idioma, falando em voz alta. (E isso está incluído como fenômeno paranormal) •O jogo terá um sistema de sanidade mental, que funcionaria como uma espécie de vida para o personagem, iniciando com 100%, e diminuindo ao longo do tempo. Caso você presencie alguma atividade paranormal, fique na escuridão por algum tempo, tenha alguma manifestação do tabuleiro Ouija ou responda alguma pergunta de forma incorreta, a perda de sanidade será maior, e se chegar a 0%, o demônio matará o personagem instatâneamente. •Quanto menos sanidade, mais fenômenos irão acontecer e, consequentemente, mais rápido chegará a 0. Para retardar essa ocorrência, estaremos implementando pílulas, que funcionarão como remédios para aumentar parte da sanidade, e diminuir, temporariamente, a perda precoce da mesma. Ainda assim, mesmo com esse retardo, teremos crucifixo e água benta, que vão ajudar no mantimento temporário da sanidade atual, mesmo que ocorram fenômenos naturais. Depois de algum tempo, o crucifixo quebrará e se tornará inútil, e a água benta terá efeito imediato, porém durará apenas algum tempo. •No início da Gameplay, o personagem começará com uma vela acesa (uma das velas que foram usadas no uso do tabuleiro Ouija) e terá que tomar cuidado para a vela não apagar, seja por causa da tempestade fora da Igreja, seja por causa dos fenômenos paranormais. •Caso a vela seja apagada, por quaisquer dos motivos acima, não se preocupe! Nós fornecemos um isqueiro e uma lanterna, que estão pela Igreja. Mas tome cuidado! Como o isqueiro funciona com gás e a cada uso parte do gás é consumido, o isqueiro tem a quantidade de usos limitado. E a lanterna, como funciona a pilhas, caso acabe as que já estão nela, você pode encontrar outras pelo caminho. Se não conseguir encontrar, bom, você já sabe o que lhe aguarda... •As luzes dos cômodos podem ser acesas, ou apagadas caso o demônio intervenha ou caso a tempestade rompa os cabos de energia. (Caso as luzes sejam religadas sozinhas ou caso você as consiga ligar, logo depois que elas foram desligadas, com certeza foi o demônio. Ou seja, pode ser considerado um fenômeno paranormal.) •Caso as perguntas sejam respondidas da maneira correta, mais um efeito será adicionado na trilha sonora, deixando-a mais apavorante e, consequentemente, deixando o jogador com mais medo. •Um sistema de “Conquistas” será adicionado, para que o jogador sempre jogue buscando obter todas elas. •Se o jogador responder até 3 perguntas de forma incorreta, ele perderá uma quantidade aleatória de sanidade a cada resposta errada, podendo chegar a 0 instantâneamente, até a terceira resposta dada, e, consequentemente, morrendo por este motivo. •Caso o jogador consiga se manter vivo até o final (se ele não morrer imediatamente no primeiro, segundo ou terceiro erro) ou responda de forma correta todas as perguntas feitas, o exorcismo no demônio é feito e ele consegue salvar seu amigo. •Em algumas perguntas específicas, você pode interagir com o tabuleiro Ouija para obter a resposta. Obs: Mas lembre-se que você perderá sanidade ao fazer isso. •Ao ver as perguntas e respostas escritas, sua sanidade também cairá, já que, se não é você quem está escrevendo-as, quem será? (considerado fenômeno sobrenatural.) •Não necessariamente, se você ouvir algum ruído do ambiente, significa que seja algum fenômeno. Pode ser consequência da tempestade no ambiente externo. (Portas fechando, janelas batendo, sino tocando, trovões.) Obs: Gritos, soluços, risadas, choros, batidas na porta, portas trancadas (não tem como uma igreja abandonada ter portas trancadas) são considerados fenômenos.
    • Por TkCode
      Estou tentando desenvolver um código para calcular o valor final de custas de imoveis.
      Exemplo: Entro com um valor de R$50.000,00. Tem o ITBI que é 2% sob os R$50.000,00 + o valor de custas que é o valor de uma tabela (essa tabela tem valores que de R$0,01 até R$17.800,90 é uma valor, e assim sucessivamente)
       
      Então teria que calcular os 2% (do valor informado) + o valor da tabela, dando um resultado final com o valor total (2%+ValorTabela).
       
      Alguem teria como me dar uma dica de como resolver isso?
      Desde já agradeço!
    • Por 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.
    • Por Bruno de Souza23
      Bom dia pessoal. Estou com um probleminha. Preciso desenvolver um jogo Simples para a empresa onde eu trabalho. O problema é que eu não sou bom nesse tipo de desenvolvimento e eu preciso fazer esse jogo para que eu possa entrar no setor em que eu realmente estudei. Preciso de uma ajuda para fazer esse desenvolvimento. Alguém poderia me dar essa dica ou uma ideia? Não sei por onde começar.
    • Por 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
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.