Meine "Board" -Variable führt dazu, dass mein Compiler verrückt wird, und ich habe keine Ahnung warum. Diese Klasse referenziert keine andere Klasse in meinem Projekt und ich bin verwirrt darüber, warum es das tut. Mein Hauptziel ist es, ein 2D-Array von Zeichen mit den oben definierten Zeilen- und Spaltenvariablen als Dimensionen meines Boards zu erstellen. Ich habe alles versucht und es wird immer noch nicht funktionieren. Der Kommentarcode war mein letzter Versuch.SourceKit stürzt beim Erstellen von 2D-Array von Zeichen ab
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
}
}
Mit welchem Problem haben Sie eigentlich konfrontiert? – Eiko
@ Lagos341: Auf einer Randnotiz sollte 'areWeDone()' ein 'Zeichen?' Zurückgeben (Zeichen [optional] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics .html # // Apple_ref/doc/uid/TP40014097-CH5-ID330)), anstatt nur 'Zeichen'. Dies erlaubt Ihnen, 'nil' anstelle eines beliebigen [sentinel value] (https://en.wikipedia.org/wiki/Sentinel_value) wie' "" 'zurückzugeben. – Alexander
@Eiko SourceKit stürzt ab. Mit dem Code, den ich geschrieben habe, kann ich kein 2D-Array von Zeichen erstellen, ohne Probleme zu haben. – Lagos341