MEGA PROBLEME !! SVP HELP ME !!!!!!!!!!!!!!!!

LeKamé - 6 août 2001 à 17:06
 NitRic - 7 août 2001 à 03:50
salut !!
j'ai un big mega probleme !!

le voici :

je suis en train de créer un jeu, et je suis bloqué à un truc:
Nn fichier texte (.txt), nommé, "config.txt".
Voici exactement ce que contient le fichier texte:

theme="foret"
#
Vous devez retrouver les potions magique:
-dans un arbre
#
vous devez battre le boss
-dans la clairiere
#
Vous devez vendre vos potion magiques
-aux nains
#

SVP !!! dites moi comment faire pour que ca affiche au hasard dans un textBox, le texte qui se trouve entre deux caracteres comme celui ci: #
Je sais que pour le hasard ca sera la fonction Randomize. Ca c'est clair !!
Mais je ne sais pas comment faire pour que ca sélectionne le texte qui se trouve entre deux #
SVP !! aidez moi !!!!!!!!!
je vous en pris !!!!!!
Ne me demandez pas pourquoi je veux faire cela !! ca serais trop long a expliquer !!!
Mais j'aimerais savoir comment faire cette manip !!
Si vous savez faire dites le moi !!
je suis désespéré !!

Merci de bien vouloir répondre !!!!

1 réponse

/*********************************************************/
' Dans un module ou autre...

' Récupérer le nombres de messages que le fichier contient
Public Function NombreMessage(ByVal NomFichier As String) As Long

' Les variables
Dim lFile As Long
Dim Ligne As String
Dim Nombre As Long

' Initialise à zéro
Nombre = 0

' Demande un numéro de fichier non utiliser
lFile = FreeFile
' Ouvre le fichier en lecture seulement
Open NomFichier For Input As #lFile

' Commence la boucle
Do

' Récupère la ligne pointer dans le fichier
Line Input #lFile, Ligne

' Si la ligne commence par un #, incrémente Nombre de un(1)If Left$(Trim$(Ligne), 1) "#" Then Nombre Nombre + 1

' Boucle tant qu'on est pas rendu à la fin du fichier
Loop Until EOF(lFile)

' Ferme le fichier(important)
Close #lFile

' Vérifie si on à trouver plus de 2 #, 2 # signifie qu'il y à un message, 3 # signifie qu'il y à 2 messages, comme dans ton exemple tu as 4 # ce qui veut dire que tu as 3 messages.
If Nombre => 2 Then
' Enlève 1, 2 # = 1 message
NombreMessage = Nombre - 1
Else
' Renvoie zéro si on à trouver que 1 # ou moin
NombreMessage = 0
End If

End Function

/*********************************************************/
' Récupérer un message en indiquant quel message on veut

Public Function LireMessage(ByVal NomFichier As String, ByVal MessageNumero As Long) As String

' Les variables
Dim lFile As Long
Dim Ligne As String
Dim Nombre As Long
Dim Message As String

' Initialise à zéro
Nombre = 0
Message = ""

' Demand eun numéro de fichier non utiliser
lFile = FreeFile
' Ouvre le fichier en lecture seulement
Open NomFichier For Input As #lFile

' Commence la boucle
Do

' Récupère la ligne pointer dans le fichier
Line Input #lFile, Ligne

' Si la ligne commence par un #, incrémente Nombre de 1If Left$(Trim$(Ligne), 1) "#" Then Nombre Nombre + 1

' Si on est rendu au message que l'on veut
If Nombre = MessageNumero Then

' Récupère la ligne suivante dans le fichier
Line Input #lFile, Ligne
' La sauvegarde dans Message
Message = Ligne

' Récupère la prochaine ligne dans le fichier
Line Input #lFile, Ligne
' La rajoute à Message
Message = Message & vbCrLf & Ligne

' Quitte la boucle
Exit Do

End If

' Boucle tant qu'on est pas rendu à la fin du fichier
Loop Until EOF(lFile)

' Ferme le fichier(important)
Close #lFile

' Renvoie le Message, s'il n'à pas été trouver une chaine vide est renvoyer
LireMessage = Message

End Funtion

/*********************************************************/
Exemple:

' Lors d'un clique sur une Form par exemple
Private Sub Form_Click()

' Les variables
' Va contenir les nombres total de message présent dans le fichier
Dim TotalMessage As Long
' Va contenir le numéro du message choisi au hazzard
Dim MsgNumero As Long

' Récupère le nombre total de messages présent dans le fichier
TotalMessage = NombreMessage("c:\config.txt")

' Si le fichier contient des messages
If TotalMessage Then

Randomize Timer
' Choisi un chiffre au hazzard, -1 parce que RDN commence à zéro
MsgNumero = Int(RND * (TotalMessage - 1))

' Récupère le message et l'envoie dans un TextBox, incrémente MsgNumero de 1 en paramètre
Text1.Text = LireMessage("c:\config.txt", (MsgNumero + 1))

Else

' Aucun message trouver dans le fichier
MsgBox "Le fichier ne contient aucun message.", vbOkOnly + vbExclamation, "Erreur"

End If

End Sub

L'idée est la! :P Désoler s'il y à des fautes et/ou autres...
Je n'est pas essayer car je vient tout juste de le faire ici, mais logiquement ca devrais bien fonctionner, enfin j'espère :), si ca ne fonctionne pas du tout écrit-moi!
Et je suis vraiment désoler si ce n'est pas ca que tu voulais :\ Bref j'espère t'avoir aider un peu :)

[mailto:NitRic28@Hotmail.com NitRic]
0
Rejoignez-nous