ahhhhhhhhh

This commit is contained in:
Johannes Schmelz 2024-06-14 12:01:59 +02:00
parent dad5a33695
commit 62da4a9ea5
4 changed files with 32 additions and 11 deletions

Binary file not shown.

View File

@ -1,15 +1,12 @@
package uebung09.chess;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import uebung09.iterator.Array2dIterator;
public class Board implements Iterable<Piece>{
private final Piece[][] field = new Piece[8][8];
private final List<Piece> pieces = new ArrayList<>();
void add(Piece piece) {
@ -19,7 +16,6 @@ public class Board implements Iterable<Piece>{
if (existing != null)
throw new IllegalArgumentException("already occupied by " + existing);
field[piece.getRow() - 1][piece.getCol() - 1] = piece;
pieces.add(piece);
}
public void printBoard() {
@ -42,9 +38,9 @@ public class Board implements Iterable<Piece>{
}
public void check() {
for (Piece p1 : pieces) {
for (Piece p1 : this) {
System.out.println(p1.toString());
for (Piece p2 : pieces)
for (Piece p2 : this)
if (p1 != p2)
if (p1.canCapture(p2))
System.out.println(" can capture " + p2.toString());
@ -54,13 +50,22 @@ public class Board implements Iterable<Piece>{
}
public String toString() {
return pieces.toString();
// StringBuilder s = new StringBuilder("[");
// for(Piece p : this) {
// s.append(p.toString());
// }
// s.append("]");
// return s.toString();
return "";
}
@Override
public Iterator<Piece> iterator() {
// TODO Auto-generated method stub
return new Array2dIterator<>(null);
//throw new UnsupportedOperationException("Unimplemented method 'iterator'");
return new Array2dIterator<>(field);
// throw new UnsupportedOperationException("Unimplemented method 'iterator'");
}
}

View File

@ -1,6 +1,5 @@
package uebung09.iterator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
@ -14,15 +13,30 @@ public class Array2dIterator<T> implements Iterator<T>{
this.array = array;
}
/**
* Returns {@code true} if the iteration has more elements.
* (In other words, returns {@code true} if {@link #next} would
* return an element rather than throwing an exception.)
*
* @return {@code true} if the iteration has more elements
*/
@Override
public boolean hasNext() {
while(row < array.length && (array[row] == null || col >= array[row].length)) {
row++;
col = 0;
}
return row > array.length;
return row < array.length;
}
/**
* Returns the next element in the iteration.
*
* @return the next element in the iteration
* @throws NoSuchElementException if the iteration has no more elements
*/
@Override
public T next() {
if (!hasNext()) {
@ -30,4 +44,6 @@ public class Array2dIterator<T> implements Iterator<T>{
}
return array[row][col++];
}
}