주제 제목이 충분히 구체적이지만 여기에 대해서는 확실하지 않습니다. 두 가지 방법이 있습니다. 하나는 블록의 조건부와 함께 일부 배열을 반복하여 올바른 데이터를 푸시하는 것입니다. 여기 내 메서드에서 결과 값을 세 번째 메서드로 반환하는 방법
다른 방법은, 내 선택 휴리스틱에 따라 그 점수를 계산 하나 그 코드def iterate_lines
WIN_COMBINATIONS.each_with_index do |line,index|
lines = @board[line[0]] + @board[line[1]] + @board[line[2]]
if lines.include?("X") && !lines.include?("O")
scores = tally_scores(lines.count("X"),"X",index)
elsif lines.include?("O") && !lines.include?("X")
scores = tally_scores(lines.count("O"),"O",index)
elsif lines.include?("X") && lines.include?("O")
scores = tally_scores(0,"",index)
elsif !lines.include?("X") && !lines.include?("O")
scores = tally_scores(0,"",index)
end
p scores
end
end
이다. 나 그냥을 할 수있는 iterate_lines '의 호출에'점수 '나는 변수로 설정하여, 여기에 표시된 것처럼, 또는'을 'iterate_lines 나도으로부터 올바른 값을 인쇄 할 수 있습니다'tally_scores를 호출
def tally_scores(score,player,index)
score = 1 if score == 1 && player == "X"
score = -1 if score == 1 && player == "O"
score = 10 if score == 2 && player == "X"
score = -10 if score == 2 && player == "O"
score = 100 if score == 3 && player == "X"
score = -100 if score == 3 && player == "O"
score
end
'iterate_lines'에서 인쇄하십시오.
당연히 'iterate_lines'의 반환 값은 배열 (WIN_COMBINATIONS)입니다. return scores
을 하드 코딩하면 분명히 마지막 값을 알 수 있습니다.
제 문제는 제가 'tally_scores'에서 나오는 것을 얻는 데 필요한 제 3의 방법이 있지만 아직 정규 인수 (별칭 my_method(scores)
)로 전달할 수 없습니다. 그 이유는 세 번째 방법은 다른 이유 때문에 전달 된 인수 목록을 소유하고 있기 때문입니다. 메소드가 호출 될 때까지는 플러스가됩니다.
def get_scores
# other code
#: something like this:
score = iterate_lines
# or
score = tally_scores
# or
# ?
end
그래서 나는 내가 모퉁이에 몸을 기울이고 내가 가지고있는 것을 휴지통으로 돌려 보내야한다고 생각합니다. 나는 'tally_scores'를 가져 와서 점수를 인스턴스 변수 배열에 넣으려고했다. 나는 그것을 지나칠 때 마지막 값을 제외하고는 모두 발견했습니다.
결코 당신이 뭔가를 할 때 명시 적으로'return'를 사용하는 상처 :
그것은 예를 들어, 다른 곳으로 인쇄 논리를 추출하는 것이 좋습니다 이렇게. –
확실히, 나는 명백한 반환을 시도했다 그러나 어디에서든지 얻지 않는다. 나는 그것이 나를 위해하는 모든 것이 하나의 가치를 얻음을 의미한다. – stuartambient
tic-tac-toe입니까? 그렇다면 일부 코드가 빠져 있기 때문에 (WIN_COMBINATIONS 및 @ board) 코드 일부가 빠져 있기 때문에 일부 작업을 이해할 수 없습니다. 몇 가지 관찰 : 1) 블록 변수'index'는 사용되지 않습니다; 1, [1, "O"] => - 1, [2, "X"] => 10을 사용할 수있는 'talley_scores' [2, "O"] => - 10, [3, "X"] => 100, [3, "X"] => - 100}'; 3)''X ''와''O "'를 행, 열 및 대각선으로 계산하여 시작하는 것이 가장 좋을 것입니다. 4) ttt 인 경우 점수를 계산하는 것이 이상한 방법으로 보입니다. –