Ir para conteúdo
Fórum Script Brasil
  • 0

Criaçao do jogo Sudoku


duarte_valente

Pergunta

Colegas,dá me um erro e já não sei o que fazer.Para começar vou explicar aquilo que vou fazer: o meu projecto na universidade é criar um cursor e implementar na tabela e tb a implementação dos numeros atraves do numero de linha e de coluna.

Esta presente a funçao gotoxy para saber as cordenadas do referidos numeros e do cursor.Tambem esta presente a funçao textcolor para as corer da tebelado sudoku e do cursor.

agora o erro que me dá quando compilo é que diz que existe poucos argumentos na funçao, por isso queria uma ajuda.Preciso urgente até amanha a tarde.quem me podesse ajudar eu agradecia. mais uma coisa, a função é muito grande e peço desculpa eu colucar a funçao toda.mas assim já percebem o problema...


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define RESET 0
#define BRIGHT 1
#define DIM 2
#define UNDERLINE 3
#define BLINK 4
#define REVERSE 7
#define HIDDEN 8

#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7


void textcolor(int attr, int fg, int bg)
{
char command[13];
/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
printf("%s", command);
}

int gotoxy(int x, int y)
{
char essq[100];// String variable to hold the escape sequence
char xstr[100];// Strings to hold the x and y coordinates
char ystr[100];// Escape sequences must be built with characters
/*
** Convert the screen coordinates to strings
*/
sprintf(xstr, "%d", x);
sprintf(ystr, "%d", y);

/*
#
** Build the escape sequence (vertical move)
#
*/

essq[0] = '';
strcat(essq, "33[");
strcat(essq, ystr);

/*
** Described in man terminfo as vpa=\E[%p1%dd
** Vertical position absolute
*/

strcat(essq, "d");
/*
** Horizontal move
** Horizontal position absolute
*/
strcat(essq, "33[");
strcat(essq, xstr);
// Described in man terminfo as hpa=\E[%p1%dG
strcat(essq, "G");
/*
** Execute the escape sequence
** This will move the cursor to x, y
*/
printf("%s", essq);

}

int limpar_ecra()
{
int x,y;
for(y=1; y<60; y++)
{
for(x=1; x<160; x++)
{
gotoxy(x, y);
printf(" ");
}
}
}
void cursor(int coluna,int linha, int digito)
{
int x,y;
x=10+linha*4;
y=4+coluna*2;


if(coluna>=4)
{
y=6+coluna*2;
}
if(coluna>=7)
{
y=8+coluna*2;
}
if(linha>=4)
{
x=12+linha*4;
}
if(linha>=7)
{
x=14+linha*4;
}
if( digito>=9 || digito<=-1)
{
gotoxy(3,36);
printf("Nº do digito INCORRETO, numeros validos de 0 a 8");
}
gotoxy(x,y);
printf("%d",digito);


{
usleep(500000);
textcolor(WHITE,BLACK,BLACK);
{
gotoxy(x,y);
printf("|---|\n");
gotoxy(x,y+1);
printf("| |\n");
gotoxy(x,y+2);
printf("|---|\n");
}
usleep(500000);
textcolor(WHITE,BLACK,YELLOW);
{
gotoxy(x,y);
printf("|---|\n");
gotoxy(x,y+1);
printf("| |\n");
gotoxy(x,y+2);
printf("|---|\n");
}

gotoxy(1,28);
printf(" \n");

}
}
int repetir()
{
int i, j;
textcolor(BLACK, BLACK, BLACK);
limpar_ecra();
desenha_tabuleiro();
for(i=0; i<9; i++)
for(j=0; j<9; j++)
numero(i, j, j+80*i);

}
int digito()
{

int coluna,linha,digito;
textcolor(BLACK, BLACK, BLACK);
gotoxy(3,28);
textcolor(BRIGHT, GREEN, BLACK);
printf("introduza coluna linha:\n");
scanf("%d%d",&linha,&coluna);
if(coluna>=9 || coluna<=-1 || linha>=9 || linha<=-1)
{
gotoxy(3,34);
printf("Numero INCORRETO, numeros validos de 0 a 8");
return 0;
}
gotoxy(3,31);
printf("introduza numero:\n");
scanf("%d",&digito);
desenha_digito(coluna,linha,digito);
return 1;

}
int numero(int linha,int coluna)
{

gotoxy(3,32);
printf("Insira o numero da linha\n");
scanf("%d",&linha);
gotoxy(3,34);
printf("Insira o numero da coluna\n");
scanf("%d",&coluna);
cursor(linha,coluna);
return 0;

}
int tabela()
{
limpar_ecra();
gotoxy(1,3);
{
int a;
a = 1;
while( a <= 4 )
{
textcolor(BRIGHT,CYAN, BLACK);
printf("\t###########################################\n\n\n\n\n\n\n\n");
a++;
}
}
gotoxy(1,4);
{
int b;
b = 1;
while( b <= 12)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n");
b++;
}
}
gotoxy(1,5);
{
int c;
c = 1;
while( c <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
c++;
}
}
gotoxy(1,13);
{
int d;
d = 1;
while( d <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
d++;
}
}
gotoxy(1,21);
{
int e;
e = 1;
while( e <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
e++;
}
}
gotoxy(1,28);
printf(" \n");

}

