Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define BOLD "\x1b[1m"
- #define ITALICO "\x1b[3m"
- #define REVERSE "\x1b[7m"
- #define INVISIVEL "\x1B[30m"
- #define VERMELHO "\x1B[31m"
- #define VERDE "\x1B[32m"
- #define AMARELO "\x1B[33m"
- #define AZUL "\x1B[34m"
- #define MAGENTA "\x1B[35m"
- #define CI "\x1B[36m"
- #define NORMAL "\x1B[0m"
- int movimentosX=1; /*Contador para auxiliar X em seu movimento aleatório.*/
- int movimentos = 400, pontos = 0; /*Movimentos restantes, e pontos, respecticamente.*/
- char tabuleiro[20][20]; /*Matriz para o tabuleiro.*/
- int positionX=-1; /*Posição do C no eixo X.*/
- int positionY=-1; /*Posição do C no eixo Y.*/
- int enemyX[3][2]; /*Inimigo X, o 3 é o numero de inimigos, e o 2, os eixos X e Y. */
- int enemyBX[3][5];
- int enemyBY[3][5];
- int enemyQ[2]; /*Inimigo Q, o 2 é o numero de eixos, X e Y.*/
- int flag = 0; /*Flag para indicar morte pelo inimigo Q.*/
- int contador_explosao = 1; /*Contador para numeros de jogadas até o Q explodir.*/
- void menu();
- int aleatorio (){
- return rand () % 4;
- }
- void criar_O (){
- tabuleiro[rand()%20][rand()%20] = 'O';
- }
- int aleatorioB (){
- return rand () % 4;
- }
- void criar_B(int t){
- int i;
- for (i=0;i<5;i++){
- enemyBY[t][i] = -1;
- enemyBX[t][i] = -1;
- }
- enemyBY[t][0] = rand () %20;
- enemyBX[t][0] = rand () %20;
- while (tabuleiro[enemyBX[t][0]][enemyBY[t][0]] != '.'){
- enemyBY[t][0] = rand () %20;
- enemyBX[t][0] = rand () %20;
- }
- tabuleiro[enemyBX[t][0]][enemyBY[t][0]] = 'B';
- }
- void move_B(){
- int i=0,j,auxX,auxY,u;
- for (u=0;u<3;u++){
- i = 0;
- auxX = enemyBX[u][0];
- auxY = enemyBY[u][0];
- if ((aleatorio() == 0) && (tabuleiro[enemyBX[u][i]+1][enemyBY[u][i]] == '.') && (auxX+1 <= 19)){
- while (tabuleiro[enemyBX[u][i]+1][enemyBY[u][i]] == 'B'){
- move_B();
- }
- auxX++;
- tabuleiro[auxX][auxY] = 'B';
- if ((enemyBX[u][4] != -1) && (enemyBY[u][4] != -1)){
- tabuleiro[enemyBX[u][4]][enemyBY[u][4]] = '.';
- }
- for (i=4;i>=1;i--){
- enemyBX[u][i] = enemyBX[u][i-1];
- enemyBY[u][i] = enemyBY[u][i-1];
- }
- }
- else if ((aleatorio() == 1) && (tabuleiro[enemyBX[u][i]-1][enemyBY[u][i]] == '.') && (auxX-1 >= 0)){
- while (tabuleiro[enemyBX[u][i]-1][enemyBY[u][i]] == 'B'){
- move_B();
- }
- auxX--;
- tabuleiro[auxX][auxY] = 'B';
- if ((enemyBX[u][4] != -1) && (enemyBY[u][4] != -1)){
- tabuleiro[enemyBX[u][4]][enemyBY[u][4]] = '.';
- }
- for (i=4;i>=1;i--){
- enemyBX[u][i] = enemyBX[u][i-1];
- enemyBY[u][i] = enemyBY[u][i-1];
- }
- }
- else if ((aleatorio() == 2) && (tabuleiro[enemyBX[u][i]][enemyBY[u][i]+1] == '.') && (auxY+1 <= 19)){
- while (tabuleiro[enemyBX[u][i]][enemyBY[u][i]+1] == 'B'){
- move_B();
- }
- auxY++;
- tabuleiro[auxX][auxY] = 'B';
- if ((enemyBX[u][4] != -1) && (enemyBY[u][4] != -1)){
- tabuleiro[enemyBX[u][4]][enemyBY[u][4]] = '.';
- }
- for (i=4;i>=1;i--){
- enemyBX[u][i] = enemyBX[u][i-1];
- enemyBY[u][i] = enemyBY[u][i-1];
- }
- }
- else if ((aleatorio() == 3) && (tabuleiro[enemyBX[u][i]][enemyBY[u][i]-1] == '.') && (auxY-1 >= 0)){
- while (tabuleiro[enemyBX[u][i]][enemyBY[u][i]-1] == 'B'){
- move_B();
- }
- auxY--;
- tabuleiro[auxX][auxY] = 'B';
- if ((enemyBX[u][4] != -1) && (enemyBY[u][4] != -1)){
- tabuleiro[enemyBX[u][4]][enemyBY[u][4]] = '.';
- }
- for (i=4;i>=1;i--){
- enemyBX[u][i] = enemyBX[u][i-1];
- enemyBY[u][i] = enemyBY[u][i-1];
- }
- }
- else{
- if ((enemyBX[u][4] != -1) && (enemyBY[u][4] != -1)){
- tabuleiro[enemyBX[u][4]][enemyBY[u][4]] = '.';
- }
- for (i=4;i>=1;i--){
- enemyBX[u][i] = enemyBX[u][i-1];
- enemyBY[u][i] = enemyBY[u][i-1];
- }
- }
- enemyBX[u][0] = auxX;
- enemyBY[u][0] = auxY;
- }
- }
- void criar_Q (){
- char personagem = 'Q';
- int x=rand()%20;
- int y=rand()%20;
- while (tabuleiro[x][y] != '.'){
- x=rand()%20;
- y=rand()%20;
- }
- tabuleiro[y][x] = personagem;
- enemyQ[0]=x;
- enemyQ[1]=y;
- }
- void explosao_Q(){
- int i,j,flag2;
- if ((contador_explosao % 5) == 0){
- contador_explosao = 1;
- /*# para baixo*/
- for (i=1;i<=8;i++){
- if ((enemyQ[1]+i) == 20){
- break;
- }
- else{
- if ((tabuleiro[enemyQ[1]+i][enemyQ[0]] == 'C')){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]+i][enemyQ[0]] = '#';
- flag = 1;
- }
- else if (tabuleiro[enemyQ[1]+i][enemyQ[0]] == '.'){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]+i][enemyQ[0]] = '#';
- }
- else {
- break;
- }
- }
- }
- /*# para cima*/
- for (i=1;i<=8;i++){
- if ((enemyQ[1]-i) < 0){
- break;
- }
- else{
- if ((tabuleiro[enemyQ[1]-i][enemyQ[0]] == 'C')){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]-i][enemyQ[0]] = '#';
- flag = 1;
- }
- else if (tabuleiro[enemyQ[1]-i][enemyQ[0]] == '.'){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]-i][enemyQ[0]] = '#';
- }
- else{
- break;
- }
- }
- }
- /*# para direita*/
- for (i=1;i<=8;i++){
- if ((enemyQ[0]+i) == 20){
- break;
- }
- else{
- if ((tabuleiro[enemyQ[1]][enemyQ[0]+i] == 'C')){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]][enemyQ[0]+i] = '#';
- flag = 1;
- }
- else if (tabuleiro[enemyQ[1]][enemyQ[0]+i] == '.'){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]][enemyQ[0]+i] = '#';
- }
- else{
- break;
- }
- }
- }
- /*# para esquerda*/
- for (i=1;i<=8;i++){
- if ((enemyQ[0]-i) < 0){
- break;
- }
- else{
- if ((tabuleiro[enemyQ[1]][enemyQ[0]-i] == 'C')){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]][enemyQ[0]-i] = '#';
- flag = 1;
- }
- else if (tabuleiro[enemyQ[1]][enemyQ[0]-i] == '.'){
- tabuleiro[enemyQ[1]][enemyQ[0]] = '#';
- tabuleiro[enemyQ[1]][enemyQ[0]-i] = '#';
- }
- else{
- break;
- }
- }
- }
- criar_Q();
- }
- else {
- contador_explosao++;
- for (i=0;i<20;i++){
- for (j=0;j<20;j++){
- if ((tabuleiro[i][j] == '#')){
- tabuleiro[i][j] = '.';
- }
- }
- }
- }
- }
- void criar_X(){
- for (int i=0;i<3;i++){
- char personagem = 'X';
- int x=rand()%20;
- int y=rand()%20;
- while (tabuleiro[x][y] != '.'){
- x=rand()%20;
- y=rand()%20;
- }
- tabuleiro[x][y] = personagem;
- enemyX[i][1] = x;
- enemyX[i][0] = y;
- }
- }
- void move_X(){
- int i;
- /*
- 0 = direita
- 1 = esquerda
- 2 = cima
- 3 = baixo
- */
- for (i=0;i<3;i++){
- if ((movimentosX % 4)==0){
- /*Aleatoriedade para a direita*/ /*enemyX[i][1] = X enemyX[i][0] = Y*/
- if (aleatorio()==0){
- if (enemyX[i][0]<=19){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][0] += 1;
- if (tabuleiro[enemyX[i][1]][enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][0]=enemyX[i][0]-2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- /*Aleatoriedade para esquerda*/
- else if (aleatorio()==1){
- if (enemyX[i][0]>0){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][0] -= 1;
- if (tabuleiro [enemyX[i][1]] [enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][0]=enemyX[i][0]+2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- /*Aleatoriedade para cima*/
- else if (aleatorio()==2){
- if (enemyX[i][1]>0){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX[i][1] -= 1;
- if (tabuleiro [enemyX[i][1]] [enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][1]=enemyX[i][1]+2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- /*Aleatoriedade para baixo*/
- else if (aleatorio()==3){
- if (enemyX[i][1]<19){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][1] += 1;
- if (tabuleiro[enemyX[i][1]][enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][1]=enemyX[i][1]-2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- }
- else {
- /*Movimenta X para cima*/
- if (enemyX[i][1]>positionX) {
- if (enemyX[i][1]>0){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX[i][1] -= 1;
- /*Checa se já tem um X na proxima posição*/
- if (tabuleiro [enemyX[i][1]] [enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][1]=enemyX[i][1]+2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- /*Movimenta X para baixo*/
- else if (enemyX[i][1]<positionX){
- if (enemyX[i][1] <= 19){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][1] += 1;
- /*Checa se já tem um X na proxima posição*/
- if (tabuleiro[enemyX[i][1]][enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][1]=enemyX[i][1]-2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- /*Movimenta X para direita*/
- else if (enemyX[i][0]<positionY){
- if (enemyX[i][0] > 0){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][0] += 1;
- //Checa se já tem um X na proxima posição
- if (tabuleiro[enemyX[i][1]][enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][1]=enemyX[i][0]-2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- //Movimenta X para esquerda
- else if (enemyX[i][0]>positionY){
- if (enemyX[i][0] <= 19){
- tabuleiro [enemyX[i][1]] [enemyX[i][0]] = '.';
- enemyX [i][0] -= 1;
- //Checa se já tem um X na proxima posição
- if (tabuleiro[enemyX[i][1]][enemyX[i][0]] == '.'){
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- else {
- enemyX[i][0]=enemyX[i][0]+2;
- tabuleiro[enemyX[i][1]][enemyX[i][0]] = 'X';
- }
- }
- }
- }
- //Captura o C, quando X toca nele.
- if ((tabuleiro[enemyX[i][1]][enemyX[i][0]]) == (tabuleiro[positionX][positionY])){
- system ("cls");
- printf("Voce foi capturado pelo X!\nPontos: %d\nDigite Enter para continuar!\n",pontos);
- system ("pause");
- system ("cls");
- movimentos = 400;
- menu();
- }
- }
- }
- /*Cria mapa do jogo*/
- void criar_tabuleiro(){
- int i,j;
- for (i=0;i<20;i++){
- for (j=0;j<20;j++){
- tabuleiro[i][j] = '.';
- }
- }
- }
- /*Mostra Tabuleiro na tela*/
- void printar_tabuleiro(){
- system ("cls");
- int i,j;
- printf ("\nMovimentos restantes: %d\n", movimentos);
- printf ("Pontos: %d\n",pontos);
- for (i=0;i<20;i++){
- for (j=0;j<20;j++){
- printf(" %c", tabuleiro[i][j]);
- }
- printf("\n");
- }
- }
- /*Cria personagem */
- void inserir_personagem(){
- char personagem = 'C';
- int x=rand()%20;
- int y=rand()%20;
- tabuleiro[x][y] = personagem;
- positionX=x;
- positionY=y;
- }
- int verificaTabuleiro(int x, int y) {
- //verifica se não ultrapassou os limites do tabuleiro
- if((y>19 || y<0) || (x>19 || x<0)) {
- return 0;
- }
- else {
- return 1;
- }
- }
- /*Move o personagem*/
- void mover_personagem(){
- char tecla;
- int i=0,j=0;
- scanf (" %c",&tecla);
- if(tecla=='w' || tecla=='W') {
- if (verificaTabuleiro(positionX-1,positionY)==1) { /*verifica se o C não irá sair do tabuleiro.*/
- if (tabuleiro[positionX-1][positionY] == 'O'){ /*Se C passar em cima do O, adicionará 10 pontos ao jogador.*/
- criar_O();
- pontos += 10;
- }
- tabuleiro[positionX][positionY]='.';
- positionX-=1;
- tabuleiro[positionX][positionY]='C';
- }
- }
- if(tecla=='s' || tecla=='S') {
- if (verificaTabuleiro(positionX+1,positionY)==1) { /*verifica se o C não irá sair do tabuleiro.*/
- if (tabuleiro[positionX+1][positionY] == 'O'){ /*Se C passar em cima do O, adicionará 10 pontos ao jogador.*/
- criar_O();
- pontos += 10;
- }
- tabuleiro[positionX][positionY]='.';
- positionX+=1;
- tabuleiro[positionX][positionY]='C';
- }
- }
- if(tecla=='a' || tecla=='A') {
- if (verificaTabuleiro(positionX,positionY-1)==1) { /*verifica se o C não irá sair do tabuleiro.*/
- if (tabuleiro[positionX][positionY-1] == 'O'){ /*Se C passar em cima do O, adicionará 10 pontos ao jogador.*/
- criar_O();
- pontos += 10;
- }
- tabuleiro[positionX][positionY]='.';
- positionY-=1;
- tabuleiro[positionX][positionY]='C';
- }
- }
- if(tecla=='d' || tecla=='D') {
- if (verificaTabuleiro(positionX,positionY+1)==1) { /*verifica se o C não irá sair do tabuleiro.*/
- if (tabuleiro[positionX][positionY+1] == 'O'){ /*Se C passar em cima do O, adicionará 10 pontos ao jogador.*/
- criar_O();
- pontos += 10;
- }
- tabuleiro[positionX][positionY]='.';
- positionY+=1;
- tabuleiro[positionX][positionY]='C';
- }
- }
- move_X();
- move_B();
- explosao_Q();
- printar_tabuleiro();
- }
- void menu(){
- int menu1,i,j;
- srand (time(0));
- printf ("\n_____________________________\n\nBEM VINDO AO C-BOY GAME!\n_____________________________\n\n");
- system ("pause");
- system ("cls");
- printf("1 - Jogar\n2 - Configuracoes\n3 - Ranking\n4 - Instrucoes\n5 - Sair\n");
- printf ("Digite sua opcao: ");
- scanf ("%d",&menu1);
- switch (menu1){
- printf("\n\n");
- case 1:
- pontos = 0;
- criar_tabuleiro();
- inserir_personagem();
- criar_O();
- criar_O();
- criar_X();
- criar_B(0);
- criar_B(1);
- criar_B(2);
- criar_Q();
- printar_tabuleiro();
- for (i=1;(i<=movimentos)&&(flag == 0);i++){
- mover_personagem();
- movimentos--;
- movimentosX++;
- }
- if (flag==1){
- system ("pause");
- system ("cls");
- printf("Voce foi explodido pelo Q.\nPontos: %d\n",pontos);
- system ("pause");
- system ("cls");
- flag = 0;
- movimentos = 400;
- menu();
- }
- break;
- /*case 2:
- Configurações
- case 3:
- Ranking*/
- case 4:
- system ("cls");
- printf ("O jogador controla o C no tabuleiro\n\nPara se movimentar eh necessario digitar uma teclar, ou uma sequencia de teclas, e apertar 'Enter'\n");
- printf ("\nControles:\nW - Cima\nS - Baixo\nA - Esquerda\nD - Direita\n");
- printf("\nInimigos:\n'O' - Inimigo passivo, o jogador ganha 10 pontos ao coleta-lo.\n'X' - Inimigo violento, persegue o jogador.\n'B' - Inimigo passiva, deixa um rastro que serve como uma barreira para o jogador, matando-o se passar por ele.\n");
- printf("\nPressione 5 para voltar ao menu.\n");
- scanf ("%d",&j);
- if (j == 5){
- system ("cls");
- menu();
- }
- break;
- //case 5:
- }
- }
- int main (){
- menu();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement