Ejemplo n.º 1
0
int movimento(Tela* tela, int* pontuacao){
  
	int locked, resultado, cont, cont2, fechou = 0, gravidade = 1; // gravidade é o número de células que a peça cai a cada segundo.
	peca* tetromino = nova_peca(tela);
	struct pollfd poll1 = { STDIN_FILENO, POLLIN|POLLPRI };

	if(tetromino == NULL)
		return 1;

  	mostra_tela(tela);
  	refresh();

	locked = 0;
	while(locked == 0) {
		if(poll(&poll1, 1, (1000/gravidade))) {
			switch(getch()) {
				case KEY_UP:
					rotaciona_peca(tela,tetromino);
					break;
				case KEY_LEFT:
					move_peca_x(tela, tetromino, -1);
					break;
				case KEY_RIGHT:
					move_peca_x(tela, tetromino, 1);
					break;
				case KEY_DOWN:
					gravidade = gravidade*2;
					break;
				case 'q':  // 'q' de "Quit"
	      			return 1;
	      			break;
	      		default:
	      			break;
			}
		}
		else {
			resultado = move_peca_y(tela, tetromino);
			
			if (resultado < 5){
			locked = 1;
			}
		}
		mostra_tela(tela);
		refresh();	
	}
  
  	for(cont = 0; cont < 15; cont++){
	    fechou = 0;
	    for(cont2=0; cont2 < 25; cont2++){
	    	if(tela->matriz_gui[cont][cont2].caracter == 'X')
	      	fechou++;
  		}
    	if(fechou == 23){
    		*pontuacao += 1; 
    		deleta_linha(tela, cont);
    	}
  	}
    
  return 0;
}
Ejemplo n.º 2
0
int mostra_tela_placar(int pont){
	Tela* t = cria_tela();
	mostra_tela(t);

	cria_placar();
	atualiza_placar(pont);
	
	mostra_tela(t);
	mostra_placar();

	free(t);
	return 0;
}
Ejemplo n.º 3
0
	int main(){
	
	mostra_tela(*cria_tela);
	cria_tela(0,0,25,15);

	return 0;
	}
Ejemplo n.º 4
0
void teste_mostra_tela(void){
	int resultado;
	Tela* t;
	t = cria_tela();
	resultado = mostra_tela(t);
	CU_ASSERT_TRUE(!resultado);
	free(t);
}
Ejemplo n.º 5
0
int mostra_tela_final(int pont){
	Tela* t = cria_tela();
	mostra_tela(t);

	attrset(COLOR_PAIR(3));
	mvprintw(5, 8, "GAME OVER");
	attrset(COLOR_PAIR(2));
	mvprintw(10, 4, "Sua pontuação é:");
	mvprintw(11, 12, "%d", pont);

	free(t);
	return 0;
}
Ejemplo n.º 6
0
int mostra_tela_inicial(void){
	Tela* t = cria_tela();
	mostra_tela(t);

	attrset(COLOR_PAIR(3));
	mvprintw(5, 7, "LERY TETRIS");
	attrset(COLOR_PAIR(2));
	mvprintw(10, 3, "Pressione qualquer");
	mvprintw(11, 3, "tecla para começar");

	free(t);
	return 0;
}
Ejemplo n.º 7
0
Archivo: main.c Proyecto: lfmc/ps
int main(){
  inicia_ncurses();
  WINDOW* game = cria_tela();
  enable_keypad(game);
  cria_borda(game);
  tela_inicio(game);
  mostra_tela(game);
  int i;
  i = pega_input(game);
  formata_tela(game);
  cria_borda(game);
  tela_jogo(game);
  tp_peca peca = nova_peca();
  while(i!='q'){
    if(fim_do_movimento(game, &peca)){
      peca = nova_peca();
    }
    escreve_peca(game, peca);
    mostra_tela(game);
    apaga_peca(game, peca);
    if(movimento_valido(game, &peca, i)){
      mover_peca(&peca, i);
    }
    escreve_peca(game, peca);
    mostra_tela(game);
    i = pega_input(game);
    if(fim_do_movimento(game,  &peca)&&limite_superior(&peca)){
      break;
    }
  }
  formata_tela(game);
  cria_borda(game);
  tela_fim(game);
  mostra_tela(game);
  i = pega_input(game);
  finaliza_ncurses();
  return 0;
}
Ejemplo n.º 8
0
EXT_MOD_GAME void start_game(int difficulty)
{
	Tela *tela;
	Peca *peca, *prox_peca;
	int end=0, in;
	WINDOW* main;

	srand(time(NULL));
	tela = nova_tela();

	prox_peca = nova_peca(tela, -TELA_LARGURA/2, TELA_ALTURA/8-1);

	while(!end)
	{
		clock_t ini;
		peca = prox_peca;
		prox_peca = nova_peca(tela, -TELA_LARGURA/2, TELA_ALTURA/8-1);

		peca_move_x(peca, TELA_LARGURA);

		if(peca_touching(peca, tela, 's'))
		{
			deleta_peca(peca);
			break;
		}
		
		ini = clock();
		while(!end)
		{
			clock_t now;

			mostra_tela(tela);
			mostra_peca(peca);
			mostra_peca(prox_peca);
			refresh();

			in = pega_input(1);
			switch(in)
			{
				case 'S':
				case 's':
					if(!peca_touching(peca, tela, 's'))
						peca_move_y(peca, 1);		
				break;

				case 'A':
				case 'a':
					if(!peca_touching(peca, tela, 'a'))
						peca_move_x(peca, -1);
				break;

				case 'D':
				case 'd':
					if (!peca_touching(peca, tela, 'd'))
						peca_move_x(peca, 1);
				break;

				case ENTER:
					prende_peca(peca, tela);
				break;
				
				case 'q': 
				case 'Q':
					end = 1;
				break;

				case ESC:
					set_color(COR_TELA);
					mvaddstr(tela->y + TELA_ALTURA/2 -1, tela->x + TELA_LARGURA/2 + 2, "PAUSED");
					do {in = getch();}
					while(in != ESC && in!='q' && in!='Q');

					if(in == 'q' || in == 'Q')
					{
						end = 1;
						deleta_peca(peca);
					}
				break;		
			}
			clear();
			if(end) break;
			now = clock();
			if(now - ini > 5)
			{
				peca_move_y(peca, 1);
				ini = clock();
			}
			if(peca_touching(peca, tela, 's'))
			{
				prende_peca(peca, tela);
				deleta_peca(peca);
				break;
			}
		}

		if(endgame(tela))
		{
			end = 1;
			deleta_tela(tela);
		}
	}

}