int main()
{
int i;

tabela();

numero(2,4);

digito();

repetir();

return 0;
}



[/codebox]

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Bom cara eu tinha dado uma lida por cima d teu codigo

pensei q era esse o erro uhsauhas

mas agora eu coloquei para compila aq no Code::Blocks

e n da erro só nessa funçao

da erro

nas linhas

51

122

153

156

177

90

190

se tu ta usando o dev (q eu n uso mas usava)

ele encontra esse erro primero mas depois

talves ele encontre esses ai...

cara teu codigo ta com 7 erro pelomenos é o que ta dizendo aq

essa fução ae você teria q faze otra com o int digito separado talves

mas para pegar as cordenadas tem uma função q faz isso q eu lembre

na biblioteca windows e como tu usa o conio tu deve ta usando windows =P

falou

edit

ops tu n ta usando conio =P mas gotoxy n é da conio oÕ

Editado por wendell93
Link para o comentário
Compartilhar em outros sites

  • 0

cara,estou perdido.estive a ver os erros que você me deu nas devidas páginas e não percebo, isso está certo, eu tenho as bibliotecas para usar o textcolor,gotoxy e para a funçau usleep.

não percebo o erro.

Mais uma coisa eu uso o adjunta do linux e tb o Dev C++ e mesmo assim é o mesmo erro.

não tem uma ideia?mais facil..eu estou no meu primeiro ano de Engenharia Electrotecnica e tenho poucas bases de Programação.. Daquilo que eu sei, a diferença entre o dev e o adjunta são mts e certas referências não dão.

Link para o comentário
Compartilhar em outros sites

  • 0

bom cara eu n uso esse adjunta mas o dev eu ainda tenho aq

e eu declarei uma variavel so pra fica com 3 argumentos ali e ve se compilava

mas depois acuso os erros

bom vo te amostra

a linha

51 o erro é essq[0] = ''; tenta só abri ali ficando assim essq[0] = ' ';

q corrige

linha 122 usleep(500000); ta errado a forma de declara declara assim usleep(500.000); q corrige

erro 153 desenha_tabuleiro(); problema diz aq erro: desenha_tabuleiro(); não foi delcarado neste escopo

cara n consegui acha essa função no teu codigo =P

linha 156 numero(i, j, j+80*i);

olha a função como ela é int numero(int linha,int coluna)

linha 177 desenha_digito(coluna,linha,digito); erro: desenha_tabuleiro(); não foi delcarado neste escopo

também n achei esta ffunção

bom e os erro 90 e 190

são em função q os argumentos são 3 e tal...

bom espero q te ajude qualq coisa fale ae

falou ae t+ cara

Editado por wendell93
Link para o comentário
Compartilhar em outros sites

  • 0

cara, na percebo já corrigi os erros.Agora são os argumentos e já não sei o que fazer. A funçao esta corrigida assim como me disse.Que argumentos faltam pa eu terminar a funçao?? ajuda me..

