IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[linux]SDL (SETAlpha) + Sockets=plantage?


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut [linux]SDL (SETAlpha) + Sockets=plantage?
    Bonjour, dans le cadre d'un projet de jeu d'echec sous linux, que nous effectuons avec un pote, nous réalisons... un jeu d'echec, jouable en ligne, avec IA, et interface pas trop moche.

    Avant toute chose, je tiens à préciser que j'utilise g++/gcc, via code::blocks, sous linux.

    Etant chargé de l'IA et du réseau, j'ai donc réalisé un programme avec un affichage pourri sur la console, mais qui marchait impec (quelques bugs lors de la connexion des deux sockets, mais n'arrivant qu'une fois sur 3 à peu près).
    Mon binome a lui, créé l'interface en SDL.

    Bien.

    Donc, nous avons adapté nos codes pour les fusionner. Tout ce qui est jeu en local fonctionne impec (encore que l'ia a des tendances suicidaires... mais la question n'est pas là).

    Le réseau, par contre ne marche pas... En fait, la connexion entre mes deux programmes (je teste sur 127.0.0.1) a l'air de bien marcher, comme sur mon programme de base. Par contre, ensuite, lors de l'initialisation du plateau de jeu (je ne m'y connais pas trop trop en SDL, et mon binome est actuellement injoignable), ça plante...

    Voici un tout ptit extrait de code d'où ça plante, commenté of course:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if(typjeu==3 || typjeu==4)cout<<"connexions effectuées"<<endl;
     
    //typjeu: type de jeu: 1: local, 2: IA, 3: client, 4: serveur
    //le message s'affiche, donc a priori, pas de problème?
     
    //test, ce message est bien affiché
    cout<<"declaration"<<endl;
    //Déclaration des variables
        SDL_Event event;//permet de gérer les évenmeent de la SDL
     
        bool touche=false,deplace=false;   //variable pour gérer si l'on clique sur une piece du plateau, je crois
     
             jeu.aff(screen,j1,j2); //ici, ça plante! Cette fonction permet normalement d'afficher le plateau
             cout<<"declarations ok"<<endl;
             SDL_Flip(screen);

    Pour ce qui est de jeu.aff, ça plante exactement ici (sans cette ligne, le programme fonctionnerait (il continue), mais on n'a plus d'interraction avec le jeu, ni d'affichage):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Dessiner le fond d'ecran
        SDL_BlitSurface(bg,NULL,screen,NULL);
        cout<<"1"<<endl;
       SDL_SetAlpha(cases, SDL_SRCALPHA, 128); //LIGNE QUI FAIT PLANTER :/
        cout<<"2"<<endl;
     
        SDL_BlitSurface(cases,NULL,screen,NULL);
    cout<<"3"<<endl;
    cases est un SDL_surface, qui est surement le plateau de jeu. Bref, en tout cas, sans cette fonction, le programme plante plus tard (aucune interraction possible, pas d'affichages), J'ai essayé un sleep juste apres (ça plantait direct), et j'ai juste un freeze de mon menu, pas d'affichage du plateau de jeu, que dalle.

    Ensuite, autre question, tant que j'y suis, mes sockets ont parfois des moments où elles n'arrivent pas à se connecter entre elles... Genre j'essaye 3 fois de suite, 3 fois j'ai un host introuvable. Pis apres, 3 ou 4 fois, ça remarche. C'est pas primordial, mais j'imagine que c'est assez courant, donc si quelqu'un a la soluce... .

    EDIT: apres quelques recherches, j'ai cru comprendre que la ligne qui fait planter serait juste pour faire un effet de fondu (ici entre le plateau de jeu et l'image de fond d'écran). Seulement voila, en la commentant (le BlitSurface du background itou), ça ne m'affiche toujours rien... C'est grave docteur?


    Merci d'avance! Ciao

    ps: bien sur, je sais que sdl_net existe, mais ayant déjà tout codé, ça m'embeterait un ptit peu de devoir tout refaire. Bien entendu c'est pas tres long, mais bon... Un informaticien non flemmard n'est pas un informaticien, non? Pis histoire de trouver une vraie excuse, j'aimerais quand meme bien savoir pourquoi ça plante... Probleme de concurrence entre les affichages et recv(), recv etant bloquante?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    GROS UP:

    ayant essayé SDL_net aussi, ça me fait exactement le même plantage...

    Là, je sais plus quoi faire du tout, rien ne marche.

    Si quelqu'un pouvait m'aiguiller... ce serait cool.

    Bonne soirée

    EDIT: pour plus centrer le problème: après la connexion, l'affichage ne se fait pas... Rien du tout...


    RESOLU: j'avais oublié un truc xD: initialisation du plateau de jeu :p

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Vérifie avec valgrind que y'a pas des gros bugs
    Boost ftw

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/06/2014, 20h16
  2. SDL et sockets
    Par yous18 dans le forum C
    Réponses: 1
    Dernier message: 12/04/2010, 15h48
  3. [Linux]Thread et sockets qui ne font pas bon ménage
    Par manudwarf dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 13/10/2009, 00h09
  4. compilation de mon prog (Linux + SDL)
    Par Gwindor dans le forum SDL
    Réponses: 3
    Dernier message: 05/12/2007, 19h48
  5. Plantage SDL linux
    Par Leguerinos dans le forum SDL
    Réponses: 7
    Dernier message: 23/01/2007, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo