Ejemplo n.º 1
0
void		showgun(t_env *e)
{
	static int	ct = 0;

	move_bullets(e);
	if (ct == 5 && !(ct = 0))
		e->shooting = 0;
	if (e->shooting == 1)
	{
		ct++;
		if (ct == 1)
		{
			add_one_obj_tab(e);
			e->sprite_tab[e->sprites_nbr - 1].life = 0;
			e->sprite_tab[e->sprites_nbr - 1].pos_x = e->p.pos_x
				+ 0.5 * e->p.dir_x;
			e->sprite_tab[e->sprites_nbr - 1].pos_y = e->p.pos_y
				+ 0.5 * e->p.dir_y;
			e->sprite_tab[e->sprites_nbr - 1].dir_x = e->p.dir_x;
			e->sprite_tab[e->sprites_nbr - 1].dir_y = e->p.dir_y;
			e->sprite_tab[e->sprites_nbr - 1].plane_x = 0;
			e->sprite_tab[e->sprites_nbr - 1].plane_y = 1;
			e->sprite_tab[e->sprites_nbr - 1].tex_id = 13;
		}
	}
}
Ejemplo n.º 2
0
Archivo: game.c Proyecto: noox/Raketka
//posun hry o casovy tik
void update_game(float time, int k_up, int k_down, int k_right, int k_left, int k_fire) {
	//pozadi pro koncovy screen hry
	if (playerdead) { 
		move_stars(time);
		move_enemies(time);
		move_bullets(time);
		update_particles(time);
		move_bonuses(time);

		deathtimer-=time;
		if ((deathtimer<=0) && k_fire) { 
			//zacatek nove hry
			finish_game();
			init_game();
		}
	}

	else {
		handle_levels();
		
		//odecteni casu od casovacu bonusu
		shieldtimer-=time;
		canontimer-=time;

		reload+=time;

		//ovladani raketky (funkce z main.c)
		if (k_left) speedx-=time*1300;
		if (k_right) speedx+=time*1300;
		if (k_up) speedy+=time*1300;
		if (k_down) speedy-=time*1300;

		//strelba mozna jen po specifickem casovem intervalu 
		if (k_fire && ((canontimer>0)?(reload>(0.2/(plevel))):(reload>(0.5/(plevel*0.9))))) { 
			if (canontimer<=0)
				//strelba zavisla na power levelu
				add_bullet(posx, posy+50, 0, 200, plevel, 1, 1);
			else 
				//silenej gun po sebrani zeleneho bonusu
				add_bullet(posx, posy+50, 0.8*speedx+200*DFRAND*DFRAND*DFRAND, 300+speedy+20*DFRAND, 10*plevel, 1, 1); 
			reload=0;
		}
		
		//aplikace rychlosti raketky na pozici
		posx+=speedx*time;
		posy+=speedy*time;

		//aby raketka brzdila stejne pri ruznem frameratu
		speedx*=powf(0.02, time); //powf = exponenciela
		speedy*=powf(0.02, time);

		//okraje hraciho pole pro raketku
		if (posx<-225) {posx=-225; speedx=0;} 
		if (posx>225) {posx=225; speedx=0;}
		if (posy<-335) {posy=-335; speedy=0;}
		if (posy>-100) {posy=-100; speedy=0;}

		move_stars(time);
		move_enemies(time);
		move_bullets(time);
		update_particles(time);
		move_bonuses(time);
	}
}
Ejemplo n.º 3
0
void Game::run()
{
    move_invader();
    move_bullets();
    hit();
}
Ejemplo n.º 4
0
int modifica_janela(char **campos, int side, int codigo)
{
   int i;

   switch(codigo)
   {
      case NSH:

         if(strcmp(campos[1],"P2")==0)
            side=RIGHT;
         if(strcmp(campos[1],"P1")==0)
            side=LEFT;

         /**SE SYNC - TEM QUE ACTIVAR THREAD PARA ACTUALIZAR BALAS**/
         for ( i = 0; i < maxbalas; i++ )
         {
            if ( bullets[side][i].empty )
            {
               break;
            }
         }

         if ( i < maxbalas )
         {
            bullets[side][i].empty = FALSE;
            bullets[side][i].y = cowboys[side].y + 2;
/***BLOQUEAR*/
            cowboys[side].bulletsleft--;

            if ( side == LEFT )
            {
               bullets[side][i].x = cowboys[side].x+4;
               move(bullets[side][i].y, bullets[side][i].x);
               delch();
               insch('>');
            }
            else
            {
               bullets[side][i].x = cowboys[side].x-1;
               move(bullets[side][i].y, bullets[side][i].x);
               delch();
               insch('<');
            }
            refresh();
         }

         return FALSE;

      break;


      case REL:
/****BLOQUEAR***/
         cowboys[LEFT].bulletsleft=maxbalas;
         cowboys[RIGHT].bulletsleft=maxbalas;
         free(campos[0]);
         return FALSE;

      break;


      case BLT:
         /**Move as balas*/
         if(!check_dead(LEFT) && !check_dead(RIGHT))
         {
            for ( i = 0; i < maxbalas; i++ ) {
               if ( bullets[side][i].empty )
               {
                  break;
               }
            }

            if(i<maxbalas+1) move_bullets();
         }

         free(campos[0]);
         return FALSE;

      break;

      case MOV:
         if(strcmp(campos[1],"P1")==0)
            side = LEFT;
         else
            side = RIGHT;

         delete_cowboy(side);

         cowboys[side].y = atoi(campos[2]);

         draw_cowboy(side);
         return FALSE;
         break;

      case EOG:

         clear();

         if(strcmp(campos[1],"P1")==0)
         {
            mvwprintw(wnd, NROWS/2, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: ")+strlen(cowboys[LEFT].name))/2, "Vencedor da partida: %s",cowboys[LEFT].name);
            cowboys[LEFT].games=atoi(campos[2]);
         }
         else if(strcmp(campos[1],"P2")==0)
         {
            mvwprintw(wnd, NROWS/2, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: ")+strlen(cowboys[RIGHT].name))/2, "Vencedor da partida: %s",cowboys[RIGHT].name);
            cowboys[RIGHT].games=atoi(campos[2]);
         }
         else
         {
            mvwprintw(wnd, NROWS/2-4, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: JOGADOR EMPATE"))/2, "Vencedor da partida: Empate");
         }
         wtimeout(wnd,-1);

         mvwprintw(wnd, 0, 0, "High Noon - Projecto de Programacao de Sistemas");
         /**Colocar numero da partida?*/

         mvwprintw(wnd, 1, 0, "Fim da Partida Numero: %d",cowboys[RIGHT].games+cowboys[LEFT].games);

         mvwprintw(wnd, NROWS-1, 0, "Pressione uma tecla qualquer para começar um novo jogo\n");

         refresh();

         getch();

         clear();

         refresh();
         /**Recebe novamente tudo*/

         close_HN_window();

         /*delwin(wnd);*/

         boas_vindas(side,FALSE);

         com_partida(side);

         clear();

         refresh();

         draw_cowboy(LEFT);
         draw_cowboy(RIGHT);
         return FALSE;
         break;

      case EXT:
         if(strcmp(campos[1],"P1")==0)
            side = LEFT;
         else
            side = RIGHT;

         cowboys[side].games=atoi(campos[2]);

         cowboys[!side].games=atoi(campos[3]);

         return TRUE;
         break;

      case ERR:
         break;

      default:
         close_HN_window();
         printf("ERRO: Mensagem nao reconhecida!\n");
         exit(EXIT_FAILURE);
      break;

   }
   return FALSE;
}