Ir ao conteúdo
  • Cadastre-se

vangodp

Membro Pleno
  • Posts

    1.752
  • Cadastrado em

  • Última visita

Tudo que vangodp postou

  1. @PenseC você copiou o código da internet?
  2. fiz esse jogo uma vez. Lembro que precisei de duas matrizes, uma para posicionar as células e outra para atualizar, pois se você atualizar a célula na mesma matriz o resultado é ruim. Se quiserem ver está o tal programa deixo aqui embaixo. Esta feito em c++ e SFML. Não precisa de nada, é só abrir o "jogo da vida.cbp" e compilar. https://drive.google.com/drive/folders/1Tn80d7Xj819zD9xKb3pe2Q9k1-JvmC0F?usp=sharing o código é algo velho, se poderia melhorar muita coisas mas me contento com ver funcionando. XD mas como falei se pode ver a lógica nesse pedaço: for(int i = 0; i < ALTO; i++) { for(int j = 0; j < ANCHO; j++) { colindantes = 0; ((i - 1) < 0 || (j - 1) < 0) ? 0 : (MUERTA == m[i - 1][j - 1]) ? 0 : colindantes++; //arriba-izquierda ((i - 1) < 0) ? 0 : (MUERTA == m[i - 1][j ]) ? 0 : colindantes++; //arriba ((i - 1) < 0 || (j + 1) >= ANCHO) ? 0 : (MUERTA == m[i - 1][j + 1]) ? 0 : colindantes++; //arriba-derecha ((j - 1) < 0) ? 0 : (MUERTA == m[i ][j - 1]) ? 0 : colindantes++; //izquierda ((j + 1) >= ANCHO) ? 0 : (MUERTA == m[i ][j + 1]) ? 0 : colindantes++; //derecha ((i + 1) >= ALTO || (j - 1) < 0) ? 0 : (MUERTA == m[i + 1][j - 1]) ? 0 : colindantes++; //abajo-izquierda ((i + 1) >= ALTO) ? 0 : (MUERTA == m[i + 1][j ]) ? 0 : colindantes++; //abajo ((i + 1) >= ALTO || (j + 1) >= ANCHO) ? 0 : (MUERTA == m[i + 1][j + 1]) ? 0 : colindantes++; //abajo-derecha if(VIVA == m[i][j]) { if(colindantes < 2) { n[i][j] = MUERTA; } if(colindantes == 2 || colindantes == 3) { n[i][j] = VIVA; } if(colindantes > 3) { n[i][j] = MUERTA; } } if(MUERTA == m[i][j]) { if(colindantes == 3) { n[i][j] = VIVA; } } } } Como podem ver tenho 2 matrizes chamadas m e n. Primeiro passo casinha(célula) por casinha da matriz m, averiguando todas as posições "colindantes"(células adjacentes... é meio español o algoritmo hahah) e contando quantas células existem ao lado, e guardo o resultado na matriz n conforme as regras do criador do jogo(pode buscar jogo da vida na wikipedia). Logo mostro n na tela, depois faço uma copia de n em m e repito o processo. Uma melhoria seria evitar essa copia. Como? intercalando, mostrando uma vez n e outra m por exemplo, seria menos custoso para o programa. Bom... tenho que ir. Espero que sirva. não tenho ele feito em C e pior para console, mas a lógica é essa ai mais ou menos, é só mudar ele para console. Quero melhorar ele um dia quando tiver mais tempo. Depois passo e explico melhor se querem.
  3. Toda a ajuda é sempre bem vinda por aquele que a necessita. As pessoas que entram aqui fazendo perguntas muitas vezes ignoram o bem que faz ter alguém aí sempre para ajudar sem animo de lucros. Por isso gosto desse fórum, n pelo dono e sim pela comunidade. Um forte abraço a todos e n liguem se sou um pouco vida loca hahaha.
  4. poderia postar o tal arquivo? N precisa ser inteiro, com 2 ou 3 linhas seria suficiente.
  5. fico só imaginando o que você ia montar com tudo o que você falou shuesuhesuhe. você tem algum canal... sei lá, no youtube por exemplo? Algum blog?
  6. Acho que não deveria jamais usar fflush junto com stdin. Tem outras formas de esvaziar o buffer ou evitar que entre "lixo" no buffer, se pesquisar aqui mesmo no fórum você pode ver umas quantas. O fflush junto com stdio pode ter efeitos imprevisíveis no programa e fazer ele falhar, quanto antes você entender isso antes você se cura deste vicio. Vaticino que vai vir arf por aqui também pra falar sobre o "lixo" Espero que ele com sua paciência lhe faça uma boa guia sobre isso. Para você ter uma ideia do que to falando poderia dar uma lida aqui: Outra leitura poderia ser: https://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/
  7. você acha que eu vou ficar aqui escrevendo 20 posts com você? Que lhe diga o dono do tema se ele achar que resolveu ou não a questão. É a ele que você tem que escrever não a mim.
  8. Em vez de usar system para borrar toda a janela procure borrar só o que for alterado. cmd é um pé nos fundos para fazer jogos. você pode usar gotoxy para pular de um lugar a outro e alterar só o que for preciso, assim você ganhará em velocidade.
  9. Em um suposto caso simples pode até ser. Mas você pecou ao n dizer que sim tem algumas diferenças não é por estética como disse antes. Se o construtor da classe base tiver parâmetros é nesta lista que tem que dar os valores.
  10. você poderia ler ele como 1.50000 passar ele para string e mostrar o valor formatado
  11. A diferença é algo mias que simples ser "compacta e legível". Imagine o caso de você herdar de uma classe e precisar que os membros herdados tenham um valor antes mesmo que os proprios membros da sua classe... Para isso existe lista de inicialização. O outro é uma simples atribuição. E não só isso... Imagine o caso que você tenha uma constante como membro da sua classe... você acha que será capaz dar um valor inicial fazendo uma atribuição dentro do construtor? Somente se pode fazer isso na lista de inicialização. Se poderia dizer que são 2 coisas diferentes... construir e inicializar. Antes da chave de abertura do construtor é construção e depois da chave é atribuição. Imagine um caso no qual você tem um vehiculo e dentro tem o numero de rodas que seria uma constante... algo como isso: class vehiculo{ unsigned const int nRodas; }; você acha que poderia dar um valor assim? class vehiculo{ vehiculo(unsigned const int n) { this->nRodas = n; } unsigned const int nRodas; }; A unica forma de fazer isso é dando o valor na hora de "construir" a variável. Digo construir, mas é na hora de que a variável "ganha a memória", porque todos sabemos que dita variável constante n poderá tomar valor posteriormente. Si usamos listas de inicialização você sim poderá dar valor a dita variável: class vehiculo{ vehiculo(unsigned const int n): nRodas{n} {} unsigned const int nRodas; }; Então se poderia dizer que nomeConstrutor(atributos ou não) construção { atribuição } Depois da chave de abertura como podemos ver, se trata de atribuição. É como se a variável ja existisse e estivéssemos tentando dar um valor, coisa que com constantes n é possivel. Então meu caro @AdrianoSiqueira não é simples "estética", é algo mais complicado, porém n tanto. Se alguma vez se der o caso de que você por exemplo herdar de outra classe e precisar de que dita classe tenha que tomar certos valores antes de que os próprios membros, lista de inicialização é a melhor forma, porque uma vez que você passar da chave de abertura tudo já vai estar na memória e dai talvez seu programa seja capaz de n se comportar como você deseja.
  12. @MariScr quando aparecer o "before algo" ou o que é ser traduzido a "antes de algo", pode ser mesma linha ou na linha anterior o tal erro, ja que para o compilador n ha linha anterior, ele considera que tudo esta na mesma linha, e por isso devemos por ; para separar as sentenças. O treixo: char palavra [30],letra[1],secreta[30]; int tam,i,chances,acertos; bool acerto; chances=6; tam=0; i=0; acerto=false; acertos=0; cout << "Fala para seu amigo tampar os olhos e digite a palavra secreta: "; cin >> palavra; system("cls") ,return 0; } para o compilador tem o mesmo efeito que: char palavra [30],letra[1],secreta[30]; int tam,i,chances,acertos; bool acerto; chances=6; tam=0; i=0;acerto=false; acertos=0; cout << "Fala para seu amigo tampar os olhos e digite a palavra secreta: "; cin >> palavra; system("cls"); return 0;} Por isso o compilador fala "before"... por que si tudo tivesse na mesma linha, estaria before(antes do return neste caso)
  13. Os criadores do dev c++ original ja não continuam o projeto a muito tempo. No seu lugar há um substituto chamado dev c++ orwell, que é mantido por esse tal senhor chamado Orwell. diga de onde baixou o seu dev c++ para ver si esse é o problema. Si não busque no google "dev c++ orwell" e talvez com essa versão seja possivel. A pagina é essa si lhe interessa: http://orwelldevcpp.blogspot.com/ porém como pode observar essa versão ja é também algo meio que antiga(2015). Lhe sugiro que use algo mais atualizado como codeblocks ou visual studio entre outros.
  14. Se quer facilidades vai para C#. Se quer aprender no hard e saber o por que das coisas... então vai pro C++. Em outras palavras C# é C++ com rodinhas pra você n4ao se machucar quando cair. >_< Mas não pense que c# vai lhe facilitar tanto assim a vida. Prepare-se para noites e noites de leitura e e ensaios... essa é a vida de todo programador/estudante.
  15. coloque a seguinte linha no inicio do main: int main(){ srand ( time ( NULL ) ); ... Precisa fazer a inclusão da biblioteca time.h para usar a função time.
  16. talvez se pegar o código e passar ele para um arquivo .c e ir tentando compilar ele acho que você seria capaz de conseguir.
  17. A consulta é sobre c++. adicionado 19 minutos depois Si se trata de c++, e saltando todas essas funções que para mim são desconhecidas... Para usar string(me refiro a classe string de c++) junto com printf/scanf você deve fazer algo como isso: #include <iostream> using namespace std; int main (int argc, char* argv[]) { string s(100, '\0'); scanf("%s", s.c_str()); printf("%s", s.c_str()); } Se deve usar o construtor da classe string para dar um tamanho predefinodo, e como em C, n pode extrapolar esse tamanho. Talvez seja melhor usar o conjunto de recursos que lhe proporciona c++ como getline, cin, cout, etc, para manipular essa string.
  18. Não lhe entendo... você quer traduzir o que?
  19. Então você me esta dizendo que 0 em outras linguagens não é falso? Que é então? não há coisas como 0==0 em outras linguagens?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!