#include "car.h"
#include "display.h"
int main(){
char matrix[ROWS][COLUMNS];
Bloco tijolo;
int keypressed=0;
int cont=0;
int velocidade=2;
//apagar o cursor da tela
ShowConsoleCursor(0);
system("cls");
//posicao inicial do personagem
initBar(&tijolo);
//inicializando matriz
init(matrix);
//animação do jogo
while(keypressed != ESC){
gotoxy(0,0);
#if DEBUG == 1
printf("posicao = (%d, %d)\n", tijolo.i, tijolo.j);
printf("dimensao = (%d, %d)\n", tijolo.width, tijolo.height);
#endif
//posicionar o @ no meio da tela
drawBar(matrix, tijolo, PIXEL);
//mostro a matriz na tela
printMatrix(matrix);
//faça posição anterior do @ ser apagada
drawBar(matrix, tijolo, EMPTY);
//lendo teclas
keypressed = 0;
if(kbhit()) keypressed = getch();
if(keypressed==ARROWS) keypressed = getch();
switch(keypressed){
case (int)'a':
case (int)'A':
case LEFT:
if((matrix, tijolo, CHECK_SIDE, LEFT))
tijolo.j--; //vai para esquerda
break;
case TECLA_d:
case TECLA_D:
case RIGHT:
if((matrix, tijolo, CHECK_SIDE, RIGHT))
tijolo.j++; //vai para a direita
break;
}
}
system("pause");
return 0;
}
#include "car.h"
/*
Inicializa a matriz principal com 'espaços vazios'
*/
void init(char matrix[ROWS][COLUMNS]){
int i,j;
for(i=0; i<ROWS; i++){
for(j=0; j<COLUMNS; j++){
matrix[i][j] = ' ';
}
}
}
/*
Mostra o conteúdo da matriz principal na tela
do computador.
*/
void printMatrix(char matrix[ROWS][COLUMNS]){
int i, j;
printf("\t\t\t\t\t");
//Linha de cima
for (i = 0; i < COLUMNS + 2; i++)
{
printf("*");
}
printf("\n");
//Matriz do jogo
for (i = 0; i < ROWS; i++)
{
printf("\t\t\t\t\t*");
//parte da esquerda
if (i % 2 == 0)
printf("%c", 178);
else
printf(" ");
for (j = 0; j < COLUMNS; j++)
{
if (j > 1 & j < COLUMNS)
printf("%c", matrix[i][j]);
}
//parte da direita
if (i % 2 == 0)
printf("%c", 178);
else
printf(" ");
printf("*\n");
}
printf("\t\t\t\t\t");
//Linha de baixo
for (j = 0; j < COLUMNS + 2; j++)
{
printf("*");
}
printf("\n");
}
/*
Desenhar uma barra usando o simbolo do caracter ASCII
passado por parâmetro.
*/
void drawBar(char matrix[ROWS][COLUMNS], Bloco barra, int simbolo){
//Cabeça
matrix[barra.i][barra.j] = simbolo;
//Bracos
matrix[barra.i+1][barra.j+1] = simbolo;
matrix[barra.i+1][barra.j+2] = simbolo;
matrix[barra.i+1][barra.j-2] = simbolo;
matrix[barra.i+1][barra.j-1] = simbolo;
//Tronco
matrix[barra.i+1][barra.j] = simbolo;
matrix[barra.i+2][barra.j] = simbolo;
//Pernas
matrix[barra.i+3][barra.j+1] = simbolo;
matrix[barra.i+3][barra.j+2] = simbolo;
matrix[barra.i+3][barra.j-2] = simbolo;
matrix[barra.i+3][barra.j-1] = simbolo;
}
/*
Inicializar a peça do tipo barra
*/
void initBar(Bloco *barra){
barra->i = 15;
barra->j = COLUMNS/2;
barra->tipo = TIPO_I;
barra->orientacao = ORIENTACAO_LEFT;
barra->width = 5;
barra->height = 1;
#if DEBUG == 1
printf("posI: %d posJ: %d \n", barra->i, barra->j);
system("pause");
#endif
}
/*
Verifica a colisão de blocos
int collisionDetect(char matrix[ROWS][COLUMNS], Bloco barra){
}*/
/*
Verifica a colisão de barras
int collisionBar(char matrix[ROWS][COLUMNS], Bloco barra, int collideSides, int side){
}*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//Configuração das dimensões da matriz principal do jogo
#define COLUMNS 15
#define ROWS 25
//Configurações de layout
#define PIXEL 219
#define EMPTY 32
//Configuração de teclas
#define ESC 27
#define ARROWS 224
#define LEFT 75
#define RIGHT 77
#define TECLA_a 97
#define TECLA_d 100
#define TECLA_A 65
#define TECLA_D 68
#define TECLA_ESPACO 32
//Criando as orientações para as peças
#define ORIENTACAO_LEFT 2
#define TIPO_I 7
//Configurações do mecanismo de colisão
#define CHECK_SIDE 1
#define UNCHECK_SIDE 0
#define NONE 0
//Estrutura padrão de componentes
typedef struct{
int i; //posicao nas linhas da matriz
int j; //posicao nas colunas da matriz
int orientacao; //orientacao da peça
int tipo; //o tipo de peça (7 possíveis)
int width; //largura da peça
int height; //altura da peça
}Bloco;
/*
Inicializa a matriz principal com 'espaços vazios'
*/
void init(char matrix[ROWS][COLUMNS]);
/*
Mostra o conteúdo da matriz principal na tela
do computador.
*/
void printMatrix(char matrix[ROWS][COLUMNS]);
/*
Desenhar uma barra usando o simbolo do caracter ASCII
passado por parâmetro.
*/
void drawBar(char matrix[ROWS][COLUMNS], Bloco barra, int simbolo);
/*
Inicializar a peça do tipo barra
*/
void initBar(Bloco *barra);
/*
Verifica a colisão de blocos
int collisionDetect(char matrix[ROWS][COLUMNS], Bloco barra);*/
/*
Verifica a colisão de barras
int collisionBar(char matrix[ROWS][COLUMNS], Bloco barra, int collideSides, int side);*/