package lab7_snieg; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Graphics; import javax.microedition.midlet.*; public class Midlet extends MIDlet { Display ekran; PadajacySnieg zamiec = new PadajacySnieg(); Grawitacja padaSnieg = new Grawitacja(); Timer timer = new Timer(); public Midlet() { ekran = Display.getDisplay(this); } protected void destroyApp(boolean unconditional) { } protected void startApp() { ekran.setCurrent(zamiec); timer.schedule(padaSnieg, 10, 10); } protected void pauseApp() { } public void exit() { timer.cancel(); destroyApp(true); notifyDestroyed(); } class Grawitacja extends TimerTask { public void run() { zamiec.scroll(); } } class PadajacySnieg extends Canvas { int height; int width; int[] snieg; Random generator = new Random(); boolean painting = false; public PadajacySnieg() { height = getHeight(); width = getWidth(); snieg = new int[height]; for (int i = 0; i < height; ++i) { snieg[i] = -1; } } public void scroll() { if (painting) { return; } for (int i = height - 1; i > 0; --i) { snieg[i] = snieg[i - 1]; } snieg[0] = Math.abs((generator.nextInt() % (2 * width)) / 2); repaint(); } protected void paint(Graphics g) { painting = true; g.setColor(128, 128, 128); g.fillRect(0, 0, width, height); g.setColor(255, 255, 255); for (int y = 0; y < height; ++y) { int x = snieg[y]; if (x == -1) { continue; } g.drawLine(x, y, x, y); } painting = false; } protected void keyPressed(int keyCode) { exit(); } } }