[code
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define RESET 0
#define BRIGHT 1
#define DIM 2
#define UNDERLINE 3
#define BLINK 4
#define REVERSE 7
#define HIDDEN 8

#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7


void textcolor(int attr, int fg, int bg)
{
char command[13];
/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
printf("%s", command);
}

int gotoxy(int x, int y)
{
char essq[100];// String variable to hold the escape sequence
char xstr[100];// Strings to hold the x and y coordinates
char ystr[100];// Escape sequences must be built with characters
/*
** Convert the screen coordinates to strings
*/
sprintf(xstr, "%d", x);
sprintf(ystr, "%d", y);

/*
#
** Build the escape sequence (vertical move)
#
*/

essq[0] = '';
strcat(essq, "33[");
strcat(essq, ystr);

/*
** Described in man terminfo as vpa=\E[%p1%dd
** Vertical position absolute
*/

strcat(essq, "d");
/*
** Horizontal move
** Horizontal position absolute
*/
strcat(essq, "33[");
strcat(essq, xstr);
// Described in man terminfo as hpa=\E[%p1%dG
strcat(essq, "G");
/*
** Execute the escape sequence
** This will move the cursor to x, y
*/
printf("%s", essq);

}

int limpar_ecra()
{
int x,y;
for(y=1; y<60; y++)

{

for(x=1; x<160; x++)
{

gotoxy(x, y);
printf(" ");

}

}
}
void desenha_cursor(int coluna,int linha, int digito)
{
int x,y;
x=10+linha*4;
y=4+coluna*2;


if(coluna>=4)
{
y=6+coluna*2;
}
if(coluna>=7)
{
y=8+coluna*2;
}
if(linha>=4)
{
x=12+linha*4;
}
if(linha>=7)
{
x=14+linha*4;
}
if( digito>=9 || digito<=-1)
{
gotoxy(3,36);
printf("Nº do digito INCORRETO, numeros validos de 0 a 8");
}
gotoxy(x,y);
printf("%d",digito);


{
usleep(500.000);
textcolor(WHITE,BLACK,BLACK);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}
usleep(500.000);
textcolor(WHITE,BLACK,YELLOW);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}

gotoxy(1,28);

printf(" \n");

}

}
int repetir()
{
int i, j;
textcolor(BLACK, BLACK, BLACK);
limpar_ecra();
desenha_tabuleiro();
for(i=0; i<9; i++)
for(j=0; j<9; j++)
numero(i, j,j+80*i);

}
int digito()
{

int coluna,linha,digito;
textcolor(BLACK, BLACK, BLACK);
gotoxy(3,28);
textcolor(BRIGHT, GREEN, BLACK);
printf("introduza coluna linha:\n");
scanf("%d%d",&linha,&coluna);
if(coluna>=9 || coluna<=-1 || linha>=9 || linha<=-1)
{
gotoxy(3,34);
printf("Numero INCORRETO, numeros validos de 0 a 8");
return 0;
}
gotoxy(3,31);
printf("introduza numero:\n");
scanf("%d",&digito);
desenha_cursor(linha,coluna,digito);
return 1;

}
int numero(int linha,int coluna)
{

gotoxy(3,32);
printf("Insira o numero da linha\n");
scanf("%d",&linha);
gotoxy(3,34);
printf("Insira o numero da coluna\n");
scanf("%d",&coluna);
desenha_cursor(linha,coluna);
return 0;

}
int desenha_tabuleiro()
{
limpar_ecra();
gotoxy(1,3);
{
int a;
a = 1;
while( a <= 4 )
{
textcolor(BRIGHT,CYAN, BLACK);
printf("\t###########################################\n\n\n\n\n\n\n\n");
a++;
}
}
gotoxy(1,4);
{
int b;
b = 1;
while( b <= 12)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n");
b++;
}
}
gotoxy(1,5);
{
int c;
c = 1;
while( c <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
c++;
}
}
gotoxy(1,13);
{
int d;
d = 1;
while( d <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
d++;
}
}
gotoxy(1,21);
{
int e;
e = 1;
while( e <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
e++;
}
}
gotoxy(1,28);
printf(" \n");

}

int main()

