Ir ao conteúdo
  • Cadastre-se

W0xer

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

posts postados por W0xer

  1. Olá, estou com problemas na compilação de um código C com a biblioteca do Allegro na versão 4. Estava assistindo a um tutorial para reescrever o jogo space invaders e sempre que compilo o code::blocks abre o programa mas logo fecha e uma mensagem de erro aparece na segunda tela: "shutting down allegro due to signal #11 segmentation fault (core dumped)".

     

    o código é o que se segue:

    #include <allegro.h>
    
    void sair();
    
    int sai = 0, width = 740, height = 740;
    
    struct obj {
        int x;
        int y;
        int wx;
        int wy;
        int w;
        int h;
    }invader[5][10];
    
    int main() {
        allegro_init();
        install_keyboard();
        set_color_depth(32);
        set_window_title("space invaders");
        set_close_button_callback(sair);
        set_gfx_mode(GFX_AUTODETECT_WINDOWED, width, height, 0, 0);
    
        BITMAP *buffer = create_bitmap(width, height);
        BITMAP *fundo = load_bitmap("img/fundo.bmp", NULL);
        BITMAP *invad = load_bitmap("img/invasores.bmp", NULL);
    
        for(int i = 0; i < 10; i++) {
            for(int j = 0; j < 10; j++) {
                invader[j][i].x = 42;
                invader[j][i].y = 313;
                invader[j][i].wx = 42;
                invader[j][i].wy = 313;
                invader[j][i].w = 40;
                invader[j][i].h = 30;
            }
        }
        while (!(sai || key[KEY_ESC])) {
            draw_sprite(buffer, fundo, 0, 0);
    
            for(int i = 0; i < 5; i++) {
                for(int j = 0; j < 10; j++) {
                    masked_blit(invad, buffer, invader[j][i].x, invader[j][i].y, invader[j][i].wx, invader[j][i].wy, invader[j][i].w, invader[j][i].h);
                }
            }
            draw_sprite(screen, buffer, 0, 0);
            draw_sprite(invad, fundo, 0, 0);
    
            rest(30);
    
            clear(buffer);
            clear(invad);
            clear(fundo);
        }
        destroy_bitmap(buffer);
        return 0;
    }
    END_OF_MAIN();
    void sair(){sai = 1;}
    END_OF_FUNCTION(sair);

     

    Se alguém puder por favor me ajudar o porquê disso estar acontecendo, eu agradeceria muito mesmo.

  2. putz amigo, de fato ainda tem muita coisa pra fazer e pra revisar nesse negócio, eu estava pensando em desistir na verdade, eu nem vou usar mais esse programa. Eu na verdade só postei esse negócio aqui porque nunca tinha postado nada e vejo todo mundo participando e se interagindo, é bem legal essa comunidade. Mas enfim, obrigado pela ajuda, é sempre bom ter contato com pessoas experientes, boa noite.

    • Curtir 1
    • Haha 1
  3. #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <_mingw.h>
    
    
    
    char teste;
    
    //coeficientes
    float coeficiente_a = 0, coeficiente_b = 0, coeficiente_c = 0;
    float *ptr;
    
    //vertices
    float vertice_x, vertice_y;
    float delta;
    
    //tráfego de variáveis
    float recebe_valores();
    float calcula_valores();
    
    float recebe_valores()
    {
        printf("\t\t\t\t\t\t<Calculadora de vertices>\n\n");
        printf("\t\tInsira os coeficientes para a equacao: ax^2 + bx + c\n");
        printf("\t\t\ta = %.2f\n\t\t\tb = %.2f\n\t\t\tc = %.2f\n", coeficiente_a, coeficiente_b, coeficiente_c);
    
        ptr = &coeficiente_a;
        scanf("%f", ptr);
    
        if (coeficiente_a <= 0)
        {
            printf("\t\tO coeficiente 'a' precisa ser necessariamente maior que 0, se não for a equacao deixa de ser quadratica e se torna linear\n\n");
            recebe_valores();
        }
        else
        {
            coeficiente_a = *ptr;
            ptr = 0;
    
            printf("\t\t\ta = %.2f\n\t\t\tb = %.2f\n\t\t\tc = %.2f\n", coeficiente_a, coeficiente_b, coeficiente_c);
    
            ptr = &coeficiente_b;
            scanf("%f", ptr);
        }
    }
    float calcula_valores()
    {
        printf("Calculando o vertice Y:\n");
        delta = (-coeficiente_b) * (-coeficiente_b) - 4 * coeficiente_a * coeficiente_c;
    
        vertice_y = delta / 4 * coeficiente_a;
    
        printf("Vertice Y = (0,%.2f)\n", vertice_y);
    
        printf("Calculando o vertice X:\n");
    
        vertice_x = coeficiente_b / 2 * coeficiente_a;
    
        printf("Vertice X = (%.2f,0)\n", vertice_x);
    }
    int main()
    {
        recebe_valores();
        calcula_valores();
    }
    //por favor me ajudem, eu quero saber como fazer isso, eu passei madrugadas trabalhando nisso

     

    • Curtir 1

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!