import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*; public class GaetEtTalMidletMIDlet extends MIDlet implements CommandListener { private Display display = Display.getDisplay(this); private Form f = new Form("Gæt tallet jeg tænker på"); private StringItem si = new StringItem(null, null); private TextField tf = new TextField(null, "", 2, TextField.NUMERIC); private Command afslutCommand = new Command("Afslut", Command.SCREEN, 2); private Command okCommand = new Command("OK", Command.SCREEN, 1); private Command nytSpilCommand = new Command("Nyt spil", Command.SCREEN, 1); private Random tilf = new Random(); private int tallet; private int forsøg; public GaetEtTalMidletMIDlet() { f.addCommand(afslutCommand); f.addCommand(okCommand); // tilføj klassen (implementerer CommandListener) som lytter til formularen f.setCommandListener(this); f.append(si); // tilføj strengen til formularen f.append(tf); // tilføj indtastningsfeltet } private void nytSpil() { tallet = Math.abs(tilf.nextInt()) % 100 + 1; // et tal mellem 1 og 100 forsøg = 0; si.setText("Tallet er mellem 1 og 100."); tf.setLabel("Skriv dit gæt:"); } public void startApp() { // kaldes lige efter konstruktøren nytSpil(); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } /** * Reagér på kommandoerne ok, afslut og nyt spil. * Metode skal defineres fordi klassen implementerer CommandListener-interfacet * og den bliver kaldt fordi formularen har fået tilføjet klassen som lytter. * Ved afslut ryddes op og midletten giver besked på at den skal smides væk. */ public void commandAction(Command c, Displayable s) { if (c == afslutCommand) { destroyApp(false); notifyDestroyed(); } else if (c == okCommand) { int gæt = Integer.parseInt( tf.getString() ); tf.setString(""); forsøg++; if (gæt < tallet) si.setText("Det er højere end "+gæt+"!"); else if (gæt > tallet) si.setText("Det er lavere end "+gæt+"!"); else { si.setText("Rigtig på "+forsøg+" forsøg!"); f.delete(1); // Fjern indtastningsfeltet fra formularen f.removeCommand(okCommand); f.addCommand(nytSpilCommand); } } else if (c == nytSpilCommand) { f.removeCommand(nytSpilCommand); f.addCommand(okCommand); f.append(tf); // Tilføj indtastningsfeltet til formularen igen nytSpil(); } } }