{

int i;


desenha_tabuleiro();

numero(2,4);

digito();

repetir();


return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define RESET 0
#define BRIGHT 1
#define DIM 2
#define UNDERLINE 3
#define BLINK 4
#define REVERSE 7
#define HIDDEN 8

#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7


void textcolor(int attr, int fg, int bg)
{
char command[13];
/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
printf("%s", command);
}

int gotoxy(int x, int y)
{
char essq[100];// String variable to hold the escape sequence
char xstr[100];// Strings to hold the x and y coordinates
char ystr[100];// Escape sequences must be built with characters
/*
** Convert the screen coordinates to strings
*/
sprintf(xstr, "%d", x);
sprintf(ystr, "%d", y);

/*
#
** Build the escape sequence (vertical move)
#
*/

essq[0] = '';
strcat(essq, "33[");
strcat(essq, ystr);

/*
** Described in man terminfo as vpa=\E[%p1%dd
** Vertical position absolute
*/

strcat(essq, "d");
/*
** Horizontal move
** Horizontal position absolute
*/
strcat(essq, "33[");
strcat(essq, xstr);
// Described in man terminfo as hpa=\E[%p1%dG
strcat(essq, "G");
/*
** Execute the escape sequence
** This will move the cursor to x, y
*/
printf("%s", essq);

}

int limpar_ecra()
{
int x,y;
for(y=1; y<60; y++)

{

for(x=1; x<160; x++)
{

gotoxy(x, y);
printf(" ");

}

}
}
void desenha_cursor(int coluna,int linha, int digito)
{
int x,y;
x=10+linha*4;
y=4+coluna*2;


if(coluna>=4)
{
y=6+coluna*2;
}
if(coluna>=7)
{
y=8+coluna*2;
}
if(linha>=4)
{
x=12+linha*4;
}
if(linha>=7)
{
x=14+linha*4;
}
if( digito>=9 || digito<=-1)
{
gotoxy(3,36);
printf("Nº do digito INCORRETO, numeros validos de 0 a 8");
}
gotoxy(x,y);
printf("%d",digito);


{
usleep(500.000);
textcolor(WHITE,BLACK,BLACK);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}
usleep(500.000);
textcolor(WHITE,BLACK,YELLOW);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}

gotoxy(1,28);

printf(" \n");

}

}
int repetir()
{
int i, j;
textcolor(BLACK, BLACK, BLACK);
limpar_ecra();
desenha_tabuleiro();
for(i=0; i<9; i++)
for(j=0; j<9; j++)
numero(i, j,j+80*i);

}
int digito()
{

int coluna,linha,digito;
textcolor(BLACK, BLACK, BLACK);
gotoxy(3,28);
textcolor(BRIGHT, GREEN, BLACK);
printf("introduza coluna linha:\n");
scanf("%d%d",&linha,&coluna);
if(coluna>=9 || coluna<=-1 || linha>=9 || linha<=-1)
{
gotoxy(3,34);
printf("Numero INCORRETO, numeros validos de 0 a 8");
return 0;
}
gotoxy(3,31);
printf("introduza numero:\n");
scanf("%d",&digito);
desenha_cursor(linha,coluna,digito);
return 1;

}
int numero(int linha,int coluna)
{

gotoxy(3,32);
printf("Insira o numero da linha\n");
scanf("%d",&linha);
gotoxy(3,34);
printf("Insira o numero da coluna\n");
scanf("%d",&coluna);
desenha_cursor(linha,coluna);
return 0;

}
int desenha_tabuleiro()
{
limpar_ecra();
gotoxy(1,3);
{
int a;
a = 1;
while( a <= 4 )
{
textcolor(BRIGHT,CYAN, BLACK);
printf("\t###########################################\n\n\n\n\n\n\n\n");
a++;
}
}
gotoxy(1,4);
{
int b;
b = 1;
while( b <= 12)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n");
b++;
}
}
gotoxy(1,5);
{
int c;
c = 1;
while( c <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
c++;
}
}
gotoxy(1,13);
{
int d;
d = 1;
while( d <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
d++;
}
}
gotoxy(1,21);
{
int e;
e = 1;
while( e <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
e++;
}
}
gotoxy(1,28);
printf(" \n");

}

int main()

