jar cfm SnakeXenzia.jar META-INF/MANIFEST.MF -C classes/ .
preverify -classpath PATH_TO_MIDP/j2me.jar -d classes_preverified classes
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class SnakeGame extends JPanel implements KeyListener {
private final int[] x = new int[100];
private final int[] y = new int[100];
private int foodX;
private int foodY;
private int score;
private int snakeLength;
private char direction = 'R';
private boolean gameOver = false;
private Timer timer;
private Random random;
public SnakeGame()
setBackground(Color.BLACK);
setPreferredSize(new Dimension(128, 160));
setFocusable(true);
requestFocus();
addKeyListener(this);
random = new Random();
startGame();
private void startGame()
for (int i = 0; i < 100; i++)
x[i] = 0;
y[i] = 0;
spawnFood();
snakeLength = 5;
score = 0;
gameOver = false;
direction = 'R';
timer = new Timer(100, e -> update());
timer.start();
private void update()
if (gameOver)
timer.stop();
return;
move();
checkCollisions();
repaint();
private void move()
for (int i = snakeLength; i > 0; i--)
x[i] = x[i - 1];
y[i] = y[i - 1];
switch (direction)
case 'U' -> y[0] -= 5;
case 'D' -> y[0] += 5;
case 'L' -> x[0] -= 5;
case 'R' -> x[0] += 5;
private void checkCollisions() x[0] >= 128
private void spawnFood()
foodX = random.nextInt(25) * 5;
foodY = random.nextInt(32) * 5;
@Override
protected void paintComponent(Graphics g)
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(foodX, foodY, 5, 5);
for (int i = 0; i < snakeLength; i++)
g.fillRect(x[i], y[i], 5, 5);
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e)
switch (e.getKeyCode())
case KeyEvent.VK_UP -> if (direction != 'D') direction = 'U';
case KeyEvent.VK_DOWN -> if (direction != 'U') direction = 'D';
case KeyEvent.VK_LEFT -> if (direction != 'R') direction = 'L';
case KeyEvent.VK_RIGHT -> if (direction != 'L') direction = 'R';
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args)
SwingUtilities.invokeLater(() ->
JFrame frame = new JFrame("Snake Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new SnakeGame());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
);
}
This example provides a very basic implementation. Enhancements can include collision detection refinement, smoother animations, score tracking, and more.
To package your game into a .jar file for distribution:
If you have an old Nokia or Sony Ericsson lying around, simply transfer the .jar file to the phone via Bluetooth or infrared. Navigate to your gallery/apps folder, select the file, and install. It works like magic.
jar cfm SnakeXenzia.jar META-INF/MANIFEST.MF -C classes/ .
preverify -classpath PATH_TO_MIDP/j2me.jar -d classes_preverified classes Java Snake Xenzia Game . Jar . 128x160 .
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class SnakeGame extends JPanel implements KeyListener {
private final int[] x = new int[100];
private final int[] y = new int[100];
private int foodX;
private int foodY;
private int score;
private int snakeLength;
private char direction = 'R';
private boolean gameOver = false;
private Timer timer;
private Random random;
public SnakeGame()
setBackground(Color.BLACK);
setPreferredSize(new Dimension(128, 160));
setFocusable(true);
requestFocus();
addKeyListener(this);
random = new Random();
startGame();
private void startGame()
for (int i = 0; i < 100; i++)
x[i] = 0;
y[i] = 0;
spawnFood();
snakeLength = 5;
score = 0;
gameOver = false;
direction = 'R';
timer = new Timer(100, e -> update());
timer.start();
private void update()
if (gameOver)
timer.stop();
return;
move();
checkCollisions();
repaint();
private void move()
for (int i = snakeLength; i > 0; i--)
x[i] = x[i - 1];
y[i] = y[i - 1];
switch (direction)
case 'U' -> y[0] -= 5;
case 'D' -> y[0] += 5;
case 'L' -> x[0] -= 5;
case 'R' -> x[0] += 5;
private void checkCollisions() x[0] >= 128
private void spawnFood()
foodX = random.nextInt(25) * 5;
foodY = random.nextInt(32) * 5;
@Override
protected void paintComponent(Graphics g)
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(foodX, foodY, 5, 5);
for (int i = 0; i < snakeLength; i++)
g.fillRect(x[i], y[i], 5, 5);
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e)
switch (e.getKeyCode())
case KeyEvent.VK_UP -> if (direction != 'D') direction = 'U';
case KeyEvent.VK_DOWN -> if (direction != 'U') direction = 'D';
case KeyEvent.VK_LEFT -> if (direction != 'R') direction = 'L';
case KeyEvent.VK_RIGHT -> if (direction != 'L') direction = 'R';
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args)
SwingUtilities.invokeLater(() ->
JFrame frame = new JFrame("Snake Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new SnakeGame());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
);
}
This example provides a very basic implementation. Enhancements can include collision detection refinement, smoother animations, score tracking, and more. jar cfm SnakeXenzia
To package your game into a .jar file for distribution: import javax
If you have an old Nokia or Sony Ericsson lying around, simply transfer the .jar file to the phone via Bluetooth or infrared. Navigate to your gallery/apps folder, select the file, and install. It works like magic.
Get access to your Orders, Wishlist and Recommendations.
Your personal data will be used to support your experience throughout this website, to manage access to your account, and for other purposes described in our privacy policy.