私の "board"変数が私のコンパイラを狂わせさせてしまい、どうしてわからないのですか?このクラスは私のプロジェクトの他のクラスを参照していないので、なぜそれがこれをしているのか混乱しています。私の主な目的は、上記の行と列の変数をボードの寸法として定義したCharactersの2D配列を作成することです。私はすべてを試しましたが、それはまだ動作しません。コメントアウトコードは私の最新の試みでした。 // VARボード2次元配列の文字を作成するとSourceKitがクラッシュする
import Foundation
class Board: NSObject {
let rows: Int = 6
let columns: Int = 7
var boardRow: [Character] = [Character].init(count: 6, repeatedValue: " ")
var boardColumn: [Character] = [Character].init(count: 7, repeatedValue: " ")
//var board: [[Character]] = [boardRow][boardColumn]
// evaluation table for checking state of board ~~ not my code
var evaluationTable = [[3, 4, 5, 7, 5, 4, 3], [4, 6, 8, 10, 8, 6, 4], [5, 8, 11, 13, 11, 8, 5], [5, 8, 11, 13, 11, 8, 5], [4, 6, 8, 10, 8, 6, 4], [3, 4, 5, 7, 5, 4, 3]]
func Board() {
createBoard()
displayContent()
}
func createBoard() {
for i in 0..<rows {
for j in 0..<columns {
board[i][j] = " "
}
}
}
func displayContent() {
print(" 1 2 3 4 5 6 7")
for j in 0..<rows {
for k in 0..<columns {
print("[" + board[j][k] + "]")
}
print()
}
print("---------------------------------------------------")
}
func insert(column: Int, protagonist: Character) -> Bool {
if (column > 6 || column < 0 || board[0][column] != " ") {
return false
}
else {
for (var i = rows-1; i >= 0; i -= 1) {
if (board[i][column] == " ") {
board[i][column] = protagonist;
break
}
}
return true
}
}
func remove(column: Int) {
for i in 0..<rows {
if (board[i][column] != " ") {
board[i][column] = " "
break
}
}
}
func areWeDone() -> Character {
//check for win horizontally
for (var row = 0; row < rows; row += 1) {
for (var col=0; col<columns-3; col += 1) {
if (board[row][col] != " " && board[row][col] == board[row][col+1] && board[row][col] == board[row][col+2] && board[row][col] == board[row][col+3]) {
return board[row][col]
}
}
}
// My up and down checker
for (var row = 0; row < rows-3; row++) {
for (var col = 0; col < columns; col++) {
if (board[row][col] != " " &&
board[row][col] == board[row+1][col] &&
board[row][col] == board[row+2][col] &&
board[row][col] == board[row+3][col]) {
return Character(board[row][col])
//return board[row][col]
}
}
}
// My diagonal checker
for (var row = 0; row < rows-3; row += 1) {
for (var col = 0; col < columns-3; col++) {
if (board[row][col] != " " &&
board[row][col] == board[row+1][col+1] &&
board[row][col] == board[row+2][col+2] &&
board[row][col] == board[row+3][col+3]) {
return board[row][col]
//return board[row][col]
}
}
}
// My diagonal checker
for (var row = 3; row < rows; row++) {
for (var col = 0; col < columns-3; col += 1) {
if (board[row][col] != " " &&
board[row][col] == board[row-1][col+1] &&
board[row][col] == board[row-2][col+2] &&
board[row][col] == board[row-3][col+3]) {
return board[row][col]
//return Character(board[row][col])
}
}
}
return " ";
}
func isTiePresent() -> Bool {
for j in 0..<columns {
if (board[0][j] == " ") {
return false
}
}
return true
}
func isMoveAllowed(column: Int) -> Bool {
if (column > 6 || column < 0 || board[0][column] != " ") {
return false
} else {
return true
}
}
func analyze() -> Int {
let utility = 128
var sum = 0
for i in 0..<rows {
for j in 0..<columns {
if (board[i][j] == "O") {
sum += evaluationTable[i][j]
} else if (board[i][j] == "X"){
sum -= evaluationTable[i][j]
}
}
}
return utility + sum
}
}
あなたは実際にどのような問題に直面していますか? – Eiko
@ Lagos341:サイドノートでは、 'areWeDone()'は 'Character?'(文字[オプション](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics)を返します。 .html#// apple_ref/doc/uid/TP40014097-CH5-ID330))を使用してください。これにより '' "のような任意の[センチネル値](https://en.wikipedia.org/wiki/Sentinel_value)ではなく' nil'を返すことができます。 – Alexander
@Eiko SourceKitはクラッシュし続けます。私が書いたコードでは、問題のない文字の2D配列を作成できないようです。 – Lagos341