{

int i;


desenha_tabuleiro();

numero(2,4);

digito();

repetir();


return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define RESET 0
#define BRIGHT 1
#define DIM 2
#define UNDERLINE 3
#define BLINK 4
#define REVERSE 7
#define HIDDEN 8

#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7


void textcolor(int attr, int fg, int bg)
{
char command[13];
/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
printf("%s", command);
}

int gotoxy(int x, int y)
{
char essq[100];// String variable to hold the escape sequence
char xstr[100];// Strings to hold the x and y coordinates
char ystr[100];// Escape sequences must be built with characters
/*
** Convert the screen coordinates to strings
*/
sprintf(xstr, "%d", x);
sprintf(ystr, "%d", y);

/*
#
** Build the escape sequence (vertical move)
#
*/

essq[0] = '';
strcat(essq, "33[");
strcat(essq, ystr);

/*
** Described in man terminfo as vpa=\E[%p1%dd
** Vertical position absolute
*/

strcat(essq, "d");
/*
** Horizontal move
** Horizontal position absolute
*/
strcat(essq, "33[");
strcat(essq, xstr);
// Described in man terminfo as hpa=\E[%p1%dG
strcat(essq, "G");
/*
** Execute the escape sequence
** This will move the cursor to x, y
*/
printf("%s", essq);

}

int limpar_ecra()
{
int x,y;
for(y=1; y<60; y++)

{

for(x=1; x<160; x++)
{

gotoxy(x, y);
printf(" ");

}

}
}
void desenha_cursor(int coluna,int linha, int digito)
{
int x,y;
x=10+linha*4;
y=4+coluna*2;


if(coluna>=4)
{
y=6+coluna*2;
}
if(coluna>=7)
{
y=8+coluna*2;
}
if(linha>=4)
{
x=12+linha*4;
}
if(linha>=7)
{
x=14+linha*4;
}
if( digito>=9 || digito<=-1)
{
gotoxy(3,36);
printf("Nº do digito INCORRETO, numeros validos de 0 a 8");
}
gotoxy(x,y);
printf("%d",digito);


{
usleep(500.000);
textcolor(WHITE,BLACK,BLACK);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}
usleep(500.000);
textcolor(WHITE,BLACK,YELLOW);
{
gotoxy(x,y);

printf("|---|\n");
gotoxy(x,y+1);

printf("| |\n");
gotoxy(x,y+2);

printf("|---|\n");
}

gotoxy(1,28);

printf(" \n");

}

}
int repetir()
{
int i, j;
textcolor(BLACK, BLACK, BLACK);
limpar_ecra();
desenha_tabuleiro();
for(i=0; i<9; i++)
for(j=0; j<9; j++)
numero(i, j,j+80*i);

}
int digito()
{

int coluna,linha,digito;
textcolor(BLACK, BLACK, BLACK);
gotoxy(3,28);
textcolor(BRIGHT, GREEN, BLACK);
printf("introduza coluna linha:\n");
scanf("%d%d",&linha,&coluna);
if(coluna>=9 || coluna<=-1 || linha>=9 || linha<=-1)
{
gotoxy(3,34);
printf("Numero INCORRETO, numeros validos de 0 a 8");
return 0;
}
gotoxy(3,31);
printf("introduza numero:\n");
scanf("%d",&digito);
desenha_cursor(linha,coluna,digito);
return 1;

}
int numero(int linha,int coluna)
{

gotoxy(3,32);
printf("Insira o numero da linha\n");
scanf("%d",&linha);
gotoxy(3,34);
printf("Insira o numero da coluna\n");
scanf("%d",&coluna);
desenha_cursor(linha,coluna);
return 0;

}
int desenha_tabuleiro()
{
limpar_ecra();
gotoxy(1,3);
{
int a;
a = 1;
while( a <= 4 )
{
textcolor(BRIGHT,CYAN, BLACK);
printf("\t###########################################\n\n\n\n\n\n\n\n");
a++;
}
}
gotoxy(1,4);
{
int b;
b = 1;
while( b <= 12)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n");
b++;
}
}
gotoxy(1,5);
{
int c;
c = 1;
while( c <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
c++;
}
}
gotoxy(1,13);
{
int d;
d = 1;
while( d <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
d++;
}
}
gotoxy(1,21);
{
int e;
e = 1;
while( e <= 3)
{
textcolor(BRIGHT,BLUE, BLACK);
printf("\t#| | | |#| | | |#| | | |#\n\n");
e++;
}
}
gotoxy(1,28);
printf(" \n");

}

int main()

{

int i;


desenha_tabuleiro();

numero(2,4);

digito();

repetir();


return 0;
}


}

Editado por duarte_valente
Link para o comentário
Compartilhar em outros sites

  • 0

o código que eu fiz até agora está assim.Mas não sei o que fazer para dar.

desculpa pela organização..

Existe as bibliotecas que em principio estão certas.A funçao textcolor serve para por a cor no cursor e na tabela.A função gotoxy é para as coordenadas. A função void desenha_cursor(int coluna,int linha, int digito) são os calculos para o cursor nos referidos quadrados da tabela do Sudoku, onde vai ser situado o cursor sem sair dos 81 quadrados . A função int repetir () vai repetir a pergunta várias vezes, sem ter de compilar as várias vezes. a funçao int digito() vai aceitar os numeros das linhas e das colunas entre 0 a 8 senao dá erro.A funçao int numero(int linha,int coluna) é onde vai aparecer o numero, depois de pedir a linha e a coluna( o numero vai aparecer no local do cursor ao mesmo tempo).A funçao int desenha_tabuleiro() é o tabuleiro do Sudoku.

Objectivo do jogo e do problema:

1)perguntar pela linha e coluna!!

2)perguntar pelo numero!!

3)o cursor PISCA nesse local e o numero aparece

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <string.h>

#define RESET        0
#define BRIGHT         1
#define DIM        2
#define UNDERLINE     3
#define BLINK        4
#define REVERSE        7
#define HIDDEN        8

#define BLACK         0
#define RED        1
#define GREEN        2
#define YELLOW        3
#define BLUE        4
#define MAGENTA        5
#define CYAN        6
#define    WHITE        7


void textcolor(int attr, int fg, int bg)
{
    char command[13];
    /* Command is the control command to the terminal */
    sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
    printf("%s", command);
}

int gotoxy(int x, int y) 
{    
    char essq[100];// String variable to hold the escape sequence
    char xstr[100];// Strings to hold the x and y coordinates
    char ystr[100];// Escape sequences must be built with characters
    /*
    ** Convert the screen coordinates to strings
    */
    sprintf(xstr, "%d", x);
    sprintf(ystr, "%d", y);
    
    /*
    #
    ** Build the escape sequence (vertical move)
    #
    */
    
    essq[0] = '';
    strcat(essq, "33[");
    strcat(essq, ystr);

    /*
    ** Described in man terminfo as vpa=\E[%p1%dd
    ** Vertical position absolute
    */

    strcat(essq, "d");
    /*
    ** Horizontal move
    ** Horizontal position absolute
    */
    strcat(essq, "33[");
    strcat(essq, xstr);
    // Described in man terminfo as hpa=\E[%p1%dG
    strcat(essq, "G");
    /*
    ** Execute the escape sequence
    ** This will move the cursor to x, y
    */
    printf("%s", essq);
    
}

int limpar_ecra()
{
    int x,y;
    for(y=1; y<60; y++)

    {

        for(x=1; x<160; x++)
        {

            gotoxy(x, y);
            printf(" ");

        }

    }
}

