Advertisement
pauloludewig

Untitled

Jan 27th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <allegro.h>
  3. #include "structs.h"
  4. #define largura_da_tela 800
  5.  
  6. volatile int exit_program = FALSE; //sair do jogo, deixar numa forma global
  7. void fecha_programa()
  8. {
  9. exit_program = TRUE;
  10. }
  11. END_OF_FUNCTION(fecha_programa);
  12.  
  13. volatile int ticks = 0;
  14. void ticker()
  15. {
  16. ticks++;
  17. }
  18. END_OF_FUNCTION(ticker)
  19.  
  20. const int updates_per_second = 60; // Quantas vezes por segundo a tela será atualizada
  21.  
  22.  
  23.  
  24. int main()
  25. {
  26. //INSTALAR FUNÇÕES BÁSICAS DO ALLEGRO
  27.  
  28. allegro_init(); // 1ª função que vou chamar e vai iniciar algumas coisas básicas da biblioteca
  29.  
  30. install_timer(); // timer para tocar áudio e outros sons, tb para funcionar o mouse
  31. //configura o timer, PREPARANDO O TERRENO DO TIMER
  32. LOCK_VARIABLE(ticks);
  33. LOCK_FUNCTION(ticker); // eu não quero mexer com a função ticker, vou deixar o allegro mexer com ela
  34. //Criar o timer de verdade
  35. install_int_ex(ticker, BPS_TO_TIMER(updates_per_second));
  36.  
  37. install_keyboard(); // para usar o teclado
  38.  
  39. set_color_depth(32); //setar a profundidade das cores (32 bits)
  40. set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800,600, 0, 0 );
  41. /*setar video AUTODETECT roda na maioria dos computadores- 1º parametro é o driver de video, 2 e 3º resolução da tela x, y
  42. ultimos parametros tela virtual 0, 0 não vai ser utilizado*/
  43. set_window_title("Game_Freeway"); // o nome que vc quer que apareça na janela - *main.c
  44.  
  45. set_alpha_blender();
  46.  
  47.  
  48. LOCK_VARIABLE(exit_program);
  49. LOCK_FUNCTION(fecha_programa);
  50. set_close_button_callback(fecha_programa);
  51.  
  52. //O JOGO É QUASE UM LOOPING INFINITO, SÓ ACABA QUANDO O USUÁRIO SAI/exit (esc) - CRIAR um WHILE (um laço)
  53.  
  54. /*Ao invés de desenhar direto na tela, eu vou criar um tela auxiliar (buffer) p/ não piscar, desenhar tudo na tela aux,
  55. depois desenho o buffer na screen, depois eu limpo o buffer ao invés de limpar a tela */
  56.  
  57. /// BITMAPS
  58.  
  59. BITMAP* buffer = create_bitmap(SCREEN_W, SCREEN_H); //recebe como parametro a altura e a largura da tela
  60. // create_bitmap recebe este espaço scree_w e h ALOCADO DINAMICAMENTE
  61.  
  62. BITMAP* estrada = load_bitmap("pista.bmp", NULL);
  63. BITMAP* carroamarelo = load_bitmap("acarroamarelo.bmp", NULL);
  64. BITMAP* carroazul = load_bitmap("acarroazul.bmp", NULL);
  65. BITMAP* carroazulclaro = load_bitmap("acarroazulclaro.bmp", NULL);
  66. BITMAP* carrobranco = load_bitmap("acarrobranco.bmp", NULL);
  67. BITMAP* carroroxo = load_bitmap("acarroroxo.bmp", NULL);
  68. BITMAP* carroverde = load_bitmap("acarroverde.bmp", NULL);
  69. BITMAP* carrovermelho = load_bitmap("acarrovermelho.bmp",NULL);
  70. BITMAP* einstein = load_tga("einstein.tga", NULL);
  71.  
  72. /// POSIÇÃO DOS CARRINHOS (DEPOIS TENHO CRIAR UMA STRUCT PRA CADA CARRINHO)
  73.  
  74. carrinho carrinhoamarelo;
  75. carrinhoamarelo.pos_x=-80;
  76. carrinhoamarelo.pos_y=118;
  77.  
  78. carrinho carrinhoazul;
  79.  
  80. carrinhoazul.pos_x = -80;
  81. carrinhoazul.pos_y = 167;
  82.  
  83. carrinho carrinhoazulclaro;
  84.  
  85. carrinhoazulclaro.pos_x = -80;
  86. carrinhoazulclaro.pos_y = 219;
  87.  
  88. carrinho carrinhobranco;
  89.  
  90. carrinhobranco.pos_x = -80;
  91. carrinhobranco.pos_y = 267;
  92.  
  93. carrinho carrinhoroxo;
  94.  
  95. carrinhoroxo.pos_x = -80;
  96. carrinhoroxo.pos_y = 319;
  97.  
  98. carrinho carrinhoverde;
  99.  
  100. carrinhoverde.pos_x = -80;
  101. carrinhoverde.pos_y = 370;
  102.  
  103. carrinho carrinhovermelho;
  104.  
  105. carrinhovermelho.pos_x = -80;
  106. carrinhovermelho.pos_y =418;
  107.  
  108. while(!exit_program)
  109. {
  110. //PARA O TIMER COMEÇAR A FUNCIONAR
  111.  
  112. while(ticks == 0)
  113. {
  114. rest(1); // esperar uma unidade de tempo do meu processador
  115. }
  116.  
  117. ///LOGIC
  118.  
  119. while(ticks >0)
  120. {
  121. int old_ticks = ticks;
  122.  
  123.  
  124. ///INPUT /*onde vc detecta a entrada do teclado do mouse ou demais entradas do usuário */
  125.  
  126. if (key[KEY_ESC])
  127. exit_program = TRUE;
  128.  
  129.  
  130. ///UPDATE - onde vc vai atualizar o status do jogo, vai usar diversas variáveis (LÓGICA DO JOGO)
  131.  
  132. carrinhoamarelo.pos_x += 2.3;
  133. carrinhoazul.pos_x += 3.5;
  134. carrinhoazulclaro.pos_x += 4;
  135. carrinhobranco.pos_x += 4.5;
  136. carrinhoroxo.pos_x += 2.1;
  137. carrinhoverde.pos_x += 3;
  138. carrinhovermelho.pos_x += 2.5;
  139.  
  140. //Se o carrinho saiu da tela, volta pra posição inicial
  141. if(carrinhoamarelo.pos_x>largura_da_tela)
  142. {
  143. carrinhoamarelo.pos_x = -80;
  144. }
  145.  
  146. if(carrinhoazul.pos_x > largura_da_tela)
  147. {
  148. carrinhoazul.pos_x = -80;
  149. }
  150.  
  151.  
  152. if(carrinhoazulclaro.pos_x > largura_da_tela)
  153. {
  154. carrinhoazulclaro.pos_x = -80;
  155. }
  156.  
  157.  
  158. if(carrinhobranco.pos_x > largura_da_tela)
  159. {
  160. carrinhobranco.pos_x = -80;
  161. }
  162.  
  163.  
  164. if(carrinhoroxo.pos_x > largura_da_tela)
  165. {
  166. carrinhoroxo.pos_x = -80;
  167. }
  168.  
  169.  
  170. if(carrinhoverde.pos_x > largura_da_tela)
  171. {
  172. carrinhoverde.pos_x = -80;
  173. }
  174.  
  175. if(carrinhovermelho.pos_x > largura_da_tela)
  176. {
  177. carrinhovermelho.pos_x = -80;
  178. }
  179.  
  180. ticks--;
  181. if(old_ticks <= ticks) // a logica demorou muito, aborta e desenha a tela
  182. break;
  183.  
  184. }
  185. ///DRAW - parte do desenho, onde vamos desenhar na tela - o allegro tem ponteiro pra bitmap (que é o screen)
  186. // tudo que vc desenha no screen aparece na tela
  187.  
  188. /*circlefill(buffer, pos_x, 110, 57, makecol(0,255,0));
  189. draw_sprite(screen, buffer, 0, 0); //desenhar na tela(sprit_in), desenhar o buffer na screen, e na posição que eu quero desenhar, buffer e screen mesmo tamanho, então posição inicial 0,0)
  190. clear(buffer); */
  191.  
  192. draw_sprite(buffer, estrada, 0,0);
  193. draw_sprite(buffer, carroamarelo,carrinhoamarelo.pos_x, carrinhoamarelo.pos_y);
  194. draw_sprite(buffer, carroazul,carrinhoazul.pos_x, carrinhoazul.pos_y);
  195. draw_sprite(buffer, carroazulclaro,carrinhoazulclaro.pos_x, carrinhoazulclaro.pos_y);
  196. draw_sprite(buffer, carrobranco, carrinhobranco.pos_x, carrinhobranco.pos_y);
  197. draw_sprite(buffer, carroroxo,carrinhoroxo.pos_x,carrinhoroxo.pos_y);
  198. draw_sprite(buffer, carroverde,carrinhoverde.pos_x,carrinhoverde.pos_y);
  199. draw_sprite(buffer, carrovermelho, carrinhovermelho.pos_x, carrinhovermelho.pos_y);
  200. draw_trans_sprite(buffer, einstein, 368, 522);
  201. draw_sprite(screen,buffer,0,0);
  202. }
  203.  
  204. ///FINALIZAÇÃO
  205. destroy_bitmap(buffer); //como parametro coloco o ponteiro do bitmap que eu quero destruir
  206. destroy_bitmap(estrada);
  207. destroy_bitmap(carroamarelo);
  208. destroy_bitmap(carroazul);
  209. destroy_bitmap(carroazulclaro);
  210. destroy_bitmap(carrobranco);
  211. destroy_bitmap(carroroxo);
  212. destroy_bitmap(carroverde);
  213. destroy_bitmap(carrovermelho);
  214. destroy_bitmap(einstein);
  215.  
  216. allegro_exit();
  217. return 0;
  218. }
  219.  
  220. END_OF_MAIN();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement