Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Sorties: Dread Mac Farlane - episode 6 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

271 connectés actuellement

29365579 visiteurs
depuis l'ouverture

1002022 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

RPG Maker - La Communauté

Lumen

New RPG Maker

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [Danmakufu ph3 (mais peu importe)] Afficher du texte à partir d'images


Ephy - posté le 28/07/2021 à 18:59:44 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

Domaine concerné: Programmation
Logiciel utilisé: Danmakufu ph3 (mais peu importe)
Yo!

Depuis bien trop longtemps, je cherche à afficher du texte à partir d'un fichier image composé de lettres/chiffres/symboles, comme celui-ci:
image
Dans mon idée, j'aimerais convertir une chaîne de caractères genre "Hello Oniro" en valeur numériques séparées pour chaque lettre/symbole/espace.
Par exemple, "Hello Oniro" donnerait [8, 5, 5, 15, 0, 15, 14, 9, 18, 15]. Avec ces valeurs numériques, je pourrais aller facilement chercher mes lettres et symboles à la bonne place sur le fichier png.

Le souci... c'est que j'ai aucune idée de comment faire ça. Plus précisément, j'ai aucune idée de comment découper une chaîne de caractères en caractères séparés. Je sais faire pour découper une valeur numérique mais pas du texte.

Si ça peut aider, voilà la liste des fonctions de danmakufu ph3: https://web.archive.org/web/20200215163617/https://dmf.shrinemaiden.org/wiki/Functions_(ph3)
La seule fonction qui me semble utile serait SplitString* mais forcerait à tout écrire sous la forme "H$e$l$l$o$ $O$n$i$r$o". Plutôt lourd comme façon d'écrire.
* https://web.archive.org/web/20200219151521/https://dmf.shrinemaiden.org/wiki/Text_Functions#SplitString

Du coup ma question, est-ce que vous auriez une idée plus simple pour faire ça? Peut-être une approche à laquelle je n'ai pas pensé tout simplement?



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Gari - posté le 28/07/2021 à 19:07:23 (5899 messages postés) - honor

❤ 0

