Construire l'environnement Nginx de docker J'étais accro au marais et je n'ai rien étudié, alors j'ai fait un changement à Othello cette fois. Fondamentalement, cela ne s'écarte pas de la portée du didacticiel, j'ai donc pensé que c'était parfait pour réviser la grammaire. Quant à la structure de cette section, nous allons d'abord introduire le jeu ● × puis introduire le codage d'Othello.
Créer Othello ・ Création de board ・ Placement de pierre ・ Retournez la pierre · Répéter Je pense que cela fonctionnera si seuls les quatre éléments de ⬆️ peuvent être effectués
ruby: 2.5.3
Comme il est verticalement long, certaines pièces ont été modifiées.
line1 = "123" line2 = "456" line3 = "789" n = 1
puts line1
met line2 ⇨ 3 * 3 carrés sont créés, après cela, cette partie est abrégée en (*).
puts line3
puts "#{n}Tour: tour du joueur 1"
input = gets.to_i
unless input >10 ⇨ Jouez autrement que 1-9 dans cette branche
if 1 <= input && input <= 3
line1.gsub!("#{input}", "×")⇨ Méthode de remplacement de caractères gsub
elsif 4 <= input && input <= 6
line2.gsub!("#{input}", "×")
else
line3.gsub!("#{input}", "×")
end
else
puts "Valeur illégale. Pénalité: sauter"
end
(*) n+= 1
while n <10 ⇨ Comme il ne peut être répété qu'un nombre pair de fois, le premier a été supprimé de while.
puts "#{n}Tour 2 Tour du joueur 2"
input = gets.to_i
unless input > 10
if 1 <= input && input <= 3
line1.gsub!("#{input}", "●")
elsif 4 <= input && input <= 6
line2.gsub!("#{input}", "●")
else
line3.gsub!("#{input}", "●")
end
else puts "Valeur illégale. Pénalité: sauter"
end
(*) n += 1
puts "#{n}Tour: tour du joueur 1"
input = gets.to_i
unless input > 10
if 1 <= input && input <= 3
line1.gsub!("#{input}", "×")
elsif 4 <= input && input <= 6
line2.gsub!("#{input}", "×")
else
line3.gsub!("#{input}", "×")
end
else puts "Valeur illégale. Pénalité: sauter"
end
(*) n += 1
end
Comme ça. Il est composé de phrases intuitives. Cependant, si vous faites cela avec Othello, vous vous retrouverez avec des instructions redondantes, vous pouvez donc utiliser des tableaux pour créer des images comme des matrices mathématiques et des fonctions quadratiques.
BL = "●" WH = "○" wall = "+" blank = "*" field = []
m_row = 10 m_col = 10
#Initialisation
m_row.fois ☆ Entré de 0 à 99 à ce stade
row = []Le tableau est complet. Cependant, toujours
m_col.fois faire À ce stade, une planche 8 * 8 est terminée
row <<Puisqu'il n'y a pas de blanc, effectuez le traitement.
end
field << row
end
#Création de mur
0.upto(m_col - 1) do |i|☆ Faites des murs dans les 0e et 9e rangées
field[0][i] = wall field[m_row - 1 ][i] = wall
end
0.upto(m_row - 1 ) do |i|☆ Faites des murs sur les lignes 0 et 9
field[i][0] = wall field[i][m_col - 1] = wall
end
#Position initiale ⇨ Avec le coin supérieur gauche comme origine
field[4][4] = WH field[5][5] = WH
field[4][5] = BL field[5][4] = BL
def print_field(field, m_row)⇨ Méthode de préparation au tableau
print " 123456789\n"⇨ Ici\n Si vous ne le mettez pas, il changera
for i in 0..m_row -1 ⇨ Méthode itérative
print i.to_s ☆ À ce moment\Sans n
row = field[i] +++++++++++********++********...
row.each do |stone|Il est affiché comme
print stone
end
print "\n"
end
end
#Méthode à l'envers(Noir ⇨ blanc)
def reverse_black(bl_row, bl_col, field)
direcrions = [[-1,0], [-1,1], [0,1], [1,1], [1,0], [0,-1], [-1,-1]]
direcrions.each do |direction|☆ Jugez les pierres adjacentes une par une dans le sens des aiguilles d'une montre
reverse_pos = []⇨ Si vous trouvez une pierre ennemie, stockez-la
reverse_row = bl_row + direction[0].to_i ⇨ Confirmation de la position absolue
reverse_col = bl_col + direction[1].to_i
if field[reverse_row][reverse_col] != "●"⇨ S'il ne s'agit pas de la pierre d'un ami, procédez au traitement tel quel
next
end
reverse_flag =false ⇨ Déterminer s'il s'agit d'un ennemi
reverse_pos << [reverse_row, reverse_col]⇨ Stocker le placement des ennemis
tandis que vrai ☆ À la pointe de la pierre qui s'étend à partir de là
reverse_row += direction[0]S'il y a une pierre alliée, rangez-la là
reverse_col += direction[1]
if field[reverse_row][reverse_col] == "●"
reverse_pos << [reverse_row, reverse_col]
elsif field[reverse_row][reverse_col] == "○"
reverse_flag = true
break
else
break
end
end
if reverse_flag Transforme la pierre stockée en une pierre amicale
reverse_pos.each do |pos|
field[pos[0]][pos[1]] = "○"
end end end end
#Méthode à l'envers(Blanc ⇨ noir)
def reverse_white(wh_row, wh_col, field)
direcrions = [[-1,0], [-1,1], [0,1], [1,1], [1,0], [0,-1], [-1,-1]]
direcrions.each do |direction|
reverse_pos = []
reverse_row = wh_row + direction[0].to_i
reverse_col = wh_col + direction[1].to_i
if field[reverse_row][reverse_col] != "○"
next
end
reverse_flag = false
reverse_pos << [reverse_row, reverse_col]
while true
reverse_row += direction[0]
reverse_col += direction[1]
if field[reverse_row][reverse_col] == "○"
reverse_pos << [reverse_row, reverse_col]
elsif field[reverse_row][reverse_col] == "●"
reverse_flag = true
break
else
break
end
end
if reverse_flag
reverse_pos.each do |pos|
field[pos[0]][pos[1]] = "●"
end end end end
#Poste initial terminé
print_field(field, m_row)
while true do
#Mettre une pierre
puts "C'est un tour noir Exemple d'entrée: 2(Verticale),3(côté) "
puts "Vertical et horizontal(virgule)Entrez p pour les chemins séparés par"
bl_side = gets
unless bl_side == "p"
bl_side = bl_side.split(",")⇨ Puisqu'il s'agit d'un type chaîne, c'est un entier
bl_row = bl_side[0].to_Fermement changé en i
bl_col = bl_side[1].to_i
field[bl_row][bl_col] =BL ⇨ Placer une pierre dans une position absolue depuis l'origine
reverse_white( bl_row, bl_col, field)
print_field(field, m_row)
end
puts "C'est un tour blanc Exemple d'entrée: 2(Verticale),3(côté) "
puts = "Vertical et horizontal(virgule)Entrez p pour les chemins séparés par"
wh_side = gets
unless wh_side == "p"
wh_side = wh_side.split(",")
wh_row = wh_side[0].to_i
wh_col = wh_side[1].to_i
field[wh_row][wh_col] = WH
reverse_black( wh_row, wh_col, field)
print_field(field, m_row)
end
end
Veuillez modifier et utiliser le cas échéant.
Ce qui n'a pas pu être implémenté dans Othello · Les fonctions ・ Fonction d'annulation ・ Une fonction pour rediriger les lieux qui ne peuvent pas être placés
Je me demande si ce domaine est assez complet. Je pense que je peux faire ces échecs.
.. .. .. Shogi est impossible avec la capacité actuelle www
Recommended Posts