Question Jeux de script d'hiver 2008

Plus d'informations
il y a 17 ans 4 mois #3066 par Grégory
Histoire de progresser je me suis lancé dans les JSH 2008

j'en suis au premier et déjà je bloque :laugh:

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 :laugh:

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.

Plus d'informations
il y a 17 ans 4 mois #3072 par Laurent Dardenne
Salut,
Nostra écrit:

Histoire de progresser je me suis lancé dans les JSH 2008

Bonne idée, et ils ne sont pas si évident qu'ils en ont l'air.
Nostra écrit:

je voudrais un tableau genre :
[code:1]
tab(0,0)=roi
...
[/code:1]

Donc un tableau à 2 dimension, contenant une string :
[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.

Plus d'informations
il y a 17 ans 4 mois #3073 par Grégory
Réponse de Grégory sur le sujet Re:Jeux de script d'hiver 2008
Merci beaucoup Laurent

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.

Plus d'informations
il y a 17 ans 4 mois #3075 par Laurent Dardenne
Salut,
Nostra écrit:

par contre ça me les renvoie pas dans l'ordre :

On aurait pu penser, moi le premier, qu'une hashtables était classée selon le hashcode mais il n'en ai rien :
[code:1]$tab.Getenumerator()|% {\&quot;{0} {1}\&quot; -F $_.Name,$_.GetHashCode()}[/code:1]
Une hashtable ne respecte pas donc pas l'ordre d'insertion.
Nostra écrit:

je suis parti sur cette solution
[code:1]
$tab=@{}
$i=1
do
{
$carte=\&quot;carte\&quot;+$i
$tab.$carte=@{nom=\&quot;\&quot;;couleur=\&quot;\&quot;}
$i++
}until($i -eq 6)
[/code:1]

Dans ce cas et par convention on utilise plutot une boucle for, ce qui réduit la taille du code :
[code:1]
$NbCartes=5
$tab=@{}
for ($I=1;$I -le $NbCartes;$I++)
{ $tab.\&quot;carte$i\&quot;=@{nom=\&quot;\&quot;;couleur=\&quot;\&quot;} }

$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.

Plus d'informations
il y a 17 ans 4 mois #3092 par Grégory
Réponse de Grégory sur le sujet Re:Jeux de script d'hiver 2008
j'ai quasi fini le premier il me reste un cas d'erreur à traiter (mais je galère dessus depuis hier )

je me suis attaqué au troisième histoire de changer un peu :

[code:1]
get-childitem c:\scripts|where{$_.name -match \&quot;.txt\&quot; -and $_.name -ne \&quot;Newfile.txt\&quot;}|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 :huh:

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

Plus d'informations
il y a 17 ans 4 mois #3098 par Laurent Dardenne
Nostra écrit:

j'ai quasi fini le premier il me reste un cas d'erreur à traiter (mais je galère dessus depuis hier )

Communique nous le script.
Nostra écrit:

ça me semble bizarre que ça tienne que sur 1 ligne

Bah tout est codé en pipeline :) [code:1]
get-childitem c:\scripts|`
where{$_.name -match \&quot;.txt\&quot; -and $_.name -ne \&quot;Newfile.txt\&quot;}|`
foreach{get-content c:\scripts\$_ -totalcount 1|`
out-file -filepath c:\scripts\Newfile.txt -append -force}
[/code:1]
Si tu prends \&quot;les specs\&quot; cela correspond tout à fait.

Tutoriels PowerShell

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

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