Cześć
Sprawa wygląda tak, że muszę zrobić projekt z programowania obiektowego. Ale w związku z tym, że programowanie nie jest moją mocną stroną to wziąłem jakiś gotowy projekt z internetu. No i tu zaczęły się schody bo okazało się, że dwie klasy to za mało więc postanowiłem to rozdzielić na własną rękę. Z klasy PanelGry wziąłem kod na sterowanie wężem i zrobiłem z tego klasę Gracz. Są tam zmienne gora, dol, lewo, prawo, start. Ale w klasie PanelGry została metoda, która te zmienne wykorzystuje (drugi kod). Próbowałem to zrobić tym samym sposobem jak przy rozdzielaniu innych klas, więc dałem private Gracz gora, dol, lewo, prawo, start; myśląc że to zadziała. Niestety skończyło się to na błędach typu Type mismatch: cannot convert from Gracz to boolean
oraz The operator && is undefinied for the argument type Gracz, boolean
. Kiedy ten kod był w jednej klasie to cały Snake działał bez problemu. Problem pewnie jest banalny, ale sam tego nie zrobię dlatego liczę na czyjąś pomoc.
public class Gracz implements KeyListener{
private boolean gora, dol, lewo, prawo, start;
@Override
public void keyPressed(KeyEvent e) {
int k = e.getKeyCode();
if (k == KeyEvent.VK_UP || k == KeyEvent.VK_W)
gora = true;
if (k == KeyEvent.VK_DOWN || k == KeyEvent.VK_S)
dol = true;
if (k == KeyEvent.VK_LEFT || k == KeyEvent.VK_A)
lewo = true;
if (k == KeyEvent.VK_RIGHT || k == KeyEvent.VK_D)
prawo = true;
if (k == KeyEvent.VK_SPACE)
start = true;
}
@Override
public void keyReleased(KeyEvent e) {
int k = e.getKeyCode();
if (k == KeyEvent.VK_UP || k == KeyEvent.VK_W)
gora = false;
if (k == KeyEvent.VK_DOWN || k == KeyEvent.VK_S)
dol = false;
if (k == KeyEvent.VK_LEFT || k == KeyEvent.VK_A)
lewo = false;
if (k == KeyEvent.VK_RIGHT || k == KeyEvent.VK_D)
prawo = false;
if (k == KeyEvent.VK_SPACE)
start = false;
}
@Override
public void keyTyped(KeyEvent e) {
}
}
private void update() {
if(koniecgry){
if(start){
sDzwiek.play();
sDzwiek.petla();
setNastPoziom();
}
return;
}
if (gora && dy == 0) {
dy = -ROZMIAR;
dx = 0;
}
if (dol && dy == 0) {
dy = ROZMIAR;
dx = 0;
}
if (lewo && dx == 0) {
dy = 0;
dx = -ROZMIAR;
}
if (prawo && dx == 0 && dy != 0) {
dy = 0;
dx = ROZMIAR;
}