Jump to content
backdoor

Ajuda erro compilação código 4 em linha

Recommended Posts

backdoor

Boas

Depois de resolver alguns problemas que me apareceram durante a compilação, o programa já corre( jogo 4 em linha) no entanto ao escolher uma linha ele termina... estou a ficar sem ideias, podem ajudar-me ?

#include <stdio.h>
#include <stdlib.h>

char tabuleiro[6][7];

int inicio(void);
void inicia_tabuleiro(void);
void mostra_tabuleiro(void);
void jogada(int n, int jog, int tipo);
int jogada_Player(int jog);
void jogada_COM(int jog);
char fim_jogo(int n);
void finaliza(int ti, char venc);

int main(void)
{
char fim;
int n, jog, tipo;

printf("**************************4EMLINHA**************************\n\n\n");
tipo = inicio();
fim = ' '; n = 0; jog = 0;
inicia_tabuleiro();

do {
n++; if (jog==1) jog = 2; else jog = 1;
printf("Jogada %d \n \n", n);
mostra_tabuleiro();
jogada(n, jog, tipo);
fim = fim_jogo(n);
} while(fim == ' ');

finaliza(tipo,fim);

system("PAUSE");
return 0;
}

int inicio(void)
{
int ti;
printf("Escolha um modo de jogo: \n");
printf("1-Player/Player 2-Player/COM 3-COM/Player 4-COM/COM\n");
scanf("%d",&ti);
if(ti<1 || ti>4){
printf("Opcao invalida, tente novamente.\n");
inicio();
}
return ti;
}

void inicia_tabuleiro(void)
{
int x, y;

for(x=1; x<=6; x++)
for(y=1; y<=7; y++)
tabuleiro[x][y] = ' ';
}

void mostra_tabuleiro(void)
{
int x;
printf(" | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n");
printf(" |-----|-----|-----|-----|-----|-----|-----|\n");
for(x=1; x<=6; x++) {
printf(" | %c | %c | %c | %c | %c | %c | %c |\n",tabuleiro[x][1],tabuleiro[x][2],tabuleiro[x][3],tabuleiro[x][4],tabuleiro[x][5],tabuleiro[x][6],tabuleiro[x][7]);
if (x!=0)
printf(" |-----|-----|-----|-----|-----|-----|-----|\n");
}
printf("\n");
}

void jogada(int n, int jog, int tipo)
{

if (n % 2 == 1)
{
if (tipo<=2) jogada_Player(jog); else jogada_COM(jog);
}
else
{
if (tipo==1 || tipo==3) jogada_Player(jog); else jogada_COM(jog);
}
}

int jogada_Player(int jog)
{
int x, y, z, w, a, b, c, d, e;

z=6;
w=6;
a=6;
b=6;
c=6;
d=6;
e=6;


for(x=1; x<=6; x++){
if(tabuleiro[x][1]!= ' ') z--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][2]!= ' ') w--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][3]!= ' ') a--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][4]!= ' ') b--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][5]!= ' ') c--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][6]!= ' ') d--;
}
for(x=1; x<=6; x++){
if(tabuleiro[x][7]!= ' ') e--;
}

if(z<1 && y==1){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(w<1 && y==2){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(a<1 && y==3){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(b<1 && y==4){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(c<1 && y==5){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(d<1 && y==6){
printf("Jogada invalida!\n");
jogada_Player(jog);
}
if(e<1 && y==7){
printf("Jogada invalida!\n");
jogada_Player(jog);
}

printf("Selecione a coluna pretendida: ");
scanf("%d",&y);


if(y<1 || y>7){
printf("Jogada Invalida, tente novamente.\n");
jogada_Player(jog);
}

if(y==1){
if (jog==1) tabuleiro[z][1] = 'X'; else tabuleiro[z][1] = 'O';
return 1;
}
if(y==2){
if (jog==1) tabuleiro[w][2] = 'X'; else tabuleiro[w][2] = 'O';
return 1;
}
if(y==3){
if (jog==1) tabuleiro[a][3] = 'X'; else tabuleiro[a][3] = 'O';
return 1;
}
if(y==4){
if (jog==1) tabuleiro[b][4] = 'X'; else tabuleiro[b][4] = 'O';
return 1;
}
if(y==5){
if (jog==1) tabuleiro[c][5] = 'X'; else tabuleiro[c][5] = 'O';
return 1;
}
if(y==6){
if (jog==1) tabuleiro[d][6] = 'X'; else tabuleiro[d][6] = 'O';
return 1;
}
if(y==7){
if (jog==1) tabuleiro[e][7] = 'X'; else tabuleiro[e][7] = 'O';
return 1;
}


}



void jogada_COM(int jog)
{
int x, y;

for(x=1; x<=6; x++)
for(y=1; y<=7; y++)
if(tabuleiro[x][y]==' ') {
if (jog==1) tabuleiro[x][y] ='X'; else tabuleiro[x][y] ='O';
return ;
}
return;
}


char fim_jogo(int n){

int i;
int j;

for(i=0; i<6; i++){
for(j=0; j< (7 - 4); j++);
{
if(tabuleiro[i][j]!=' ' &&
tabuleiro[i][j]==tabuleiro[i][j+1] &&
tabuleiro[i][j]==tabuleiro[i][j+2] &&
tabuleiro[i][j]==tabuleiro[i][j+3])
return tabuleiro[i][j];
}
}


for(i=0; i<(6 - 4)/* nao e preciso procurar nas ultimas posicoes */; i++){
for(j=0; j< 7; j++){
if(tabuleiro[i][j]!=' ' &&
tabuleiro[i][j]==tabuleiro[i+1][j] &&
tabuleiro[i][j]==tabuleiro[i+2][j] &&
tabuleiro[i][j]==tabuleiro[i+3][j])
return tabuleiro[i][j];
}
}


for(i=0; i<(6 - 4)/* nao e preciso procurar nas ultimas posicoes */; i++){
for(j=0; j<(7 - 4)/* nao e preciso procurar nas ultimas posicoes */; j++){
if(tabuleiro[i][j]!=' ' &&
tabuleiro[i][j]==tabuleiro[i+1][j+1] &&
tabuleiro[i][j]==tabuleiro[i+2][j+2] &&
tabuleiro[i][j]==tabuleiro[i+3][j+3])
return tabuleiro[i][j];
}
}


for(i=0; i<(6 - 4)/* nao e preciso procurar nas ultimas posicoes */; i++){
for(j=0; j<(7 - 4)/* nao e preciso procurar nas ultimas posicoes */; j++){
if(tabuleiro[i][j+3]!=' ' &&
tabuleiro[i][j+3]==tabuleiro[i+1][j+2] &&
tabuleiro[i][j+3]==tabuleiro[i+2][j+1] &&
tabuleiro[i][j+3]==tabuleiro[i+3][j])
return tabuleiro[i][j];
}
}

if (n==42) return 'E';

return ' ';
}



void finaliza(int ti, char venc)

{

}

Edited by brunoais
tags code + geshi

Share this post


Link to post
Share on other sites
brunoais

Aonde é que é escolher 1 linha?

O que é que há entre a escolha da linha e a próxima ver que ele supostamente pararia?

(estou a perguntar isto para reduzir a quantidade de código em que tenho que procurar).

Já encontrei:

Estás a tratar um array como se ele começasse em 1. Os arrays são de 0 até ao tamanho-1.

Um array:

char a[5];

Tem as seguintes posições:

a[0], a[1], a[2], a[3], a[4]

E não:

a[1], a[2], a[3], a[4], a[5]

Edited by brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.