Question aide pour créer une sauvegarde de meilleur score

Plus d'informations
il y a 6 mois 16 heures #29736 par titi.jmg
Bonsoir à tous , je suis débutant sur powershell (quelques heures de pratiques et utilisation de quelques scripts basique lors de ma formation d'admin réseau)

J'ai eu envie pour apprendre un peu plus et mieux comprendre powershell, de faire un petit jeu basique de génération d'un nombre aléatoire qu'un joueur devrait trouver.

J'ai réussi cette partie et si cela intéresse quelqu'un, je vous le donnerais plus tard si vous le souhaitez.

Je l'ai ensuite fait évolué en ajoutant un compteur de coup (avec l'aide de mon formateur),puis un compteur de parties, puis un choix parmi 3 niveaux de difficultés (et tout cela fonctionne).

Je me suis ensuite lancé un nouveau défi qui consistait à sauvegarder les données du joueur avec comme données:
son nom, le nombre total de parties jouées, ainsi que le nombre de parties suivant le niveau de difficulté
(là encore cela fonctionne).
J'ai encore voulu repousser les limites et c'est là que je bloque depuis plusieurs heures; j'aurais aimé sauvegarder le meilleur score dans chaque niveau de difficulté et le sauvegarder dans mon fichier texte mais là sa ne fonctionne pas, pire encore cela perturbe le reste du script au point que les décomptes du nombre de parties s'en retrouve faussés.

Je pensais mettre l'action de sauvegarde du meilleur score dans une variable afin que sa n'écrase uniquement le score précédent que si celui-ci était battu

[code:1][int]$mscore3=Get-Content -Path \"c:\dossier_jeu nombre aléatoire\$nom.txt\" | where { $_ -ne \"$null\" } | Select-Object -Index 7

Add-Content -path $file -value \"$score3\"
#si meilleur score dans une partie niveau3


if ([int]$hscore3= ([int]$score3 -lt [int]$mscore3))
{
$speak.Speak(\"bravo $nom tu as fait ton meilleur score pour une parties de niveau 3\"«»)
get-Content -Path \"c:\dossier_jeu nombre aléatoire\$nom.txt\" |Select-Object -Index 7 | add-Content -path $file -value \"$hscore3\" -Force
}[/code:1]

Je pensais utiliser le $mscore pour dire à un joueur la valeur de son meilleur score dans une phrase en fonction de la détection d'une sauvegarde à son nom.
Le ad-content pour le score normal et du coup mon if pour écraser le score enregistré précédemment si celui-ci était supérieur au nouveau score réalisé par le joueur .
Si vous avez une idée ou une solution à m'expliquer ou à me proposer je suis preneur.
Merci d'avance pour vos réponse et bonne soirée à tous.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 mois 4 semaines #29740 par titi.jmg
Bonsoir, je continu de m'acharner pour trouver une solution à mon problème.

J'ai un peu avancé en créant une valeur d'essais par défaut ($mscore = 50), je l'ai inscris dans mon document texte qui sert de sauvegarde et j'ai créé une condition pour écraser cette valeur si le joueur réussi à finir la partie en faisant - de 50 coups (ce qui est largement réalisable:) .

Malheureusement pour moi, je bloque maintenant sur cette partie car le jeu me prends bien cette valeur pour ma condition de meilleurs score mais la sauvegarde ne se fait pas.

Voici ce que j'ai fais, si vous voyez une solution faites moi en part afin de finir ce projet et me lancer dans plus compliqué (un jeu du pendu en powershell ou je vous demanderais certainement de l'aide quand je m'y mettrais).

[code:1]#message partie de niveau3 et sauvegarde meilleur score

if ([int]$choix -eq '3')
{
$speak.Speak(\"bravo $nom tu as trouvé, tu as gagné en $coups3 essais \"«»)
$speak.Speak(\"$nom tu as joué $partie3 parties de niveau 3\"«»)
}
if ($hscore3 -eq $true )
{
$speak.Speak(\"bravo $nom tu as fait ton meilleur score pour une parties de niveau 3\"«»)
get-Content -Path $file | select-object -Index 7 | set-Content -path \"$hscore3\" -force
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 mois 4 semaines #29742 par 6ratgus
salut titi.jmg

bravo pour ton travail !

je suppose que dans ton fichier tu a true ou false au lieu du score ?

[code:1]get-Content -Path $file | select-object -Index 7 | set-Content -path \&quot;$hscore3\&quot; -force[/code:1]remplace $hscore par $mscore<br><br>Message édité par: 6ratgus, à: 21/03/20 11:36

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 mois 3 semaines #29754 par titi.jmg
Bonsoir, j'avance encore un peu mais je n'arrive pas a obtenir le résultat que je voudrais.

[code:1]#message partie de niveau3 et sauvegarde meilleur score

if ([int]$choix -eq '3')
{
$speak.Speak(\&quot;bravo $nom tu as trouvé, tu as gagné en $coups3 essais \&quot;«»)
$speak.Speak(\&quot;$nom tu as joué $partie3 parties de niveau 3\&quot;«»)

#valeur à enregistrer lors de la 1ère partie

if ($partie -eq 1)
{
add-Content -Path $file -value \&quot;$mscore1\&quot; -force
add-Content -Path $file -value \&quot;$mscore2\&quot; -force
add-Content -Path $file -value \&quot;$score3\&quot; -force
}


if ($hscore3 -eq $true )
{
$speak.Speak(\&quot;bravo $nom tu as fait ton meilleur score pour une parties de niveau 3\&quot;«»)

#valeur à écrire lors d'une 2ème partie voir plusieurs

if ($partie -ne 1)
{
add-Content -Path $file -value \&quot;$a1\&quot; -force
add-Content -Path $file -value \&quot;$a2\&quot; -force
add-Content -Path $file -value \&quot;$score3\&quot; -force
cls
}
}
}
[/code:1]

J'ai tenté avec la variable $a1 et $a2 de conserver la valeur qui se trouve sur les lignes 5 et 6 de mon fichier texte de sauvegarde mais malheureusement sa ne me les conserve pas.

Si vous avez une solution pour conserver une valeur d'une ligne dans une fichier texte et de ne modifier qu'une ligne précise je suis à l'écoute de vos suggestions car là je bloque complètement et j'ai l'impression que chaque tentatives de modifications me fais revenir en arrière au lieu de me rapprocher de la solution à mon problème.

Merci d'avance pour vos réponses<br><br>Message édité par: titi.jmg, à: 27/03/20 20:07

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 mois 2 semaines #29759 par 6ratgus
titi.jmg écrit:

Si vous avez une solution pour conserver une valeur d'une ligne dans une fichier texte et de ne modifier qu'une ligne précise je suis à l'écoute de vos suggestions

les commandes classique ne permettent pas de modifier qu'une ligne d'un fichier
normalement il faut lire et écrire le fichier en entier.

tu peut aussi lire un fichier ligne par ligne avec streamreader.ReadLine
voici un exemple pour lire un fichier de configuration
ligne après ligne tu recherche la ligne a modifier et
après modification éventuelle tu écris chaque ligne avec StreamWriter.WriteLine

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.157 secondes
Propulsé par Kunena