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

SDL Discussion :

Pour les lettres


Sujet :

SDL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut Pour les lettres
    Salut , j ai problème je n arrive pas a écrire à la suite :

    J appuis sur "a" je la supprime, mais je bloc juste après, pour faire apparaitre une nouvelle lettre (alphabet).
    J utilise une police.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    J'ai pas vraiment compris ton problème,peut tu être plus précis ?

    J appuis sur "a" je la supprime, mais je bloc juste après, pour faire apparaitre une nouvelle lettre (alphabet).
    La je suis obligé de faire une supposition,tu utilise les évènement et tu veux faire comme le bloc-note par exemple pouvoir écrire un texte ?

    J utilise une police.
    Une façon étrange de dire que tu utilise la lib SDL_ttf ? x)

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Désolé, j ai oublié quelques lettres, ce que je faire, comme le logiciel de traitement de texte, avec (espace, retour en arrière et bien sur les lettres.

    Je suis obliger de recompilé, pour avoir la lettre que je désire.

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Il est difficile de te lire ,tu oublie des mots et ton orthographe n'est pas terrible.

    Sinon refaire un logiciel de traitement de texte ,la SDL n'est pas vraiment approprié pour faire cela ,c'est plutôt intéressant a faire mais si ton but est de ne pas te cassé la tête je te conseille une autre lib GTK ou Qt.

    Sinon je vois pas ou tu bloque exactement
    Tu récupères les touche tapé dans un tableau (qui doit être une chaine de caractères) et puis tu l'affiche avec les fonctions SDL.
    Le mieux c'est de vérifié la chaine de caractères avant affichage pour pouvoir géré les retour a la ligne et donc pouvoir modifié la position.
    Pareil pour la modification de ce texte ,les touches peuve aussi servir a déplacé un curseur fictif dans ce tableau.
    Même logique pour enlevé un caractère.

    Je précise au cas ou mais tu devra créer plusieurs fonction.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Salut excusais mois de mon orthographe , j ais réussi a changer mon clavier qwerty, j arrive a écrire de "a" jusque à "z" plus les supprimées, mais je n arrive à tapé n importe quels lettres et l effacée .

    Es ce que je doit incrémenter chaque lettres.

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Citation Envoyé par rint82 Voir le message
    Salut excusais mois de mon orthographe , j ais réussi a changer mon clavier qwerty, j arrive a écrire de "a" jusque à "z" plus les supprimées, mais je n arrive à tapé n importe quels lettres et l effacée .

    Es ce que je doit incrémenter chaque lettres.
    Je ne comprend pas , tu dis que tu as réussi a ecrire de 'a' a 'z' et de les supprimé.
    Puis après tu dis que tu n'arrive pas a tapé n'importe quel lettre et effacé , c'est un peu contradictoire ^^'

    Apres ça dépend ce que tu appelle incrémentais chaque lettre.

    j'imagine que je dois encore supposé ce que tu essaye de dire ,tu n'arrive pas a écrire les majuscule et les chiffre et autre caractère ?

    Pour la logique du code grosso modo:

    Initialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int i,l;
    char chaine[100];
    chaine[0] = '\0'; //c'est une chaîne de caractère
    l = 0;
    pour les évènements
    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
    16
    17
    18
    19
    20
    21
    22
     
    case SDL_KEYDOWN:
     
                    for(i=0;i<325;i++)
                    {
                        if(event.key.keysym.sym == i)
                        {
                            if(SDLK_BACKSPACE != i)
                            {
                                 chaine[l] = i;
                                 chaine[l+1] = 0;
                                 l++;
                            }else
                            {
                                 l--;
                                 chaine[l] = 0;
                            }
                        }
     
                    }
     
                break;
    Bon pour la condition c'est si on appuie pas sur la touche 'effacé' bon le plem c'est que il affichera les toche qui ne sont pas des caractere (fleche directionel F1,F2 ects) donc je te laisse faire les condition x)

    Tu pourrais ecrire aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( (i >= 'a') && (i <= 'z') )
    bon faudra rajouté pareil pour les chiffre et les autres caractères.

    Le must c'est de créer une structure , et de mettre les évènement dans une fonction , pour la lisibilité du code, et sa portabilité.

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Je me suis mal explique, un exemple si je commence a écrire un mot "avec" , et si je me trompe sur la lettre "v" et je met "b", je corrige mon erreur et je met "v".
    Et j aimerais faire ça pour la touche espace.
    Un bout de mon code:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                     case SDLK_a: //touche a
        positionLettreEcrite[1].x = 58;
        positionLettreEcrite[1].y = 40;
        SDL_BlitSurface(lettreEcrite[1], NULL, ecran, &positionLettreEcrite[1]);
        positionLettreEcrite[2].x = 40;
        positionLettreEcrite[2].y = 60;
        SDL_BlitSurface(lettreEcrite[2], NULL, ecran, &positionLettreEcrite[2]);
        positionLettreEcrite[3].x = 48;
        positionLettreEcrite[3].y = 50;
        SDL_BlitSurface(lettreEcrite[3], NULL, ecran, &positionLettreEcrite[3]);
                      break;
     
                      case SDLK_b: //touche b
                      positionLettreEcrite[4].x = 58;
                      positionLettreEcrite[4].y = 40;
                      SDL_BlitSurface(lettreEcrite[4], NULL, ecran, &positionLettreEcrite[4]);
                      positionLettreEcrite[5].x = 40;
                      positionLettreEcrite[5].y = 60;
                      SDL_BlitSurface(lettreEcrite[5], NULL, ecran, &positionLettreEcrite[5]);
                      break;
     
    case SDLK_BACKSPACE: // touche effacer
                      if(i-1)
                      i++;
        {
        // effacer a
        SDL_FillRect(lettreEcrite[1], NULL, SDL_MapRGB(ecran->format, 220, 205, 162));
        SDL_BlitSurface(lettreEcrite[1], NULL, ecran, &positionLettreEcrite[1]);
        SDL_FillRect(lettreEcrite[2], NULL, SDL_MapRGB(ecran->format, 220, 205, 162));
        SDL_BlitSurface(lettreEcrite[2], NULL, ecran, &positionLettreEcrite[2]);
        SDL_FillRect(lettreEcrite[3], NULL, SDL_MapRGB(ecran->format, 220, 205, 162));
        SDL_BlitSurface(lettreEcrite[3], NULL, ecran, &positionLettreEcrite[3]);
        if(i == 2)
        {
        // effacer b
        SDL_FillRect(lettreEcrite[4], NULL, SDL_MapRGB(ecran->format, 220, 205, 162));
        SDL_BlitSurface(lettreEcrite[4], NULL, ecran, &positionLettreEcrite[4]);
        SDL_FillRect(lettreEcrite[5], NULL, SDL_MapRGB(ecran->format, 220, 205, 162));
        SDL_BlitSurface(lettreEcrite[5], NULL, ecran, &positionLettreEcrite[5]);

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Justement je te déconseille d'utilisé cette méthode (de bourrin).

    Mais plus t'utilisé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    image = TTF_RenderText_Blended(police,chaine,couleur);
    SDL_BlitSurface(image,NULL,ecran,&position);
    SDL_FreeSurface(image);
    Et ton tableau 'chaine' et modifié par le code plus haut que je t'ai montré.

    Sauf si bien sur tu n'utilise pas de police mais une image (genre comme ça) mais le principe est le meme.
    tu créer une fonction genre affiche_texte , et qui en rapport a la chaine de caractere la fonction affiche la bonne lettre.

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Il faudra donc 2 images une pour affichée (imageAfficheA), et une pour effacée (imageEffaceA). Je doit mettre une image de fond aussi ? Par contre j utilise que 23 lettres il n y a pas w x y.

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Moi je te déconseille de faire cela , vu que c'est pas vraiment gérable.

    Dans le code que je t'ai montré , il affiche la chaîne de caractère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SDL_Surface *image;
    image = TTF_RenderText_Blended(police,chaine,couleur);
    SDL_BlitSurface(image,NULL,ecran,&position);
    SDL_FreeSurface(image);
    Il faudra effectivement rafraîchir image ('effacé'),enfin en parle plutot de redesinné image.
    en dessine le fond , puis celui du texte a chaque boucle.

    ce n'est pas un problème pour affichée le texte que tu veux comme mis plus haut , je te laisse choisir les conditions.

  11. #11
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    OK merci, je vais tester ça tout à l'heure chez moi. Je te tiens au courant.

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/09/2010, 12h22
  2. Macro pour supprimer les lettres d'une cellule?
    Par LittleSun dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2010, 20h56
  3. FCT en Background pour mettre en maj les lettres
    Par prosciuto dans le forum VBScript
    Réponses: 7
    Dernier message: 31/07/2009, 18h21
  4. [AC-2002] Faire une lettre de rappel pour les factures non encore payées
    Par antezi dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/04/2009, 17h40
  5. [SQL] SCRIPT pour avoir une navigation avec les lettres de l'alphabet
    Par gantec dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 20/09/2007, 09h45

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