The Snake Xenzia Java (J2ME) game is a classic arcade title originally popularized on Nokia feature phones. For a 128x160 resolution, this version is optimized for "tall" screens common on older handsets like the Nokia 1600 or 2310. Key Game Features
Resolution: Specifically built for 128x160 pixels, ensuring UI elements like scores and borders fit the small screen without scaling artifacts. Gameplay Modes:
Campaign Mode: Progress through roughly 20 levels with increasing difficulty and varied maze layouts.
Survive/Classic Mode: A timeless endless mode where the goal is to reach the highest score possible before crashing.
Difficulty: Features 8 adjustable speed levels; as the snake consumes food, it grows longer and faster, making navigation through obstacles harder. 128x160 snake xenzia java game hot
Visuals: Minimalist pixel graphics that recreate the vintage monochrome or limited-color LED display aesthetic. Safe Access & Compatibility Snake Game 1991 5.6 Free Download
Snake Xenzia is the definitive version of the classic "Snake" game that achieved massive popularity as a pre-loaded feature on Nokia mobile phones, particularly those with a 128x160 screen resolution like the Nokia 105. Developed by Taneli Armanto, it represents a technological benchmark in the evolution of early mobile entertainment. Core Gameplay & Mechanics
The game follows the simple, addictive concept of the arcade classic:
Oman imported Nokia 105 | New | ₹899.00 | Thrissur, Kerala The Snake Xenzia Java (J2ME) game is a
Copy the code below into your IDE (like Eclipse ME or NetBeans with Mobility Pack) or save as SnakeGame.java, compile, and run on an emulator or real phone.
// SnakeXenzia_128x160.java // A classic Snake game for 128x160 screen size. // Controls: 2=Up, 8=Down, 4=Left, 6=Right, 5 or fire = Pause/Resumeimport javax.microedition.lcdui.; import javax.microedition.midlet.; import java.util.Random;
public class SnakeGame extends MIDlet implements CommandListener, Runnable { private Display display; private GameCanvas gameCanvas; private Command exitCommand; private boolean running;
public SnakeGame() display = Display.getDisplay(this); exitCommand = new Command("Exit", Command.EXIT, 1); gameCanvas = new GameCanvas(); gameCanvas.addCommand(exitCommand); gameCanvas.setCommandListener(this); public void startApp() running = true; display.setCurrent(gameCanvas); Thread gameThread = new Thread(this); gameThread.start(); public void pauseApp() running = false; public void destroyApp(boolean unconditional) running = false; public void commandAction(Command c, Displayable d) if (c == exitCommand) destroyApp(true); notifyDestroyed(); public void run() { while (running) { gameCanvas.updateGame(); gameCanvas.repaint(); try Thread.sleep(150); // Game speed (delay in ms) catch (InterruptedException e) {} } } class GameCanvas extends Canvas // Screen dimensions: 128 x 160 private final int GRID_WIDTH = 16; // 8x8 blocks (128/8 = 16) private final int GRID_HEIGHT = 20; // 160/8 = 20 private final int CELL_SIZE = 8; private int[] snakeX; private int[] snakeY; private int snakeLength; private int foodX, foodY; private int direction; // 0=up,1=right,2=down,3=left private int nextDirection; private boolean inGame; private boolean paused; private Random random; private int score; // Colors (RGB) private final int BG_COLOR = 0x000000; private final int SNAKE_COLOR = 0x00FF00; private final int FOOD_COLOR = 0xFF0000; private final int BORDER_COLOR = 0x888888; public GameCanvas() random = new Random(); initGame(); private void initGame() // Max snake length = total cells (320) but we allocate safe size snakeX = new int[GRID_WIDTH * GRID_HEIGHT]; snakeY = new int[GRID_WIDTH * GRID_HEIGHT]; snakeLength = 3; // Initial snake: horizontal in the middle for (int i = 0; i < snakeLength; i++) snakeX[i] = GRID_WIDTH / 2 - i; snakeY[i] = GRID_HEIGHT / 2; direction = 1; // start moving right nextDirection = 1; inGame = true; paused = false; score = 0; spawnFood(); private void spawnFood() boolean onSnake; do onSnake = false; foodX = random.nextInt(GRID_WIDTH); foodY = random.nextInt(GRID_HEIGHT); for (int i = 0; i < snakeLength; i++) if (snakeX[i] == foodX && snakeY[i] == foodY) onSnake = true; break; while (onSnake); public void updateGame() protected void paint(Graphics g) // Background g.setColor(BG_COLOR); g.fillRect(0, 0, getWidth(), getHeight()); if (!inGame) Graphics.TOP); return; if (paused) Graphics.BASELINE); return; // Draw border (optional, just visual) g.setColor(BORDER_COLOR); g.drawRect(0, 0, GRID_WIDTH * CELL_SIZE, GRID_HEIGHT * CELL_SIZE); // Draw food g.setColor(FOOD_COLOR); g.fillRect(foodX * CELL_SIZE, foodY * CELL_SIZE, CELL_SIZE-1, CELL_SIZE-1); // Draw snake g.setColor(SNAKE_COLOR); for (int i = 0; i < snakeLength; i++) g.fillRect(snakeX[i] * CELL_SIZE, snakeY[i] * CELL_SIZE, CELL_SIZE-1, CELL_SIZE-1); // Draw score g.setColor(0xFFFFFF); g.drawString("Score: " + score, 5, 5, Graphics.TOP protected void keyPressed(int keyCode) int action = getGameAction(keyCode); // Restart after game over if (!inGame) initGame(); return; // Pause toggle on fire or '5' if (action == FIRE
}
While classic Snake was simply about eating dots, Snake Xenzia introduced specific quirks that made the 128x160 experience unique.
In an era of 4K gaming, Snake Xenzia on a 128x160 screen remains popular for three reasons:
For the hardcore retro gamer, KEKEmulator offers the most accurate Java runtime. 128x160 Skin Variations (ideas)