Cześć,
piszę na zaliczenie grę, która ma działać podobnie jak snake. Typ chodzi i zbiera zwierzęta z pola, które powinny być przyłączane do jego 'ogona'.
Tyle udało mi się napisać:
import java.awt.Color;
import javax.swing.JFrame;
public class Schronisko extends JFrame {
public Schronisko(){
add(new Pole());
setBackground(Color.black);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(17*40, 14*40);
setLocationRelativeTo(null);
setTitle("SCHRONISKO");
setResizable(false);
setVisible(true);
Pole.rysuj();
}
public static void main(String[] args){
new Schronisko();
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Pole extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
static int pole[][] = new int[13][17];
Image cegla;
Image kot;
Image pies;
Image head;
private Ruch ruch1= new Ruch(this);
public Pole(){
this.setFocusable(true);
addKeyListener(ruch1);
}
public static void rysuj(){
int tablica[][]={
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,3,0,3,0,0,0,3,1,1,1,0,0,3,1},
{1,0,0,0,0,3,0,0,0,3,1,0,0,0,0,0,1},
{1,0,0,3,0,3,0,0,0,3,1,0,1,0,0,3,1},
{1,0,0,0,0,3,0,0,0,3,1,0,1,0,0,0,1},
{1,0,0,3,0,3,0,0,0,0,0,0,1,0,0,3,1},
{1,0,0,0,0,3,0,0,0,0,0,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,4,0,0,1,1,0,0,3,1},
{1,0,0,0,0,3,0,0,0,0,0,1,1,0,0,0,1},
{1,0,0,0,0,3,0,0,0,3,0,1,1,0,0,3,1},
{1,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,1},
{1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
for (int i = 0; i< tablica.length; i++){
for (int j =0; j<tablica[i].length; j++ ) {
Pole.pole[i][j] = tablica[i][j];
}
}
}
public void paint(Graphics g) {
ImageIcon iic = new ImageIcon(this.getClass().getResource("cegłam.png"));
cegla = iic.getImage();
ImageIcon iid = new ImageIcon(this.getClass().getResource("kotzm.png"));
kot = iid.getImage();
ImageIcon iia = new ImageIcon(this.getClass().getResource("kotbm.png"));
pies = iia.getImage();
ImageIcon iih = new ImageIcon(this.getClass().getResource("smm.png"));
head = iih.getImage();
rysujPole(g);
}
public void rysujPole(Graphics g){
for (int i=0; i<pole.length; i++){
for (int j=0; j<pole[0].length; j++){
switch(pole[i][j])
{
case 0:
g.setColor(Color.BLACK);
g.fillRect(40*j, 40*i, 40, 40);
break;
case 1:
g.drawImage(cegla, 40*j, 40*i, this);
break;
case 2:
g.drawImage(kot, 40*j, 40*i, this);
break;
case 3:
g.drawImage(pies, 40*j, 40*i, this);
break;
case 4:
g.drawImage(head, 40*j, 40*i, this);
break;
}
}
}
}
}
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Ruch implements KeyListener {
private Pole pole1;
int poz1 = 7;
int poz2 = 8;
public Ruch(Pole pole1) {
this.pole1= pole1;// TODO Auto-generated constructor stub
}
public void kierunek(){
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case KeyEvent.VK_LEFT:
if(Pole.pole[poz1][poz2-1]==0)
{
Pole.pole[poz1][poz2-1]=4;
Pole.pole[poz1][poz2]=0;
poz2--;
}
else if((Pole.pole[poz1][poz2-1]==3))
{
//dodaj
}
else if((Pole.pole[poz1][poz2-1]==1))
{
//KONIEC
}
break;
case KeyEvent.VK_UP:
if(Pole.pole[poz1-1][poz2]==0)
{
Pole.pole[poz1-1][poz2]=4;
Pole.pole[poz1][poz2]=0;
poz1--;
}
break;
case KeyEvent.VK_RIGHT:
if(Pole.pole[poz1][poz2+1]==0)
{
Pole.pole[poz1][poz2+1]=4;
Pole.pole[poz1][poz2]=0;
poz2++;
}
break;
case KeyEvent.VK_DOWN:
if(Pole.pole[poz1+1][poz2]==0 )
{
Pole.pole[poz1+1][poz2]=4;
Pole.pole[poz1][poz2]=0;
poz1++;
}
break;
}
pole1.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
W klasie ruch możliwy jest już ruch typka po całej planszy. Ale nie umiem rozwiązać problemu jak po 'spotkaniu' ze zwierzęciem, ma sie ono w tej tablicy dwuwymiarowej przyłączyć do typka i podążać za nim.. proszę o pomoc