J'essaie d'écrire un programme qui simule les jeux de dés. L'idée est de lancer cinq dés et d'obtenir le score le plus bas possible - trois ont une valeur de 0. Une fois les cinq dés lancés, le joueur/bot DOIT sélectionner au moins un dé (ou plus) parmi les cinq et lancer le reste. C'est ce qui me pose un problème. S'il n'y a pas de threes, alors le tableau "keeper" que je pousse les dés que le bot conserve devient vide, ce qui nécessite une boucle incorporée. Comme je ne connais pas vraiment le codage, je n'arrive vraiment pas à trouver un moyen de créer une boucle incorporée qui garantira qu'au moins un dé est désigné comme gardien. Pour votre santé mentale, je dirai que la version "beta" de ce programme que je vais présenter maintenant est destinée à faire ce qui suit: Créer un bot qui essaie d'obtenir le score le plus bas sur un round d'os. C'est à dire. Les dés sont roulés une fois. Puis il essaie de choisir le score le plus bas possible. S'il n'y a pas trois (l'équivalent de 0), il en choisit un. Le problème que j'essaie de résoudre est de créer une boucle incorporée qui assure qu'au moins un dé est sélectionné pour le tableau de gardien. Le code est principalement pour démontrer à quel point ma solution est laide et donner une idée pour une meilleure solution.Boucles incorporées dans Ruby
#rolls dice
srand
dice = []
5.times do
dice.push(rand(6)+1)
end
puts dice
puts " "
#initialize keeper and roll again arrays
i = 0
keeper = []
roll_again = []
#select any 3s from the dice roll and put them in keeper
dice.each do |d|
if d == 3
keeper.push(d)
else
i +=1 #dummy operation to keep if statement functioning, tragically ugly code
end
end
#in the case that no threes were rolled, ones are selected
if keeper.length == 0
dice.each do |f|
if f == 1
keeper.push(f)
else
i+= 1
end
end
else
i += 1
end
puts "Keeper:"
puts keeper
puts "Roll Again:"
puts roll_again
s'il n'y a pas trois ou les? – jtbandes
À ce stade, cela n'a pas vraiment d'importance. J'aurais continué à dire: si le tableau est encore vide, sélectionnez deux, puis quatre, etc etc Mais sans boucles intégrées je pense que ce code aurait l'air terriblement moche. À moins qu'il n'y ait aucun moyen d'utiliser des boucles incorporées. Fondamentalement, pour répondre à votre question, le programme n'est pas actuellement écrit pour simuler une ronde dans son intégralité.Tant que le programme peut être testé chaque fois qu'il y en a trois ou un dans le tableau, c'est suffisant pour mon but - qui est seulement d'apprendre à coder. – Bodhidarma
Et à quoi sert-il? Vous l'incrémentez mais ne semblez pas l'utiliser. – bassneck