Darkside  

Voltar   Darkside > Darkside > Comunidade
FAQ Calendário Postagens do dia Buscapé Search

Responder
 
Thread Tools
Holocaust
Trooper
 

Steam ID: holozinho
Default [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





Holocaust is offline   Reply With Quote
Star
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

Star is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
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");
			}

		}
só queria saber pq nao ta imprimindo isso na tela

Holocaust is offline   Reply With Quote
Star
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 !

Star is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
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?

Holocaust is offline   Reply With Quote
ZeroCarontE
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()

ZeroCarontE is offline   Reply With Quote
Gerson
Trooper
 

25-04-06, 18:50 #7
carla perez

Gerson is offline   Reply With Quote
Star
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..
Star is offline   Reply With Quote
ZeroCarontE
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)

ZeroCarontE is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
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;
		}
eu sou burro mesmo.. ja tinha feito isso :/

mas valeu mesmo =] abração

daqui a pouco eu posto como ficou

Holocaust is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
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");
			}

		}

Holocaust is offline   Reply With Quote
maxcool
Banned
 

PSN ID: atcasanova
25-04-06, 20:28 #12
ae holocaust
era melhor fazer uma funcao "printCarta(nipe, facenova) nao?!

maxcool is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
25-04-06, 20:35 #13
pensei nisso, mas so pensei qdo ja tava acabando
ja mandei email pro prof

brigadão!

Holocaust is offline   Reply With Quote
petrasbut
Trooper
 

25-04-06, 21:40 #14
PAUS ?!?!?!

petrasbut is offline   Reply With Quote
punisher
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

punisher is offline   Reply With Quote
ZeroCarontE
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()

ZeroCarontE is offline   Reply With Quote
punisher
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

punisher is offline   Reply With Quote
ZeroCarontE
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)

ZeroCarontE is offline   Reply With Quote
punisher
spkr
 

27-04-06, 07:42 #19
não sei usar ponteiro ainda

AEUSIOHESu
ah foda-se a professora vai ter que aceitar desse jeito mesmo... eu usei coisa que ela nem passou ainda :P

punisher is offline   Reply With Quote
serjaum
Master Chief
 

Gamertag: serjaum
27-04-06, 09:37 #20
printf("Acertou! Praticamente uma Mae Dinah.");

ehauiehiauheaioehauoiehaoieha q porra eh essa pupu? euaiheiau

serjaum is offline   Reply With Quote
punisher
spkr
 

27-04-06, 12:36 #21
curtiu?
ASUEIOAESUH

punisher is offline   Reply With Quote
punisher
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

punisher is offline   Reply With Quote
landim
Trooper
 

Gamertag: rlandim Steam ID: ldmkz
27-04-06, 12:45 #23
Aproveitando o tópico alguem sabe como eu pego uma string inteira sem usar gets() no C?

landim is offline   Reply With Quote
punisher
spkr
 

27-04-06, 12:49 #24
char[XX] variavel // XX=tamanho da string
scanf("%c",&variavel);

acho

punisher is offline   Reply With Quote
serjaum
Master Chief
 

Gamertag: serjaum
27-04-06, 14:30 #25
tb acho...mas como sou um merda em c nao confirmo....mas eh bem por ae mesmo

serjaum is offline   Reply With Quote
Holocaust
Trooper
 

Steam ID: holozinho
27-04-06, 15:41 #26
char variavel[10];
scanf("%s", &variavel);

acho que tem que ser %s

Holocaust is offline   Reply With Quote
ZeroCarontE
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*/ 
}
isso vai ler SOH os 14 primeiros caracteres q o fulano digitou.. e os outros caracteres vao continuar no stdin.. se vc quiser ignorar os caracteres q sobraram (digamos q vc tenha q usar um fgets denovo) use fseek(stdin, 0, SEEK_END) pra mover o cursor ateh o fim do stdin

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);
}
ATENCAO: eu nao testei o codigo, e nao tenho certeza c o fgets() substitui o \n lido da stdin para \0 pra terminar a string.. entao c der merda, essa eh a possibilidade numero 1
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';

ZeroCarontE is offline   Reply With Quote
Responder


Regras de postagem
Você não pode criar novos tópicos
Você não pode postar
Você não pode enviar anexos
Você não pode editar seus posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Atalho para Fóruns



O formato de hora é GMT -3. horário: 04:27.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.