Quelqu'un a réussi à faire ça sur rm2003, donc ça doit pas être sorcier... Par contre je me rappelle plus exactement comment il a fait.
Mais en gros il écrivait son texte dans les boîtes de dialogue de rm, et il utilisait un template comme le tien pour remplacer les caractères par les images correspondent. Sans doute que chaque pattern (partie d'image) correspondait à une variable qui était liée à une lettre.


Mack - posté le 28/07/2021 à 19:09:22 (2288 messages postés)

❤ 0

T'as plus ou moins la bonne idée, il suffit de trouvé le code ASCII de chaque charactère à afficher.
En considérant ta String comme un tableau ça marche pas ?
Genre mastring[0] pour renvoyer le premier charactère.


Sinon je regarde la liste des fonctions, je vois rien qui pourrait aider :/.
C'est quoi comme langage ? Un truc propre au logiciel, ou un autre langage plus connu ?

EDIT :
Autre idée un peu con, mais si tu SplitString("A/123/BCD", "") avec du coup le second argument vide, par hasard il coupe pas charactère par charactère ?

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 28/07/2021 à 19:37:41 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

Citation:

Autre idée un peu con, mais si tu SplitString("A/123/BCD", "") avec du coup le second argument vide, par hasard il coupe pas charactère par charactère ?


C'est exactement ce à quoi j'ai pensé juste après avoir posté. Mais en fait, ça coupe rien du tout du coup.

Je pense que le langage c'est du C avec une collection de fonctions propres au logiciel.

Citation:

En considérant ta String comme un tableau ça marche pas ?


Ca me donne quelque chose d'intéressant. Je ne savais pas qu'on pouvait traiter les chaînes comme des tableaux.

Par contre il me semble qu'il existe des fonctions générique (en C du coup je crois) pour gérer les array genre compter le nombre de valeur dedans ou en supprimer. Ou pour compter le nombre de caractères dans une chaine aussi, je crois.
Mais je m'en souviens pas. Et elles me seraient énormément utiles pour le coup :goutte



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 28/07/2021 à 19:51:02 (2288 messages postés)

❤ 0

https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15765-les-chaines-de-caracteres

size_t strlen(const char* chaine);
Pour la taille

https://forgetcode.com/c/1487-charat-find-the-character-at-the-given-position
Un exemple pour faire un charAt en C.
( Donc avoir le charactère à la position X )


Mais en trainant un peu sur ton wiki, j'ai pas l'impression que ça soit du C :/


Sinon, pour en rajouter je saurais pas te dire, mais pour en supprimer, il suffit de décaler tout tes charactères après le charactères à supprimer.
Si t'as une chaîne de 10 charactères, et que tu veux enlever le 5, il suffit que le charactère 6 passe en position 5, le 7 en 6, ...
Et dans le doute, tu mets le dernier charactère comme étant celui de fin de string.
( J'me souviens plus du code, mais regarde sur le web, c'est pas compliquer à trouver )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 28/07/2021 à 20:57:40 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

C'est peut-être pas du C en effet. Mais ça y ressemble beaucoup sur pas mal de points en fait. Si c'en est pas, c'est au moins basé dessus.

Pour supprimer des valeurs dans l'array, j'ai trouvé. C'est juste

Portion de code : Tout sélectionner

1
erase(array, position dans l'array);



Pour ajouter des valeurs à l'array c'est juste

Portion de code : Tout sélectionner

1
array ~ [valeur]

. Comme pour les string en fait qui donnent "Hello"~" Oniro".

Pour récupérer la taille d'un array (ou d'une string ça marche aussi), c'est

Portion de code : Tout sélectionner

1
length(array)


Me demande pas comment je suis aller retrouver ce dernier dans les tréfonds de ma mémoire mais je suis bien content d'avoir remis la main dessus.


Merci en tout cas. avec tout ça je devrais pouvoir découper facilement mes chaînes en tableaux et tout récupérer en petit morceaux pour afficher mon texte.

Dans l'idée ça donnerait:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
function StringToArray(text){
    let size = length(text);
    let array = [];
    ascent( i in 0..size){
        array ~ text[i];
    }
    return array;
}


A tester plus en détail mais je pense que ça fonctionne. D'un coté on entre le texte, la fonction le mouline et sort un magnifique array. En fait y'a peut-être même pas besoin de transformer ça en array vu que la chaîne est déjà une sorte d'array en elle même. Je dois pouvoir directement récupérer la lettre, lui affecter une valeur chiffrée et faire ça en boucle pour chacun des caractères de la chaîne. Y'a de l'idée à creuser là.



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 29/07/2021 à 00:11:46 (2288 messages postés)

❤ 0

Ephy a dit:


A tester plus en détail mais je pense que ça fonctionne. D'un coté on entre le texte, la fonction le mouline et sort un magnifique array. En fait y'a peut-être même pas besoin de transformer ça en array vu que la chaîne est déjà une sorte d'array en elle même. Je dois pouvoir directement récupérer la lettre, lui affecter une valeur chiffrée et faire ça en boucle pour chacun des caractères de la chaîne. Y'a de l'idée à creuser là.


Exacte, même pas vraiment besoin de transformer en array, une chaîne de charactère est déjà un array de *char, avec des fonctions en plus.
Après parfois c'est un peu chelou et ça englobe des trucs en plus ce qui fait que les fonctions habituelles marchent pas, donc ta solution peut quand même t'être utile.

Après, pour faire l'affichage, pour chaque charactère soit tu as accès au code ASCII, et du coup t'as juste à ranger ton spritesheet correctement
image
Soit juste tu fais des comparaison du type array[x] == 'a'.

( La seconde est un peu moins pratique, mais si la première marche pas t'es sur que celle là marche xD )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 29/07/2021 à 17:22:31 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

Ouais j'ai réalisé après avoir écrit mon bout de code que passer la chaîne en array servait à rien mais j'ai laissé là parce que le code en lui même me servira de base pour quand je m'y pencherais plus en détail dessus ce week-end.

Je pense juste faire une fonction avec la seconde solution type if(string[x] == "a"){array[x] = 1;}, et ce pour tous les caractères. Pas très pratique sur le coup mais une fois codé ça va marcher tout seul. Et comme ce sera utilisé que pour les dialogues ou le magasin, même si le code est un peu lourd ça affectera pas la fluidité du gameplay.
Je pense pas avoir accès au ASCII de toute façon.


Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 29/07/2021 à 19:16:26 (2288 messages postés)

❤ 0

Pas sur, mais il me semble que faire array[x] == 'a' ou array[x] == 97 c'est la même chose ^^

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 29/07/2021 à 20:20:14 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

Je testerais ça. Si ça fonctionne, ça peut être un sacré raccourci. Parce que si array[x] == 'a' et array[x] == 97 c'est pareil, je suppose que 'array[x]' = 97 si la valeur x de l'array est a. Du coup je pourrais carrément 'array[x]' comme facteur pour aller découper mon caractère dans le fichier png.

editedit:
J'ai pas l'impression que 'a' fonctionne. Quand je teste, 'a' = a et pas 97. Et si je fais 'a' == 97, ça plante car je compare des valeurs de type différent. Du coup, je suppose que je vais passer par la méthode brute mais 100% efficace.



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 29/07/2021 à 22:51:47 (2288 messages postés)

❤ 0

'array[x]' == 97 ça peut pas fonctionner ^^.
Entre les ' ' t'as forcement un char directe, tu peux pas mettre de variable, même si c'est vrai que c'est un peu con, doit y avoir une raison derrière xD

Ah, dommage, ça t'aurais éviter de faire une condition à douze mille embranchement x)

Edit : 'a' == a c'est normal, tu compare un char à une variable, donc si ta variable a existe pas ça te renvoie forcement une erreur ^^.
Par contre si 'a' == 'a' marche pas c'est un peu plus étrange :/
Peut être que le langage custom est un peu trop simpliste.

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 30/07/2021 à 18:13:25 (30083 messages postés) - honor

❤ 0

[BIG SHOT]

Non non, pas 'a' == a. 'a' = a. Ou 'a' = "a" si tu préfère (sauf que ça affiche a tout court comme valeur dans la console de debug).
Le langage est fait pour coder des shump assez facilement à la base. Ca ne m'étonne pas que ce genre de chose ne soit pas géré. C'est déjà très bien d'avoir autant la main sur les array et les chaînes.

edit:
Fait!
image
A première vue, ça marche plutôt bien. Je peux sauter des lignes à volonté, le jeu saute lui même des lignes sans couper les mots lorsque qu'il dépasse la longueur de texte maximale paramétrée (paramétrable individuellement pour chaque texte) et il y a même possibilité d'afficher le texte caractère par caractère et d'en régler la vitesse.

Je suis plutôt très satisfait du résultat à vrai dire. Donc merci Mack pour ton aide :D


Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 01/08/2021 à 20:02:45 (2288 messages postés)

❤ 0

De rien, content d'avoir pu aider ;)

( Je prend note de tout les commentaires, même si je n'y répond pas )

Index du forum > Entraide > [RESOLU] [Danmakufu ph3 (mais peu importe)] Afficher du texte à partir d'images

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers