|
FAQ | Calendário | Postagens do dia | Buscapé | Search |
|
Thread Tools |
Trooper
|
[AJUDA] Para quem sabe (um pouco) de C [v.2006]
25-04-06, 18:14
#1
ultimo semestre eu fiz esse topico:
http://forum.darkside.com.br/vb/showthread.php?t=4569 sobre um jogo da velha modificado.. valia 4 pts, fiquei com 3 (depois explico porquê) então.. o prof de estrutura de dados passou um jogo chamado sete e meio eu ja fiz (quase) tudo. só que eu pretendo fazer a parte grafica, mostrando a carta do baralho, propriamente dita.. atualmente aparece assim: |rei de copas| eu queria assim: ____________ | | | K | | | | | | copas | |__________.| não tá perfeito.. mas fica bem melhor. função "mostrabaralho": http://www.agiba.org/setemeio/mostrabaralho.txt código completo: http://www.agiba.org/setemeio/completo.txt código antigo: http://www.agiba.org/setemeio/antigo.txt olhem a função mostrabalho.. eu fiz uns if/elseif e nao aparece nada.. tem algo errado? ps.: tenho que mandar o jogo pro email do prof hoje abraço |
||||
Trooper
|
25-04-06, 18:27
#2
void mostraganhador(BARALHO ***,int *,int);
*** ? wtf !!! que esquema eh esse monte de pontero ai.... nunca usei isso HAEUOHEAO que seja, codigo ta mto grande, e se tu quiser fazer parte gráfico, q eh um saco, ainda mais em telinha dos, eu achava um cu quando professor pedia jogo, tipo, quebra cabeça de 8 peças, ou jogo da velha por ai... eu geralmente usava uma funçaozinha pronto, apagava a tela e imprima na cordenada q eu queria da tela.... #include<windows.h> void gotoxy(int lin, int col) { HANDLE hOut; COORD Position; hOut = GetStdHandle(STD_OUTPUT_HANDLE); Position.X = col; //coluna Position.Y = lin; //linha SetConsoleCursorPosition(hOut,Position); } ex: gotoxy(3,20); cout<<"xxxx"<<flush; cout<<"xxx"<<flush; gotoxy(4,20); cout<<"xxx"<<flush; //usa o endl ou flush no final das linhas |
Trooper
|
25-04-06, 18:33
#3
nao entendi
ponho isso onde? como? aweua sou burro Code:
for(a=0;a<qntcartas[i];a++) { if ((jogos[i][a]->face) == "as") facenova = 'A'; else if ((jogos[i][a]->face) == "dois") facenova = '2'; else if ((jogos[i][a]->face) == "tres") facenova = '3'; else if ((jogos[i][a]->face) == "quatro") facenova = '4'; else if ((jogos[i][a]->face) == "cinco") facenova = '5'; else if ((jogos[i][a]->face) == "seis") facenova = '6'; else if ((jogos[i][a]->face) == "sete") facenova = '7'; else if ((jogos[i][a]->face) == "valete") facenova = 'J'; else if ((jogos[i][a]->face) == "dama") facenova = 'Q'; else if ((jogos[i][a]->face) == "rei") facenova = 'K'; if ((jogos[i][a]->naipe) == "copas"){ printf("\n\t\t\t _____________"); printf("\n\t\t\t | |"); printf("\n\t\t\t | %s |", facenova); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | copas |"); printf("\n\t\t\t | |"); printf("\n\t\t\t |_____________|\n\n\n\n"); } else if ((jogos[i][a]->naipe) == "ouros"){ printf("\n\t\t\t _____________"); printf("\n\t\t\t | |"); printf("\n\t\t\t | %s |", facenova); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | ouros |"); printf("\n\t\t\t | |"); printf("\n\t\t\t |_____________|\n\n\n\n"); } else if ((jogos[i][a]->naipe) == "paus"){ printf("\n\t\t\t _____________"); printf("\n\t\t\t | |"); printf("\n\t\t\t | %s |", facenova); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | paus |"); printf("\n\t\t\t | |"); printf("\n\t\t\t |_____________|\n\n\n\n"); } else if ((jogos[i][a]->naipe) == "espadas"){ printf("\n\t\t\t _____________"); printf("\n\t\t\t | |"); printf("\n\t\t\t | %s |", facenova); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | |"); printf("\n\t\t\t | espadas |"); printf("\n\t\t\t | |"); printf("\n\t\t\t |_____________|\n\n\n\n"); } } |
Trooper
|
25-04-06, 18:38
#4
eh uma função, assim como qualquer outra, coloca no fim do código, faz o protótipo la em cima, dai ok
quando vc usar gotoxy(X,Y) , o curso vai parar nessa coordenada, dai vc imprime, no caso, vc fazendo em C, eh com printf, da printf no que vc quer, e xama gotoxy(x,y) pro cursor parar em outro lugar e imprimir em outro... simples =) ... faça um esquema pra apagar tela tbm e tals , apaga imprime como ta a jogada... mas de boa ??? vai da um trampo do caralho, fazer isso em C velho =/ se vai faze um código imenso.. pra mudar a cara do jogo soh, pode bugar besteira, e vc perder ponto ainda ! |
Trooper
|
25-04-06, 18:43
#5
heheh vou usar em outro prog q tenho pra fazer
mas vc sabe pq esse if nao tao funcionando? |
Trooper
|
25-04-06, 18:44
#6
TIPO ASSIM
else if ((jogos[i][a]->face) == "dois") face eh um char*.. nao existe TEXTO em C, existe uma CADEIA DE CARACTERES.. e isso faz MUITA diferença.. vc tah querendo comprar o valor de FACE (q eh um ponteiro) com uma cadeira de caracteres.. isso eh impossivel.. pq um ponteiro eh uma variavel LONG.. nao dah erro na hr de compilar nao? pra comparar 2 strings eh assim: else if (stricmp((jogos[i][a]->face), "dois") == 0) stricmp faz uma STRing case Insensitive CoMParison se quiser a versao case sensitive, eh strcmp() |
Trooper
|
25-04-06, 18:50
#7
carla perez
|
Trooper
|
25-04-06, 18:50
#8
não tinha visto isso zero, mas eh verdade
e outra #include<string.h> e vc soh pode comparar char do jeito q vc ta fazendo, tipo ... == 'a' , e nunca ... == "abc" ; se quiser comparar string (Cadeia de caracteres) usa as funções do string.h strcpy, stricmp, strcmp,etc .... Last edited by Star; 25-04-06 at 18:54.. |
Trooper
|
25-04-06, 18:55
#9
e outra
vc tah alocando espaço pro naipe e pro nome de cada carta.. MAS NAO TAH LIBERANDO vc dah free na carta, mas nao dah free nas propriedades dela e outra nao era, digamos assim, MUITO mais facil vc usar numeros pra representar cada carta (1 a 13) e cada naipe (0 a 3)? ae vc faz uma funcao pra traduzir o numero em string, ou mesmo um array.. tipo carta[11] = "valete" vantagens de se usar numeros pra representar cartas e naipes: - nao aloca tanta memoria - pode usar ateh um switch() invez de lotar de if() - mais facil de trabalhar (como comparar) |
Trooper
|
25-04-06, 18:58
#10
Code:
for(a=0;a<qntcartas[i];a++) { if(!(strcmp(jogos[i][a]->face,"as"))) ac[i]++; if(!(strcmp(jogos[i][a]->face,"dois"))) ac[i]+=2; if(!(strcmp(jogos[i][a]->face,"tres"))) ac[i]+=3; if(!(strcmp(jogos[i][a]->face,"sete"))) ac[i]+=7; if(!(strcmp(jogos[i][a]->face,"valete"))) ac[i]+=0.5; if(!(strcmp(jogos[i][a]->face,"dama"))) ac[i]+=0.5; if(!(strcmp(jogos[i][a]->face,"rei"))) ac[i]+=0.5; } mas valeu mesmo =] abração daqui a pouco eu posto como ficou |
Trooper
|
25-04-06, 20:11
#11
Code:
for(a=0;a<qntcartas[i];a++) { if (!(stricmp((jogos[i][a]->face), "as"))) facenova = 'A'; else if (!(stricmp((jogos[i][a]->face), "dois"))) facenova = '2'; else if (!(stricmp((jogos[i][a]->face), "tres"))) facenova = '3'; else if (!(stricmp((jogos[i][a]->face), "quatro"))) facenova = '4'; else if (!(stricmp((jogos[i][a]->face), "cinco"))) facenova = '5'; else if (!(stricmp((jogos[i][a]->face), "seis"))) facenova = '6'; else if (!(stricmp((jogos[i][a]->face), "sete"))) facenova = '7'; else if (!(stricmp((jogos[i][a]->face), "valete"))) facenova = 'J'; else if (!(stricmp((jogos[i][a]->face), "dama"))) facenova = 'Q'; else if (!(stricmp((jogos[i][a]->face), "rei"))) facenova = 'K'; if (!(stricmp((jogos[i][a]->naipe), "copas"))){ printf("\n\t\t _____________"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| %c |", facenova); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| COPAS |"); printf("\n\t\t| |"); printf("\n\t\t|_____________|\n\n\n\n"); } else if (!(stricmp((jogos[i][a]->naipe), "ouros"))){ printf("\n\t\t _____________"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| %c |", facenova); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| OUROS |"); printf("\n\t\t| |"); printf("\n\t\t|_____________|\n\n\n\n"); } else if (!(stricmp((jogos[i][a]->naipe), "paus"))){ printf("\n\t\t _____________"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| %c |", facenova); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| PAUS |"); printf("\n\t\t| |"); printf("\n\t\t|_____________|\n\n\n\n"); } else if (!(stricmp((jogos[i][a]->naipe), "espadas"))){ printf("\n\t\t _____________"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| %c |", facenova); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| |"); printf("\n\t\t| ESPADAS |"); printf("\n\t\t| |"); printf("\n\t\t|_____________|\n\n\n\n"); } } |
Banned
|
25-04-06, 20:28
#12
ae holocaust
era melhor fazer uma funcao "printCarta(nipe, facenova) nao?! |
Trooper
|
25-04-06, 20:35
#13
pensei nisso, mas so pensei qdo ja tava acabando
ja mandei email pro prof brigadão! |
Trooper
|
25-04-06, 21:40
#14
PAUS ?!?!?!
|
spkr
|
27-04-06, 06:34
#15
* punisher says: níd becâp!
já torrei o saco do eluan hoje e preciso da ajuda de vcs nerdz eu sou total noob em c, e varei anoite fazendo um jogo imbecil de adivinhação que eu, pra variar, deixei pra última hora... é pra entregar hoje a tarde bom, eu queria saber se tem alguma maneira de fazer leitura de um int sem mostrar na tela o que está sendo digitado. olha o código como tá.. se alguem puder dar alguma sugestão de melhoria, será totalmente bem-vindo http://dc.uel.br/~gfgilini/JOGO.C desisti do menu de dados por enquanto... se sobrar tempo eu faço :P |
Trooper
|
27-04-06, 07:12
#16
getch() pega um caracter e nao mostra na tela
ou vc quer um INT mesmo? vc pode fazer uma funcao q fike pegando caracteres (com getch) ateh o cara apertar enter, pq eu acho q nao tem um scanfwithoutecho() |
spkr
|
27-04-06, 07:26
#17
quero int
eu até pensei em fazer isso que vc falou, mas dae nao lembro se podia converte char pra int normalmente e tava cansado de pensa pq fiquei a noite toda nessa merda de programa uaieshesouiaseh |
Trooper
|
27-04-06, 07:36
#18
PUPU vc estah me decepcionando (na verdade eu nem te conheço entao nao poderia falar isso )
getch pega o caractere.. beleza.. mas um numero eh um caracter, nao eh? a) olha a tabela asc... eh soh fazer uma subtracao q vc transforma o caracter '1' no numero 1 mas nao eh soh isso, vc quer uma sequencia de numeros.. X) entao acho q seria mais facil vc ir alimentando um char* com os caracteres, e dps usar atoi (Array TO Integer.. pega um char* e retorna um int) c) ou transforma os char '1' pra 1 (se vc fizer 10 ifs eu te mato) e vai somando eles de acordo com a posicao (123 = 100 + 20 + 3) |
spkr
|
27-04-06, 07:42
#19
não sei usar ponteiro ainda
rá AEUSIOHESu ah foda-se a professora vai ter que aceitar desse jeito mesmo... eu usei coisa que ela nem passou ainda :P |
Master Chief
|
27-04-06, 09:37
#20
printf("Acertou! Praticamente uma Mae Dinah.");
ehauiehiauheaioehauoiehaoieha q porra eh essa pupu? euaiheiau |
spkr
|
27-04-06, 12:36
#21
curtiu?
ASUEIOAESUH |
spkr
|
27-04-06, 12:39
#22
cara eu to absurdamente lesado, não consigo nem pensa direito...
tenho que segura as ponta até 2h pra entrega o trabalho dps vo pra casa, num vo consegui assisti aula nesse estado nem sei quantas horas faz que eu to acordado |
Trooper
|
27-04-06, 12:45
#23
Aproveitando o tópico alguem sabe como eu pego uma string inteira sem usar gets() no C?
|
spkr
|
27-04-06, 12:49
#24
char[XX] variavel // XX=tamanho da string
scanf("%c",&variavel); acho |
Master Chief
|
27-04-06, 14:30
#25
tb acho...mas como sou um merda em c nao confirmo....mas eh bem por ae mesmo
|
Trooper
|
27-04-06, 15:41
#26
char variavel[10];
scanf("%s", &variavel); acho que tem que ser %s |
Trooper
|
27-04-06, 16:36
#27
scanf() e gets() pra pegar string eu nao recomendo nao... soh se for pra situacoes de teste, onde eh soh vc q vai digitar alguma coisa..
BUFFER OVERFLOW se vc define o buffer com 10 caracteres e o cara ultrapassar isso, soh deus sabe oq pode acontecer... maneira correta, como sugerida em http://www.itworld.com/nl/lnx_sec/12182001/ Code:
int main() { char buff[15] = {0}; fgets(buff, sizeof(buff), stdin); /*read at most 14 chars*/ } stdin eh o buffer de entrada Code:
int main() { char buf[15] = {0}; char buf2[15] = {0}; printf("Digita uma string aew: "); fgets(buf, sizeof(buf), stdin); fseek(stdin, 0, SEEK_END); printf("Manda otra: "); fgets(buf2, sizeof(buf2), stdin); printf("1: %s && 2: %s\n", buf, buf2); } e eu nunca usei esse negocio de "buf[15] = {0}", entao se der erro aew, tira o = {0} e dps de declarar define q buf[0] = '\0'; |
|
|