AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
-20% Récupérateur à eau mural 300 ...
Voir le deal
79 €
Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

 

 Système de messagebox

Aller en bas 
5 participants
AuteurMessage
Lahn
Pas mal



Messages : 35

Système de messagebox Empty
MessageSujet: Système de messagebox   Système de messagebox EmptyLun 13 Aoû 2012 - 21:44

Salut !

Je commence à réfléchir sur un système de messagebox un poil avancé :
-Affichage lettre par lettre
-Changement de couleurs pendant l'affichage du message
-Affichage d'une variable.


Pour l'instant j'ai réussis à faire ça :

Code:
var mess,ax,ay,i,w,c;

keyboard_clear(vk_space)

ax=argument0+view_xview
ay=argument1+view_yview
mess=argument2

//Affiche le fond de la boite
draw_sprite(MessageBox_Spr,0,ax,ay)

i=0
w=0
var loop ; loop = true

// Demarre une boucle pour freezer le jeu.
while (loop) {
io_handle()
//Si on appuie sur la touche valider, la lettre suivante apparait, si on est à la fin du message, la boucle se termine
if keyboard_check(global.key_A)
{if i>=string_length(string(mess))
{loop=false}
else
{w=200}
}

//Affiche une lettre toute les 200 frames.
w+=1
if w>=200 and i<string_length(string(mess)){
sound_play(LA_Text_Letter)
// On recupère la lettre dans la variable c
c = string_char_at(string(mess), i+1)

//Si la lettre est un "\", et que la lettre d'après est un "n", on les effacent, et on descend d'une ligne.
if c=="\"{
if string_char_at(string(mess), i+2)=="n"{
c=""
ay+=10
ax=argument0+view_xview
}
//Si c'est un p on affiche la variable global.name
if string_char_at(string(mess), i+2)=="p"
{mess=string_insert(string(global.name),mess,i+1)}}
draw_text(ax+2,ay+2,c)
i+=1
ax+=8


w=0}

//Rafraichit l'écran
screen_refresh()
}
message=""
keyboard_clear(global.key_A)

Mais avec ça, j'arrive à faire l'affichage lettre par lettre, mais lors du retour à la ligne, j'arrive pas à effacer le repère qui me sert de retour à la ligne ( "\n" ).

De même pour les couleurs, il me suffira d'utiliser draw_text_color, mais comment faire pour que selon le texte que j'écrit, ça me donne une couler ?
( Avec comme code "\c[X]" avec X un chiffre par exemple. Ou tout simplement \r pour le rouge, \b pour le bleu, etc ... )

Et pour finir, je voudrais afficher le contenu de la variable global.name avec la commande "\p". J'ai bien essayer un truc, mais il me fait tout bugguer ( Il me donne une infinité de "/n" ) ...

Merci d'avance !
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyLun 13 Aoû 2012 - 22:22

Première remarque, je ne vois aucun sleep dans ta boucle. Il vaut mieux faire un sleep(w) pour attendre w millisecondes, sinon la vitesse d'exécution sera différente selon le PC. Il se peut même que le scheduler considère ton programme comme un traitement lourd et réduise sa priorité, en faisant ramer ton jeu !

Sinon, je crois que tu as tout simplement oublié de faire i += 2 après ton retour à la ligne, pour te retrouver derrière le "\n" :)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Lahn
Pas mal



Messages : 35

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyLun 13 Aoû 2012 - 22:39

Pour le i+=2, effectivement, ça marche bien pour le retour à la ligne =P.

Par contre, pour le sleep, le défaut, c'est que ça me permet pas de faire défiler le texte plus vite =/.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyLun 13 Aoû 2012 - 22:46

Ben, bien sûr que si !

Code:
var delay;
delay = argument...;

while(loop) {
    sound_play( LA_Text_Letter );

    ...

  sleep(delay);
}

Et voilà, tu as un paramètre pour déterminer combien attendre entre deux lettres :)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Lahn
Pas mal



Messages : 35

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyLun 13 Aoû 2012 - 23:03

Ah ouais, utiliser une variable pour définir le temps d'attente c'est une super idée !
Merci Smile.


