Question
Jeux de script d'hiver 2008
- Grégory
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
j'en suis au premier et déjà je bloque
voir ici pour l'explication : www.microsoft.com/technet/scriptcenter/f...s08/fra/bevent1.mspx
Comment construit-on des tableaux ?
Voilà le script que j'ai fait pour le moment :
[code:1]
$tabcarte = (\"un\",\"deux\",\"trois\",\"quatre\",\"cinq\",\"six\",\"sept\",\"huit\",\"neuf\",\"dix\",\"valet\",\"dame\",\"roi\"«»)
$tabcouleur = (\"coeur\",\"carreau\",\"pique\",\"trèfle\"«»)
clear
$i=0
do{
do{
switch($i){
0{$num=\"première\"}
1{$num=\"seconde\"}
2{$num=\"troisième\"}
3{$num=\"quatrième\"}
4{$num=\"cinquième\"}
}
do{
$carte=read-host \"Veuillez entrer le nom de la $num carte \"
$var=$tabcarte|where{$_ -eq $carte}
}
until ($carte -eq $var)
do{
$couleur=read-host \"Veuillez entrer la couleur de la $num carte \"
$var=$tabcouleur|where{$_ -eq $couleur}
}
until ($couleur -eq $var)
$var=$main|where{$_ -eq $carte+\" de \"+ $couleur}
if($var -ne $carte+\" de \"+ $couleur)
{
$main+=@($carte+\" de \" + $couleur)
$i++
$test=$true
}
else
{
write-host \"\"
write-host \"Cette carte a déjà été tirée, veuillez en saisir une autre \" -foregroundcolor \"red\"
write-host \"\"
$test=$false
}
}
until($test -eq $false)
}
until($i -eq 5)
write-host \"\"
write-host \"Composition de votre main :\"
$main[/code:1]
Ca marche parfaitement mais pour la suite la façon dont j'ai traité $main ($carte + \" de \" + $couleur) va me poser problème pour compter mes paires
je voudrais un tableau genre :
tab(0,0)=roi
tab(0,1)=pique
tab(1,0)=dame
tab(1,1)=coeur
tab(2,0)=deux
...
bon à mon avis je peux le faire avec mon tableau $main, en prenant par exemple les 2 premiers caractères (qui sont tous différents pour les noms de carte)
et puis je profiterai de ce topic pour vous jeter mes scripts des JSH 2008 en pâture
histoire d'avoir vos avis, les améliorations possible,la façon dont vous auriez traité le problème enfin si vous le voulez bien
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Nostra écrit:
Bonne idée, et ils ne sont pas si évident qu'ils en ont l'air.Histoire de progresser je me suis lancé dans les JSH 2008
Nostra écrit:
Donc un tableau à 2 dimension, contenant une string :je voudrais un tableau genre :
[code:1]
tab(0,0)=roi
...
[/code:1]
[code:1]
$T=new-object \"string[,]\" 5,2
[/code:1]
Regarde aussi ce post:
powershell-scripting.com/index.php?optio...id=3002&catid=14
Info : pour créer le tableau automatiquementil existe la classe system.random.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Grégory
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
hier j'ai bricolé avec 2 tableaux à 1 dimension mais j'arrivais à rien
ça m'a l'air vraiment bien les hashtable
je suis parti sur cette solution
[code:1]
$tab=@{}
$i=1
do
{
$carte=\"carte\"+$i
$tab.$carte=@{nom=\"\";couleur=\"\"}
$i++
}until($i -eq 6)
[/code:1]
par contre ça me les renvoie pas dans l'ordre :
img260.imageshack.us/my.php?image=hashtabledn3.jpg
bon je pense pas que ça soit important mais bon c'est bizarre<br><br>Message édité par: Nostra, à: 24/10/08 10:08
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Nostra écrit:
On aurait pu penser, moi le premier, qu'une hashtables était classée selon le hashcode mais il n'en ai rien :par contre ça me les renvoie pas dans l'ordre :
[code:1]$tab.Getenumerator()|% {\"{0} {1}\" -F $_.Name,$_.GetHashCode()}[/code:1]
Une hashtable ne respecte pas donc pas l'ordre d'insertion.
Nostra écrit:
Dans ce cas et par convention on utilise plutot une boucle for, ce qui réduit la taille du code :je suis parti sur cette solution
[code:1]
$tab=@{}
$i=1
do
{
$carte=\"carte\"+$i
$tab.$carte=@{nom=\"\";couleur=\"\"}
$i++
}until($i -eq 6)
[/code:1]
[code:1]
$NbCartes=5
$tab=@{}
for ($I=1;$I -le $NbCartes;$I++)
{ $tab.\"carte$i\"=@{nom=\"\";couleur=\"\"} }
$tab
[/code:1]
Bon cela fonctionne aussi comme tu le fais et mieux vaut utiliser le dynamisme de PS pour la concaténation du nom de la clé.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Grégory
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
je me suis attaqué au troisième histoire de changer un peu :
[code:1]
get-childitem c:\scripts|where{$_.name -match \".txt\" -and $_.name -ne \"Newfile.txt\"}|foreach{get-content c:\scripts\$_ -totalcount 1|out-file -filepath c:\scripts\Newfile.txt -append -force}
[/code:1]
ça me semble bizarre que ça tienne que sur 1 ligne
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Communique nous le script.j'ai quasi fini le premier il me reste un cas d'erreur à traiter (mais je galère dessus depuis hier )
Nostra écrit:
Bah tout est codé en pipelineça me semble bizarre que ça tienne que sur 1 ligne
get-childitem c:\scripts|`
where{$_.name -match \".txt\" -and $_.name -ne \"Newfile.txt\"}|`
foreach{get-content c:\scripts\$_ -totalcount 1|`
out-file -filepath c:\scripts\Newfile.txt -append -force}
[/code:1]
Si tu prends \"les specs\" cela correspond tout à fait.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Jeux de script d'hiver 2008