Ir para conteúdo
Fórum Script Brasil

w0lv3r1n3

Membros
  • Total de itens

    38
  • Registro em

  • Última visita

Posts postados por w0lv3r1n3

  1. Cara....tenta da uma olhada sobre maquina finita de estados (FSM - finity state machine)

    ela funcionaria mais ou menos assim (pro batalha naval)

    2 estados:

    1 - Aleatorio

    2 - Destruir barco encontrado

    No modo aleatorio:

    fazer um random, e atirar, ateh acertar algum barco, dai voce muda o estado pra Destruir barco encontrado...

    No modo Destruir barco encontrado:

    voce tem que checar todos os lados que o barco podem estar, cima, baixo, esq, direita, e a quantidades de pecas q o barco tem (no caso de encontrar o P , 6).

    dai de acordo com a direcao escolhida voce vai atirar.... se for agua e a quantidade acertada ainda for menor que 6, escolhe outra direcao....

    ficando assim ateh chegar a quantidade acertada = a qtd de pecas...

    quando isso acontece, você muda pro estado aleatorio dinovo :D!!

    espero ter ajudado...dps quando tiver um tempo eu tento fazer um cod parecido pra você ve!!

    abrassss

  2. a logica é a seguinte....

    voce vai ter que ler o arquivo, e ir guardando tudo em uma estrutura....

    depois de ter feito isto é só voce escrever o conteudo que voce deseja (que voce vai ter na estrutura ) no arquivo de saida...

    para operacoes com arquivos da uma procurada nas funcoes fscanf, fprintf...

    qualquer duvida posta ae

    abrasss

  3. então.... achei alguns errinhos...

    ele não esta passando pela funcao, porque voce chama ela passando alguns parametros

    AI_PC(Jogador,Jogadorcm,y,z,Contador);

    tanto o y quanto o z estao valendo 0

    então ele entra nesse if:

    if ((z == 0) && (y == 0))

    e não passa pelo else, que é aonde tem a funcao:

    Computador_Joga

    ....fora isso voce ainda esta fazendo:

    ContadorJogador += O;

    (inteiro ) += O (letra O);

    não entendi qual o objetivo de somar a letra o nessa variavel....

    da uma reformulada no teu codigo....

    tenta fazer um esboco dele no papel...antes de comecar a programar

    tenta pensar em todas as logicas antes de comecar a programar também...

    qualquer coisa posta ai

  4. voce esta utilizando fscanf(file, "%s",dado);

    para uma variavel que eu acho que deve ser do tipo INT, (dado)...

    se a declaracao da tua variavel dado for = a :

    int dado;

    voce vai ter que usar %d ao invés de %s, agora se ela for char mesmo, voce vai precisar converter pra inteiro na hora da atribuicao

    (L.vetor.numInsc = atoi(dado))

    espero ter ajudado...

    abrasss

  5. cara...

    este tópico abaixo é quase a mesma coisa que voce quer.....

    ele procura no arquivo um texto....

    o que voce vai ter que fazer, é armazenr as tags existente em um vetor (ou lista, ou qualquer otra estrutura) , e depois ir lendo o arquivo, quando voce encontrar um texto q é = a tag de abertura, voce adiciona na pilha, quando voce encontrar a tag de fechamento voce desempilha...

    ex:

    if(!strcmp(szTexto, "<body>"))

    empilha "<body>"

    if(!strcmp(szTexto, "</body"))

    desempilha "<body">

    [tópico] Como fazer busca em arquivo

    abrass

  6. cara....eu fiz uma funcaozinha aqui...que poe qualquer barco q você desejar...

    (ela não ta muito boa não, porque eu tentei fazer de um jeito que voce não tivesse que arrumar o resto do teu codigo)

    segue a funcao:

    #define DIREITA     0
    #define ESQUERDA    1
    #define CIMA        2
    #define BAIXO       3
    
    void PlaceBoat(char cMatriz[][10], int iLenght, char cChar)
    {
        bool bPlaced = false;
        bool bTryPut = false;
        int iX, iY;
        int iDirs[4];
        
        while(!bPlaced)
        {
            iX = rand()%10;
            iY = rand()%10;
            if(cMatriz[iX][iY])
                continue;
            if(iLenght == 1)
            {
                cMatriz[iX][iY] = cChar;
                bPlaced = true;
                break;
            }
            
            for(int i = 0; i < 4; i++)
                iDirs[i] = 1;
                
            if(iX - iLenght < 0 )
                iDirs[DIREITA] = 0;
            if(iX + iLenght > 9 )
                iDirs[ESQUERDA] = 0;
            if(iY - iLenght < 0 )
                iDirs[CIMA] = 0;
            if(iY + iLenght > 9 )
                iDirs[BAIXO] = 0;
            
            for(int i = 0; i < 4; i++)
            {
                if(iDirs[i])
                {
                    bTryPut = true;
                    break;
                }
            }
            
            while(bTryPut)
            {
                bTryPut = false;
                if(iDirs[DIREITA])
                {
                    for(int i = 0; i < iLenght; i++)
                    {
                        if(cMatriz[iX+i][iY])
                        {
                            bTryPut = true;
                            iDirs[DIREITA] = 0;
                            break;
                        }
                    }
                    if(!bTryPut)
                    {
                        for(int i = 0; i < iLenght; i++)
                            cMatriz[iX+i][iY] = cChar;
                        bPlaced = true;
                        break;
                    }
                }
                bTryPut = false;
                if(iDirs[ESQUERDA])
                {
                    for(int i = 0; i < iLenght; i++)
                    {
                        if(cMatriz[iX-i][iY])
                        {
                            bTryPut = true;
                            iDirs[ESQUERDA] = 0;
                            break;
                        }
                    }
                    if(!bTryPut)
                    {
                        for(int i = 0; i < iLenght; i++)
                            cMatriz[iX-i][iY] = cChar;
                        bPlaced = true;
                        break;
                    }
                }
                bTryPut = false;
                if(iDirs[CIMA])
                {
                    for(int i = 0; i < iLenght; i++)
                    {
                        if(cMatriz[iX][iY-i])
                        {
                            bTryPut = true;
                            iDirs[CIMA] = 0;
                            break;
                        }
                    }
                    if(!bTryPut)
                    {
                        for(int i = 0; i < iLenght; i++)
                            cMatriz[iX][iY-i] = cChar;
                        bPlaced = true;
                        break;
                    }
                }
                bTryPut = false;
                if(iDirs[BAIXO])
                {
                    for(int i = 0; i < iLenght; i++)
                    {
                        if(cMatriz[iX][iY+i])
                        {
                            bTryPut = true;
                            iDirs[BAIXO] = 0;
                            break;
                        }
                    }
                    if(!bTryPut)
                    {
                        for(int i = 0; i < iLenght; i++)
                            cMatriz[iX][iY+i] = cChar;
                        bPlaced = true;
                        break;
                    }
                }
                bTryPut = false;
            }
            
        }
    }
    dai eu troquei esta funcao:
    void Preencher_Matriz_Barco(char Matriz[][10]) {
        Insere_PortaAviao(Matriz);
        Insere_Submarino(Matriz);
        Insere_Submarino(Matriz);
        Insere_Fragata(Matriz);
        Insere_Fragata(Matriz);
        Insere_Mina(Matriz);
        Insere_Mina(Matriz);
        Insere_Mina(Matriz);
    }
    por esta:
    void Preencher_Matriz_Barco(char Matriz[][10]) {
        PlaceBoat(Matriz, 6, 'P');
        PlaceBoat(Matriz, 4, 'S');
        PlaceBoat(Matriz, 4, 'S');
        PlaceBoat(Matriz, 2, 'F');
        PlaceBoat(Matriz, 2, 'F');
        PlaceBoat(Matriz, 1, 'M');
        PlaceBoat(Matriz, 1, 'M');
        PlaceBoat(Matriz, 1, 'M');
    }

    espero ter ajudado

    a sugestao que te dou, é que sempre que tiver que fazer alguma coisa que vai fazer mais de uma vez (mesmo que seja um pokim diferente), crie uma funcao generica, vai te poupar trabalho, e fica mais facil dar manutencao depois :D!!

    abrassss

    ps: o codigo não esta muito bem escrito não.. da pra melhorar ele!!!

    ahh.... esqueci de mencionar.....

    voce só precisa utilizar a funcao srand 1 vez no programa inteiro....

    eu coloquei ela no main

    antes da funcao de Inicio

    srand(time(NULL));

  7. pedrovg, se voce sabe apos qual palavra o texto vai estar fika facil achar....

    voce só precisa procurar no arquivo ateh achar a palavra que voce quer, e depois pegar a proxima.

    segue um exemplo:

    #include <stdio.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        FILE *pArq = fopen("arquivo.txt", "r");
        char szText[50];
        
        if(!pArq)
        {
            cout << "Error: não foi possivel abrir o arquivo!" << endl;
            getchar();
            exit(1);
        }
        
        while((fscanf(pArq, "%s", szText)) != EOF )
        {
            if(!strcmp(szText, "Nome:") && (fscanf(pArq, "%s", szText)) != EOF )
                cout << "Nome.: " << szText << endl;
            if(!strcmp(szText, "Idade:") && (fscanf(pArq, "%s", szText)) != EOF )
                cout << "Idade: " << szText << endl;
        }
        
        delete pArq;
        getchar();
    }
    e o arquivo.txt desse jeito:
    Nome: hhdslhgldf
    Idade: 13 sexo M
    rua
    país
    cep

    espero ter ajudado....

    abrasss

  8. "Os paradigmas de programação são muitas vezes diferenciados pelas técnicas de programação que proíbem ou permitem. Por exemplo, a programação estruturada não permite o uso de goto. "

    Paradigmas

    "Uma consequência deste paradigma é a liberdade total no desvio de fluxo, o que permite criar coisas mais complexas como:"

    Paradigma não Estruturado

    e como final de uma olhada nesse tópico sobre paradigma estruturado

    Paradigma Estruturado

    Bom...acho que tirei minha duvida....

    e meu pensamento ainda continua o mesmo

    Paradigma não-estruturado, é um paradigma onde voce pode quebrar o fluxo estruturado de um programa....

    voce pode esta no meio de uma repedicao, e mandar o programa sair.. (sem ter que continuar a repeticao ).... ou voce pode dar goto para um trecho de codigo la no comeco....esses tipos de comandos interrompem a ordem estruturada que o programa tem!!
  9. Bom....em todo caso segue um codigo pra voce da uma olhada:

    class MyThread: public TThread
    {
        private:
            int iCount;
    
        public:
    
        MyThread():TThread(true)
        {
            iCount = 0;
        }
    
        void __fastcall Execute(void)
        {
            while(!Terminated  && iCount  >= 0)
            {
                iCount ++;
                Sleep(100);
                if(iCount  == 100)
                {
                    Terminate();
                }
            }
        }
    
        int getCount()
        {
            return iCount;
        }
    
        bool finished()
        {
            return Terminated;
        }
    };
    
    
    MyThread *pThread;
    
    .....
    
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        pThread = new MyThread();
        pThread->OnTerminate = OnTerminate;
        pThread->Resume();
    }
    
    void __fastcall TForm1::OnTerminate(TObject *Sender)
    {
        pThread = NULL;
        Application->Terminate();
    }

    o que voce precisa fazer é criar uma funcao pro evento OnTerminate no teu programa principal

    e atribuir esta funcao para a funcao do OnTerminate da thread

    pThread->OnTerminate = OnTerminate;

    e nela voce chama o Terminate da aplicacao :D!!

    Abrasss

  10. Caro Maligno...

    o paradigma estruturado siginifica o seguinte...

    Comeco->meio->fim

    porem se no meio de um for, voce der um goto pra algum lugar, voce vai estar quebrando este paradigma, e então tua programacao vai deixar de ser estruturada.

    e quanto ao que voce falou sobre a orientada objeto não ser totalmente orientada a objeto, acho que voce se enganou tambem...

    se voce tem um objeto (uma Bola), voce possui os metodos que interagem com esse objeto, como por exemplo girar....

    mesmo esses metodos serem programados, na maioria das vezes, estruturadamente....eles ainda continuam sendo TOTALMENTE orientados a objetos!!!

    abrass

  11. viu existem algumas funcoes memset(matriz, 0, sizeof(matriz) q zeram ela e/ou preenchem com o caracter desejado!!

    mas quanto ao codigo....voce chegou a debugar ele??

    eu debuguei aki e vi que ele sai nessa linha

    if ( (i >=7 ) && (i <= 9) )
            Verificador = true;

    agora eu n entendi muito bem sua logica...mas da um check....

    abrasss

  12. Livro de programacao em jogos eu sugiro o Desenvolvimento de Jogos eletronicos....livro todo em C++ muito bem explicado e com um desenvolvimento de um prototipo...

    agora se voce quiser ir a fundo mesmo....em sites de torrent você acha um pacote completo de ebooks i tals...dai c você tiver um ingles bom pode pedir em algumas livrarias q elas importam pra você :D!! (como voce quer o livro mesmo!!)

    depois quando chegar em casa eu pego o nome do livro de C++ mtoo bom q eu "li" (1300 paginas =\ ) mais foi o melhor que já vi ateh hj!!!

    abrasss

×
×
  • Criar Novo...