コード例 #1
0
ファイル: main.c プロジェクト: 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;
}
コード例 #2
0
ファイル: game.c プロジェクト: Roffelos/Psycho-Tetris
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);
		}
	}

}