
After testing several versions labeled "new" from 2024 and 2025, the verdict is a resounding yes.
Modern homebrew developers have added quality-of-life features the original 2005 versions lacked: java snake xenzia game jar 128x160 new
However, purists might argue that the "new" versions sometimes lose the gritty charm of the original pixel art. The best "new" builds offer a "Classic Mode" that reverts the graphics to the green-on-black monochrome look of the Nokia 3310, but with smooth 8-way movement. Rendering choices:
Games running at 128x160 resolution were designed for devices with extremely limited hardware: Layout:
import javax.microedition.lcdgame.GameCanvas;
import javax.microedition.lcdgame.Graphics;
import java.util.Random;
public class SnakeGame extends GameCanvas
private static final int WIDTH = 128;
private static final int HEIGHT = 160;
private static final int SCALE = 10;
private int[] x = new int[100];
private int[] y = new int[100];
private int[] foodX = new int[10];
private int[] foodY = new int[10];
private int score;
private int snakeLength;
private int direction;
private Random random;
public SnakeGame()
super(true);
setFullScreenMode(true);
Graphics g = getGraphics();
g.setColor(0xFFFFFF);
g.fillRect(0, 0, WIDTH, HEIGHT);
random = new Random();
initGame();
private void initGame()
score = 0;
snakeLength = 1;
direction = 1; // 1: right, 2: down, 3: left, 4: up
x[0] = WIDTH / 2;
y[0] = HEIGHT / 2;
for (int i = 0; i < 10; i++)
foodX[i] = random.nextInt(WIDTH / SCALE) * SCALE;
foodY[i] = random.nextInt(HEIGHT / SCALE) * SCALE;
public void paint(Graphics g)
g.setColor(0x000000);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(0xFFFFFF);
for (int i = 0; i < snakeLength; i++)
g.fillRect(x[i], y[i], SCALE, SCALE);
for (int i = 0; i < 10; i++)
g.fillRect(foodX[i], foodY[i], SCALE, SCALE);
g.drawString("Score: " + score, 10, 10);
public void update(int elapsedTime) y[0] >= HEIGHT)
gameOver();
for (int i = 1; i < snakeLength; i++)
if (x[0] == x[i] && y[0] == y[i])
gameOver();
for (int i = 0; i < 10; i++)
if (x[0] == foodX[i] && y[0] == foodY[i])
score++;
snakeLength++;
foodX[i] = random.nextInt(WIDTH / SCALE) * SCALE;
foodY[i] = random.nextInt(HEIGHT / SCALE) * SCALE;
private void gameOver()
initGame();
public void keyPressed(int key)
switch (key)
case KEY_RIGHT:
direction = 1;
break;
case KEY_DOWN:
direction = 2;
break;
case KEY_LEFT:
direction = 3;
break;
case KEY_UP:
direction = 4;
break;
Once you have your "new" snake_xenzia_128x160.jar file: