Мне нужно сделать игру с четырьмя друзьями, используя scala. Я прикрепил код, но каждый раз, когда игра запускается и добирается до строки 3, она просто продолжает менять вторую запись строки вместо перехода к следующей строке. Любая помощь будет оценена по достоинству. Я нашел этот код на another thread здесь и не мог понять, как заставить его работать:Connect-Four Game в Scala
// makes the board
val table = Array.fill(9,8)('-')
var i = 0;
while(i < 8){
table(8)(i) = (i+'0').toChar
i = i+1;
}
// prints starting board
def printBoard(table: Array[Array[Char]]) {
table.foreach(x => println(x.mkString(" ")))
}
//player 1 moves
def playerMove1(){
val move = readInt
var currentRow1 = 7
while (currentRow1 >= 0)
if (table(currentRow1)(move) != ('-')) {
currentRow1 = (currentRow1-1)
table(currentRow1)(move) = ('X')
return (player2)}
} else {
table(currentRow1)(move) = ('X')
return (player2)
}
}
//player 2 moves
def playerMove2(){
val move = readInt
var currentRow2 = 7
while (currentRow2 >= 0)
if (table(currentRow2)(move) != ('-')) {
currentRow2 = (currentRow2-1)
table(currentRow2)(move) = ('O')
return (player1)}
} else {
table(currentRow2)(move) = ('O')
return (player1)
}
}
//player 1
def player1(){
printBoard(table)
println("Player 1 it is your turn. Choose a column 0-7")
playerMove1()
}
//player 2
def player2(){
printBoard(table)
println("Player 2 it is your turn. Choose a column 0-7")
playerMove2()
}
for (turn <- 1 to 32){
player1
player2
}
Пожалуйста, ссылка на упомянутую нити, настроить заголовок и первое предложение - я просто не понимаю, что вы хотите сказать .... – Markus
жаль не разъяснение. Когда я запустил этот код, нижние две строки будут заполняться, но когда я перейду на ввод X или O в столбце, он просто переключит вторую запись вместо перехода к следующей строке. heres the lonk to another thread http://stackoverflow.com/questions/27073660/connect-four-game-in-scala –
Странно, это напоминает мне [Stack Sort] (https://xkcd.com/1185/). Перейти к теме: У вас, похоже, есть дополнительный '}' перед каждым предложением 'else', поэтому этот код не будет компилироваться. Кроме того, в конце обоих, 'then'-body и' else'-body вы возвращаетесь, поэтому 'currentRow1' /' currentRow2' больше не будет уменьшаться. –