Obliczenia brydżowe (Java ME)
Jacek Kowalski
2012-08-07 bf2df04c8c12760206ea1d5be5c7e008123cc695
1. Dodanie menu z pomocą oraz informacją o autorze.
2. Dodanie pola display do głównej klasy midletu.
3. Drobne zmiany w kolejności linii.
2 files modified
1 files added
93 ■■■■ changed files
src/brydz/BrydzForm.java 21 ●●●●● patch | view | raw | blame | history
src/brydz/BrydzMIDlet.java 7 ●●●● patch | view | raw | blame | history
src/brydz/BrydzMenu.java 65 ●●●●● patch | view | raw | blame | history
src/brydz/BrydzForm.java
@@ -4,6 +4,7 @@
public class BrydzForm extends Form implements CommandListener, ItemStateListener {
    protected BrydzMIDlet midlet;
    protected BrydzMenu menu = null;
    
    protected TextField kontraktField;
    protected ChoiceGroup kontraktChoice;
@@ -51,14 +52,15 @@
        this.append(this.lewyField);
        this.append(this.resultText);
        
        setItemStateListener(this);
        setCommandListener(this);
        addCommand(new Command("Wyczyść", Command.OK, 1));
        addCommand(new Command("Wyjście", Command.EXIT, 1));
        this.addCommand(new Command("Wyczyść", Command.BACK, 1));
        this.addCommand(new Command("Menu", Command.OK, 1));
        this.setItemStateListener(this);
        this.setCommandListener(this);
    }
    
    public void commandAction(Command command, Displayable displayable) {
        if (command.getCommandType() == Command.OK) {
        if (command.getCommandType() == Command.BACK) {
            this.kontraktField.setString(null);
            this.kontraktChoice.setSelectedIndex(0, true);
            this.kontraChoice.setSelectedIndex(0, true);
@@ -67,10 +69,13 @@
            this.lewyField.setString(null);
            this.resultText.setText("Podaj wszystkie dane.");
            
            Display.getDisplay(this.midlet).setCurrentItem(this.kontraktField);
            this.midlet.display.setCurrentItem(this.kontraktField);
        }
        else if (command.getCommandType() == Command.EXIT) {
            this.midlet.destroyApp(true);
        else if (command.getCommandType() == Command.OK) {
            if(this.menu == null) {
                this.menu = new BrydzMenu(this.midlet, this);
            }
            this.midlet.display.setCurrent(this.menu);
        }
    }
    
src/brydz/BrydzMIDlet.java
@@ -7,13 +7,16 @@
 */
public class BrydzMIDlet extends javax.microedition.midlet.MIDlet {
    protected BrydzForm form = null;
    protected Display display = null;
    
    public void startApp() {
        if( this.form == null ) {
            this.form = new BrydzForm(this);
        }
        Display.getDisplay(this).setCurrent(this.form);
        if(this.display == null) {
            this.display = Display.getDisplay(this);
        }
        this.display.setCurrent(this.form);
    }
    
    public void pauseApp() {
src/brydz/BrydzMenu.java
New file
@@ -0,0 +1,65 @@
package brydz;
import javax.microedition.lcdui.*;
public class BrydzMenu extends List implements CommandListener {
    protected BrydzMIDlet midlet;
    protected BrydzForm form;
    protected Form text;
    public BrydzMenu(BrydzMIDlet midlet, BrydzForm previous) {
        super("Menu", List.IMPLICIT);
        this.midlet = midlet;
        this.form = previous;
        this.text = new Form("Obliczenia brydżowe");
        this.text.addCommand(new Command("Powrót", Command.BACK, 1));
        this.text.addCommand(new Command("Menu", Command.OK, 1));
        this.text.setCommandListener(this);
        this.append("Pomoc", null);
        this.append("Autor", null);
        this.append("Wyjście", null);
        this.addCommand(new Command("Powrót", Command.BACK, 1));
        this.setSelectCommand(new Command("Wybierz", Command.ITEM, 1));
        this.setCommandListener(this);
        this.midlet.display.setCurrent(this);
    }
    public void commandAction(Command command, Displayable displayable) {
        switch(command.getCommandType()) {
            case Command.OK:
                this.midlet.display.setCurrent(this);
            break;
            case Command.BACK:
                this.midlet.display.setCurrent(this.form);
            break;
            case Command.ITEM:
                switch(this.getSelectedIndex()) {
                    case 0:
                        this.text.deleteAll();
                        this.text.append(new StringItem("O programie", "MIDlet ten ma za zadanie ułatwić obliczanie zapisu brydżowego przy towarzyskim graniu w brydża sportowego."));
                        this.text.append(new StringItem("Kontrakt", "Należy podać wysokość wylicytowanego kontraktu lub 0 przy czterech pasach"));
                        this.text.append(new StringItem("Kolor", "Trzeba wybrać z listy wylicytowany kolor (młodszy/starszy/bez atu) - w przypadku pasów nie ma to znaczenia."));
                        this.text.append(new StringItem("Kontra", "Jeśli przeciwnicy dawali kontrę lub rozgrywający dodatkowo rekontrował - należy zaznaczyć odpowiednie pole."));
                        this.text.append(new StringItem("Przed/po partii", "Część przed znakiem \"/\" dotyczy rozgrywających, zaś część druga - przeciwników. W przypadku czterech pasów - pierwsza dotyczy pary z większą liczbą punktów."));
                        this.text.append(new StringItem("PC", "Liczba punktów honorowych (punktów Miltona Worka) pary, która wylicytowała kontrakt. W przypadku pasów - suma punktów pary z większą ich ilością."));
                        this.text.append(new StringItem("Lew", "Ilość lew wziętych przez rozgrywającego - w przypadku pasów nie ma znaczenia."));
                        this.text.append(new StringItem("Wynik", "Przekazywana jest informacja o stronie, która uzyskała zapis, liczbie punktów bez i z uwzględnieniem ilości PC, ilości uzyskanych IMP-ów oraz uzyskanym procencie, zgodnie z zapisem maksowym p. Adama Królika."));
                        this.midlet.display.setCurrent(this.text);
                    break;
                    case 1:
                        this.text.deleteAll();
                        this.text.append("Autor: Jacek Kowalski\nhttp://dev.jacekk.net/brydz");
                        this.midlet.display.setCurrent(this.text);
                    break;
                    case 2:
                        this.midlet.destroyApp(true);
                    break;
                }
            break;
        }
    }
}