void desenha_cursor(int coluna,int linha, int digito)
{
    int x,y;
    x=10+linha*4;
    y=4+coluna*2;

        
    if(coluna>=4)
    {
        y=6+coluna*2;
    }
    if(coluna>=7)
    {
        y=8+coluna*2;
    }
    if(linha>=4)
    {
        x=12+linha*4;
    }
    if(linha>=7)
    {
        x=14+linha*4;
    }
    if( digito>=9 || digito<=-1)
    {
        gotoxy(3,36);
        printf("Nº do digito INCORRETO, numeros validos de 0 a 8");        
    }
    gotoxy(x,y);
    printf("%d",digito);
    

    {
            usleep(500.000);
            textcolor(WHITE,BLACK,BLACK);            
                {                
                gotoxy(x,y);

                printf("|---|\n");
                gotoxy(x,y+1);

                printf("|   |\n");
                gotoxy(x,y+2);

                printf("|---|\n");
                }
            usleep(500.000);
            textcolor(WHITE,BLACK,YELLOW);            
                    {                
                gotoxy(x,y);

                printf("|---|\n");
                gotoxy(x,y+1);

                printf("|   |\n");
                gotoxy(x,y+2);

                printf("|---|\n");
                    }
                
    gotoxy(1,28);

    printf("  \n");    

    }

}
int repetir()
{
    int i, j;
    textcolor(BLACK, BLACK, BLACK);
    limpar_ecra();
    desenha_tabuleiro();
    for(i=0; i<9; i++)
        for(j=0; j<9; j++)
            digito(i, j,j+80*i);
        
}
int digito()
{

    int coluna,linha,digito;
    textcolor(BLACK, BLACK, BLACK);
    gotoxy(3,28);
    textcolor(BRIGHT, GREEN, BLACK);
    printf("introduza coluna linha:\n");
    scanf("%d%d",&linha,&coluna);
    if(coluna>=9 || coluna<=-1 || linha>=9 || linha<=-1)
    {
        gotoxy(3,34);
        printf("Numero INCORRETO, numeros validos de 0 a 8");
        return 0;
    }
    gotoxy(3,31);
    printf("introduza numero:\n");
    scanf("%d",&digito);
    desenha_cursor(linha,coluna,digito);    
    return 1;

}
int numero(int linha,int coluna) 
{
        
        gotoxy(3,32);
        printf("Insira o numero da linha\n");
        scanf("%d",&linha);
        gotoxy(3,34);    
        printf("Insira o numero da coluna\n");
        scanf("%d",&coluna);
        desenha_cursor(linha,coluna,digito4);
        return 0;
       
}

int desenha_tabuleiro()
{
    limpar_ecra();
    gotoxy(1,3);
    {
        int a;
        a = 1;
        while( a <= 4 )
        {
            textcolor(BRIGHT,CYAN, BLACK);
            printf("\t###########################################\n\n\n\n\n\n\n\n");
            a++;    
        }
    }
    gotoxy(1,4);
    {
        int b;
        b = 1;
        while( b <= 12)
        {
            textcolor(BRIGHT,BLUE, BLACK);
            printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n"); 
            b++;
        }
    }
    gotoxy(1,5);
    {
          int c;
        c = 1;
        while( c <= 3)
        {    
            textcolor(BRIGHT,BLUE, BLACK);        
            printf("\t#|   |   |   |#|   |   |   |#|   |   |   |#\n\n");
            c++;
        }
    }
    gotoxy(1,13);
    {
          int d;
        d = 1;
        while( d <= 3)
        {    
            textcolor(BRIGHT,BLUE, BLACK);        
            printf("\t#|   |   |   |#|   |   |   |#|   |   |   |#\n\n");
            d++;
        }
    }
    gotoxy(1,21);
    {
          int e;
        e = 1;
        while( e <= 3)
        {    
            textcolor(BRIGHT,BLUE, BLACK);        
            printf("\t#|   |   |   |#|   |   |   |#|   |   |   |#\n\n");
            e++;
        }
    }
    gotoxy(1,28);
    printf("  \n");    
    
}

int main()

{

    int i;


    desenha_tabuleiro();
    
    numero();    

    digito();

    repetir(); 
    

        return 0;
}

Link para o comentário
Compartilhar em outros sites

  • 0

minhas dica cara primero se eu fosse tu colocaria todas as funçoes depois do main e declarava os prototicos...

para o codigo ficar mais organizado e evitar possiveis erros...

outra eu andei lendo sobre essa função usleep e dizem que ela n ta sendo mais usada...

outra teu programa ta com uns erros bobos olha um ex:

linha 170: digito(i, j,j+80*i);

logo a função ta delcarada assim: int digito()

como tu vai chamar ela com parametros se ela n tem =P

e otra uma função ali tu chama a função: desenha_cursor(linha,coluna,digito4);

obs: n tem nenhuma variavel chamada digito4 ali pta ti puder chamar ela assim...

bom cara teu codigo ta bem estranho usaha

e os erros tão praticamente todos em função dos argumentos tenta corrigilos...

falou

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...