import java.awt.*; import javax.swing.*; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; public class c_char extends JPanel implements KeyListener,Runnable { private c_map map; private c_main a; public int x=1,y=1; private Image char_image; private MediaTracker tracker; private boolean up = false; private boolean down = false; private boolean right = false; private boolean left = false; public int mangija_count = 0; public String nickname; public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_LEFT) { left = true; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { right = true; } if (e.getKeyCode() == KeyEvent.VK_DOWN) { down = true; } if (e.getKeyCode() == KeyEvent.VK_UP) { up = true; } } public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_LEFT) { left = false; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { right = false; } if (e.getKeyCode() == KeyEvent.VK_DOWN) { down = false; } if (e.getKeyCode() == KeyEvent.VK_UP) { up = false; } } public void keyTyped(KeyEvent e) { } public c_char gamer[] = new c_char[20]; // 20 playerit public void joonista_mangija(String nimik, int x,int y,int positsion) { gamer[positsion] = new c_char(); Toolkit toolkit = Toolkit.getDefaultToolkit(); gamer[positsion].char_image = toolkit.getImage("sprite.gif"); gamer[positsion].x = x; gamer[positsion].y = x; gamer[positsion].nickname = nimik; tracker.addImage(gamer[positsion].char_image,positsion); } public c_char() { tracker = new MediaTracker(this); joonista_mangija("Alex",1,1,0); joonista_mangija("Barbara",1,1,1); try { tracker.waitForAll(); } catch(Exception keemia) { System.out.println("problem "+keemia); } map = new c_map(); addKeyListener(this); setFocusable(true); Thread th = new Thread(this); th.start(); // alustame threadi mis kontrollib playerit koguaeg.. } public synchronized void paintComponent(Graphics g) { super.paintComponent(g); // puhastame kõik map.paintComponent(g); // laeme uuesti mapi millegipärast :\ int xp = (map.ruudu_korgus * x); int yp = (map.ruudu_korgus * y); g.setColor(Color.pink); g.drawString("Alex",xp,yp-5); // g.drawImage(char_image, xp, yp,this); } public boolean liigu_funktsioon_(int dx, int dy) { int nx = x + dx; int ny = y + dy; if (validLocation(nx, ny)) { // Vaatame ega me keelatud alale ei lähe x = nx; y = ny; repaint(); return true; } return false; } public boolean validLocation(int nx, int ny) { if (map.struktuur[nx][ny] == map.blokeeritud) { return false; } return true; } /* Threadi koht */ public void run() { while(true) { try { repaint(); int x1=0,y1=0; Thread.sleep(100); if (left) { x1 -= 1; } if (right) { x1 += 1; } if (up) { y1 -= 1; } if (down) { y1 += 1; } if ((x1 != 0) || (y1 != 0)) { liigu_funktsioon_(x1,y1); // Üritame liigutada } } catch(Exception e) { System.out.println("problem "+e); } } } }