![](/img/trans.png)
[英]Checking if a row of a 2-dimensional array exists anywhere within another array
[英]Checking adjacent tiles in 2-dimensional array
所以我試圖用 Java 制作一個連接四的游戲,而不是我連接 6 而不是 4。
我有一個二維數組和 X 數量的玩家。 我必須檢查連續 6 個塊(水平、垂直和對角線)是否由同一玩家標記。 如果是,程序應該打印誰贏了。
現在,我在檢查或確定誰獲勝方面沒有問題,盡管在我的一生中,我無法弄清楚如何防止程序在嘗試檢查數組外的塊時崩潰。
現在,我試圖避免使用 try-catch 或一個接一個地執行 8 個循環,而是對所有方向使用一種方法,只是參數有所變化,但我似乎無法使其工作:\\
有沒有人對這可能如何工作有任何建議?
我是編程的初學者,我可能錯過了一些東西,所以這就是我尋求幫助的原因:)
干杯
編輯:這是代碼。 它有點長,這就是為什么我想縮短它並使其以某種方式工作。 Terminal 類與 System.out.println 類相同。
void checkIfPlayerWins(Field field, Integer rowNumber, Integer colNumber) {
Integer counter = 1;
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber, colNumber + i)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber - i, colNumber + i)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber - i, colNumber)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber - i, colNumber - i)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber, colNumber - i)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber + i, colNumber - i)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber + i, colNumber)) {
counter++;
} else {
break;
}
}
for (int i = 1; i <= 6; i++) {
if (field.isOccupied(rowNumber + i, colNumber + i)) {
counter++;
} else {
break;
}
}
if (counter == 6) {
Terminal.printLine("");
}
}
這是 isOccupied 方法
boolean isOccupied(Integer x, Integer y) {
return !this.field[x][y].equals("**");
}
您可以簡單地處理您嘗試在isOccupied
方法中檢查Field
是否在無效坐標處被占用的情況:
boolean isOccupied(Integer x, Integer y) {
if(x < 0 || y < 0 || x >= numberOfColumns || y >= numberOfRows) {
// Attempting to check outside the grid: it's non-occupied.
return false;
}
return !this.field[x][y].equals("**");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.