Pour la couleur, j'ai réussis à faire avec \r du coup, mais si je pouvais faire l'autre solution ça m'arrangerais, mais je vois pas comment faire ^^". ( Puisque là le nombre de caractère derrière le \ est variable )
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 0:50

tu détectes le "\c", ensuite tu isoles tous les caractères (des chiffres donc) jusqu'au prochain espace, et tu utilises real() pour le parser en nombre entier ;)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 10:08

Par contre si je peut me permettre, il vaux mieux éviter d'utiliser sleep.
Il est possible d'utiliser une variable pour attendre x steps a la place.

_________________
Système de messagebox Runningpotato1Système de messagebox TvF6GED Système de messagebox MdetltS
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****



Messages : 1688

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 11:14

Le truc avec sleep c'est que le jeu va freezer.
Revenir en haut Aller en bas
supmaster004
Utilisateur confirmé: Rang *****
supmaster004


Messages : 2188
Localisation : x=23.256842 y=43.456879
Projet Actuel : Faire des parodies de jeux en 1h

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 12:02

Sinon, plutôt que de faire une boucle qui va freezer le jeu, tu peux tout simplement remplacer ta boucle par un ensemble de steps.
Ca te permet de faire des trucs en même temps que ton texte (genre une bouche qui parle)

_________________
Spoiler:

L'IRC du cbna: IRC du cbna
projets terminés: prédation mouse vs keyboard ACII OC_ nintendo nightmare fuyez lavanville
Revenir en haut Aller en bas
Lahn
Pas mal



Messages : 35

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 15:30

Utiliser les step, ça voudrais dire bloqué tout les objets quand le step s'effectue, donc bon, ça me parait pas être une super idée.
( Puisque TOUT les objets sont mis en pause, y a que l'affichage du message qui s'effectue, tout le reste ne bouge pas. )


Donc au final c'est quoi le mieux, sleep, ou utilisé une variable comme j'avais fait ?
Vu que tout est freezer sauf l'affichage du texte, utiliser sleep() ou une variable reviendra au même pour l'arrêt des autres objets, autant utiliser sleep() non ?



Pour les couleurs, finalement, j'vais rester avec les \r, ça sera moins ****** à coder ^^".



J'ai réussis à afficher ma variable, donc il me reste juste à savoir si vaut mieux utiliser sleep() ou une variable et ce sujet est résolu.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyMar 14 Aoû 2012 - 18:45

Je signale que j'ai proposé l'usage du sleep parce que sa boucle faisait déjà freezer le jeu, mais était régulée en surchargeant le processeur :p

Le truc c'est que pour changer de couleur à loisir il faut gérer la boucle d'affichage soi-même, donc de toute manière une bouche animée ou autre devra être faite manuellement. Ça change pas grand-chose, et je pense qu'il vaut mieux que le jeu freeze le temps de l'affichage du message (mais c'est un choix).

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
supmaster004
Utilisateur confirmé: Rang *****
supmaster004


Messages : 2188
Localisation : x=23.256842 y=43.456879
Projet Actuel : Faire des parodies de jeux en 1h

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyJeu 16 Aoû 2012 - 9:30

moi j'aime pas trop utiliser freeze, puis de toutes façons dans la plupart de mes jeux les persos parlent en bougeant donc bon....

_________________
Spoiler:

L'IRC du cbna: IRC du cbna
projets terminés: prédation mouse vs keyboard ACII OC_ nintendo nightmare fuyez lavanville
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox EmptyJeu 16 Aoû 2012 - 14:00

Je le répète, rien n'empêche de synchroniser avec la boucle principale du jeu. Je n'ai fait que suggérer une temporisation pour faire les choses plus proprement, mais de visu le résultat est le même que son script original.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Contenu sponsorisé





Système de messagebox Empty
MessageSujet: Re: Système de messagebox   Système de messagebox Empty

Revenir en haut Aller en bas
 
Système de messagebox
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» variable messagebox
» [Resolu]Petites Questions(Titre/MessageBox/Animation+Destroy)
» Système de RPG
» Future Ball
» systeme plateforme

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: