package threads; import main.Main; import objects.Fruit; import objects.Point; public class Trame extends Thread { public Trame() { } @Override public void run() { while (Main.gf.isActive()) { if (Main.f.getX() == Main.snake.getX() - 1 && Main.f.getY() == Main.snake.getY() - 1) { switch (Main.direction) { case 0: if (Main.snake.getY() != 20) { Main.snake.setY((short)(Main.snake.getY() + 1)); Main.snake.up((short)(Main.snake.getX() - 1), (short)(Main.snake.getY() - 2), Main.direction); } else { Main.snake.setY((short)1); Main.snake.up((short)(Main.snake.getX() - 1), (short)19, Main.direction); } break; case 1: if (Main.snake.getY() != 1) { Main.snake.setY((short)(Main.snake.getY() - 1)); Main.snake.up((short)(Main.snake.getX() - 1), Main.snake.getY(), Main.direction); } else { Main.snake.setY((short)20); Main.snake.up((short)(Main.snake.getX() - 1), (short)0, Main.direction); } break; case 2: if (Main.snake.getX() != 1) { Main.snake.setX((short)(Main.snake.getX() - 1)); Main.snake.up(Main.snake.getX(), (short)(Main.snake.getY() - 1), Main.direction); } else { Main.snake.setX((short)20); Main.snake.up((short)0, (short)(Main.snake.getY() - 1), Main.direction); } break; default: if (Main.snake.getX() != 20) { Main.snake.setX((short)(Main.snake.getX() + 1)); Main.snake.up((short)(Main.snake.getX() - 2), (short)(Main.snake.getY() - 1), Main.direction); } else { Main.snake.setX((short)1); Main.snake.up((short)19, (short)(Main.snake.getY() - 1), Main.direction); } break; } Main.f = null; Main.f = new Fruit(); Main.score++; Main.gf.score.setText(" " + Main.score); Main.gf.score.repaint(); } else { switch (Main.direction) { case 0: if (Main.snake.getY() != 20) Main.snake.setY((short)(Main.snake.getY() + 1)); else Main.snake.setY((short)1); break; case 1: if (Main.snake.getY() != 1) Main.snake.setY((short)(Main.snake.getY() - 1)); else Main.snake.setY((short)20); break; case 2: if (Main.snake.getX() != 1) Main.snake.setX((short)(Main.snake.getX() - 1)); else Main.snake.setX((short)20); break; default: if (Main.snake.getX() != 20) Main.snake.setX((short)(Main.snake.getX() + 1)); else Main.snake.setX((short)1); break; } for (Point p : Main.snake.getPoints()) { short d = Main.isToMove(p); if (d != 0) p.setDirection((short)(d - 1)); switch (p.getDirection()) { case 0: if (p.getY() != 19) p.setY((short)(p.getY() + 1)); else p.setY((short)0); break; case 1: if (p.getY() != 0) p.setY((short)(p.getY() - 1)); else p.setY((short)19); break; case 2: if (p.getX() != 0) p.setX((short)(p.getX() - 1)); else p.setX((short)19); break; case 3: if (p.getX() != 19) p.setX((short)(p.getX() + 1)); else p.setX((short)0); break; default: break; } } } Main.initPlateau(Main.snake); if (Main.moves > 0) Main.removeUnusedMoves(); if (Main.gameOver()) this.stop(); Main.gf.getContentPane().repaint(); try {sleep(200);} catch (InterruptedException e) {e.printStackTrace();} } } }