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