Untitled

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> int strTamanho (char str[1000]){ int i,tam=0; for(i=0; str[i]!='\0'; i++) tam++; return tam; } void strCopia(char str1[1000],char str2[1000]){ int i,j; for(i=0; str2[i]!='\0'; i++) str1[i]=str2[j]; str1[i]='\0'; } void strConcatena(char str1[1000],char str2[1000]){ int i,j=0,tam=0,tam2=0; for(i=0; str1[i]!='\0'; i++) tam++; for(i=0; str2[i]!='\0'; i++) tam2++; for(i=tam; i<(tam+tam2); i++){ str1[i]=str2[j]; j++; } str1[i]='\0'; } void strAdicionaChar(char str[1000], char c){ int i; while(str[i]!='\0') i++; str[i]=c; str[i+1]='\0'; } int validaEntradaLinhaColuna (int linha, char coluna){ if(linha>=1&&linha<=10){ if(coluna=='A') return 1; else if(coluna=='B') return 1; else if(coluna=='C') return 1; else if(coluna=='D') return 1; else if(coluna=='E') return 1; else if(coluna=='F') return 1; else if(coluna=='G') return 1; else if(coluna=='H') return 1; else if(coluna=='I') return 1; else if(coluna=='J') return 1; return 0; } return 0; } int validaPosicao (int mat[10][10],int barco,int linha,int coluna,char orientacao){ int i, j; if(orientacao=='H'){ for(j=coluna; j<(coluna+barco); j++){ if(mat[linha][j]!=0||i<0||j<0||i>9||j>9) return 0; } return 1; } else if(orientacao=='V'){ for(i=linha; i<(linha+barco); i++){ if(mat[i][coluna]!=0||i<0||j<0||i>9||j>9) return 0; } return 1; } } int podeAtirar (int mat[10][10],int linha,int coluna){ if(mat[linha][coluna]==-2) return 0; else if(mat[linha][coluna]==10) return 0; else if(mat[linha][coluna]==20) return 0; else if(mat[linha][coluna]==30) return 0; else if(mat[linha][coluna]==50) return 0; return 1; } void imprimeMensagem(char msg[1000]){ int i; printf("************************\n"); printf("*\n* "); for(i=0; msg[i]!='\0'; i++){ if(msg[i]!='!'||msg[i]=='.') printf("%c",msg[i]); } printf("\n"); printf("*\n"); printf("************************\n"); } char imprimeCelula (int celula,int etapa){ if(etapa==0){ if(celula<0) return '*'; else if(celula==1) return '1'; else if(celula==2) return '2'; else if(celula==3) return '3'; } else if(celula==-2) return 'x'; else if(celula==10 || celula==20 || celula==30) return 'N'; else if(celula==50) return 'A'; return '.'; } void imprimeTabuleiro (int mat[10][10], int etapa){ int i, j, celula; char a, im[10][10]; for(i=0; i<10; i++){ for(j=0; j<10; j++){ celula=mat[i][j]; a=imprimeCelula(celula,etapa); im[i][j]=a; } } printf(" "); for(i=63; i<75; i++){ if(i>64) printf(" %c",i); } printf("\n "); for(i=61; i<74; i++){ if(i>61){ printf(" #"); } } printf("\n"); for(i=0; i<10; i++){ if(i<9){ printf("0%d #", i+1); for(j=0; j<10; j++){ printf(" %c", im[i][j]); } printf(" #"); printf("\n"); } else{ printf("%d #", i+1); for(j=0; j<10; j++){ printf(" %c", im[i][j]); } printf(" #\n"); } } for(i=60; i<7; i++){ if(i>62){ printf(" #"); } } printf(" "); for(i=61; i<74; i++){ if(i>61) printf(" #"); } printf("\n"); } void posicionaBarco(int mat[10][10], int barco){ int i, j, l, c, dc=0; char coluna, orientacao; while(dc==0){ scanf(" %d %c", &l, &coluna); if(validaEntradaLinhaColuna(l, coluna)==1){ if(barco>1) scanf(" %c",&orientacao); else orientacao='H'; if(validaPosicao(mat, l, coluna, orientacao)==1){ l--; if(coluna=='A') c=0; else if(coluna=='B') c=1; else if(coluna=='C') c=2; else if(coluna=='D') c=3; else if(coluna=='E') c=4; else if(coluna=='F') c=5; else if(coluna=='G') c=6; else if(coluna=='H') c=7; else if(coluna=='I') c=8; else if(coluna=='J') c=9; if(barco==1 && mat[l][c]==0) dc++; else if(barco==2 && orientacao=='H' && mat[l][c]==0 && mat[l][c+1]==0 && c+1<=9) dc++; else if(barco==2 && orientacao=='V' && mat[l][c]==0 && mat[l+1][c]==0 && l+1<=9) dc++; else if(barco==3 && orientacao=='H' && mat[l][c]==0 && mat[l][c+1]==0 && mat[l][c+2]==0 && c+2<=9) dc++; else if(barco==3 && orientacao=='V' && mat[l][c]==0 && mat[l+1][c]==0 && mat[l+2][c]==0 && l+2<=9) dc++; else printf("Posicao indisponivel!\n"); } if(barco==1){ for(i=0; i<10; i++){ for(j=0; j<10; j++){ if(i==l&&j==c) mat[i][j]=1; else if((i==l-1||i==l||i==l+1)&&(j==c-1||j==c||j==c+1)) mat[i][j]=-1; } } } else if(barco==2){ if(orientacao=='H'){ for(i=0; i<10; i++){ for(j=0; j<10; j++){ if(i==l&&(j==c||j==c+1)) mat[i][j]=2; else if((i==l-1||i==l||i==l+1)&&(j==c-1||j==c||j==c+1||j==c+2)) mat[i][j]=-1; } } } else if(orientacao=='V'){ for(i=0; i<10; i++){ for(j=0; j<10; j++){ if((i==l||i==l+1)&&j==c) mat[i][j]=2; else if((i==l-1||i==l||i==l+1||i==l+2)&&(j==c-1||j==c||j==c+1)) mat[i][j]=-1; } } } } else if(barco==3){ if(orientacao=='H'){ for(i=0; i<10; i++){ for(j=0; j<10; j++){ if(i==l&&(j==c||j==c+1||j==c+2)) mat[i][j]=3; else if((i==l-1||i==l+1||i==l)&&(j==c||j==c-1||j==c+1||j==c+2||j==c+3)) mat[i][j]=-1; } } } else if(orientacao=='V'){ for(i=0; i<10; i++){ for(j=0; j<10; j++){ if(j==c&&(i==l||i==l+1||i==l+2)) mat[i][j]=3; else if((i==l-1||i==l+1||i==l+2||i==l+3||i==l)&&(j==c||j==c-1||j==c+1)) mat[i][j]=-1; } } } } } void atirar(int mat[10][10],int linha,int coluna){ if(mat[linha][coluna]==0||mat[linha][coluna]==-1) mat[linha][coluna]=-2; else if(mat[linha][coluna]==1) mat[linha][coluna]=10; else if(mat[linha][coluna]==2) mat[linha][coluna]=20; else if(mat[linha][coluna]==3) mat[linha][coluna]=30; } int calculaPontuacao(int mat[10][10],int linha,int coluna){ int a=0; if(mat[linha][coluna]==10){ mat[linha][coluna]=50; a=2; } if(mat[linha][coluna]==20){ if(mat[linha+1][coluna]==20){ mat[linha+1][coluna]=50; mat[linha][coluna]=50; a=4; } if(mat[linha-1][coluna]==20){ mat[linha-1][coluna]=50; mat[linha][coluna]=50; a=4; } if(mat[linha][coluna+1]==20){ mat[linha][coluna+1]=50; mat[linha][coluna]=50; a=4; } if(mat[linha][coluna-1]==20){ mat[linha][coluna-1]=50; mat[linha][coluna]=50; a=4; } return a; } if(mat[linha][coluna]==30){ if(mat[linha+2][coluna]==30&&mat[linha+1][coluna]==30){ mat[linha+2][coluna]=50; mat[linha+1][coluna]=50; mat[linha][coluna]=50; a=7; } else if (mat[linha-1][coluna]==30&&mat[linha-2][coluna]==30){ mat[linha-1][coluna]=50; mat[linha-2][coluna]=50; mat[linha][coluna]=50; a=7; } else if(mat[linha+1][coluna]==30&&mat[linha-1][coluna]==30){ mat[linha+1][coluna]=50; mat[linha-1][coluna]=50; mat[linha][coluna]=50; a=7; } else if(mat[linha][coluna+1]==30&&mat[linha][coluna+2]==30){ mat[linha][coluna+1]=50; mat[linha][coluna+2]=50; mat[linha][coluna]=50; a=7; } else if(mat[linha][coluna-1]==30&&mat[linha][coluna-2]==30){ mat[linha][coluna-1]=50; mat[linha][coluna-2]=50; mat[linha][coluna]=50; a=7; } else if(mat[linha][coluna+1]==30 && mat[linha][coluna-1]==30){ mat[linha][coluna+1]=50; mat[linha][coluna-1]=50; mat[linha][coluna]=50; a=7; } } return a; } int main(){ int mat[10][10],i,j,celula, l; char msg[1000]="Jogador 1 − Posicione o barco de tamanho 1 (1/6)", c; for(i=0; i<10; i++){ for(j=0; j<10; j++){ mat[i][j]=0; } } imprimeMensagem(msg); imprimeTabuleiro(mat, 1); posicionaBarco(mat, 1); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines