I am having problems with comparing elements of an Integer ArrayList (single dimension) with certain values. Is there anyone who sees what I'm doing wrong?
Here I declare the new lists:
Here I add numbers to them:
Here I check (very inefficiently probably) if there are 3 of the same items in the list:
And here I check for a diagonal win, so that would mean I have a same x and y, with 3 different values. In the contains method it goes wrong at the line "int placeholder = x.get(i);" I get the error "incompatible types: jave.lang.Object cannot be converted to in".
Every bit of help is welcome, as I searched the web for over an hour for a solution already but I can't find it.
private List listx1 = new ArrayList<Integer>(); private List listy1 = new ArrayList<Integer>(); private List listx2 = new ArrayList<Integer>(); private List listy2 = new ArrayList<Integer>();
else if(Greenfoot.isKeyDown("enter") && canPlace() && !menuTime) { int e = getX(); int f = getY(); if(player==1) { getWorld().addObject(new cross(),e,f); setImage("naught-small.png"); listx1.add(e); listy1.add(f); if(doesWin(listx1) || doesWin(listy1) || diagonalWin(listx1, listy1)) System.out.print("Hooray! Crosses wins!\n"); wait(20); player = 2; } else { getWorld().addObject(new naught(),e,f); setImage("cross-small.png"); listx2.add(e); listy2.add(f); if(doesWin(listx2) || doesWin(listy2) || diagonalWin(listx2, listy2)) System.out.print("Hooray! Naughts wins!\n"); wait(20); player = 1; } }
public boolean doesWin(List x) { Collections.sort(x); if(Collections.frequency(x, 100) == 3 || Collections.frequency(x, 300) ==3 || Collections.frequency(x, 500) == 3) return true; else return false; }
public boolean diagonalWin(List x, List y) { if(contains(x, 100) && contains(y,100)) return true; return false; } public boolean contains(List x, int z) { for(int i=0; i<x.size(); i++) { int placeholder = x.get(i); } return false; }