Code package babgamegui; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*;
public class Main { static Text yourAgeTxt; static Text babAgeTxt; static Button butCompare; protected static int yourAge=0; protected static int babAge=0; protected static byte iterator=0;
public static void main(String[] args) { do {babAge= (int)(Math.random()*120);} while (babAge < 50); Display dis = new Display(); //создаём объект Дисплей final Shell sh = new Shell (dis); //создаём наследника Дисплея, Оболочку sh.setLayout(new GridLayout()); new Label(sh, SWT.LEFT).setText("Введите свой возраст"); yourAgeTxt = new Text(sh, SWT.LEFT); yourAgeTxt.setText("20");
Button butInp = new Button (sh,SWT.PUSH); butInp.setText("Ввод"); butInp.addSelectionListener (new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { yourAge = Integer.parseInt(yourAgeTxt.getText()); if ((yourAge < 7) || (yourAge > 40)) { MessageBox mes = new MessageBox (sh); mes.setText("Внимание"); mes.setMessage("Ваш возраст не подходит\nдля такой серьёзной игры :)"); mes.open(); } else { babAgeTxt.setEditable(true); butCompare.setEnabled(true); } } });
new Label(sh, SWT.LEFT).setText("Возраст бабки от 50 до 120 лет"); new Label(sh, SWT.LEFT).setText("Введите возраст бабки"); babAgeTxt = new Text(sh, SWT.LEFT); babAgeTxt.setText("120"); babAgeTxt.setEditable(false); butCompare = new Button (sh,SWT.PUSH); butCompare.setText("Угадать"); butCompare.setEnabled(false); butCompare.addSelectionListener (new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { iterator++; MessageBox mes = new MessageBox (sh); mes.setText("Возраст бабки"); if ((Integer.parseInt(babAgeTxt.getText())) == babAge) { mes.setText("Ура-а-а-а"); mes.setMessage("Вы выиграли с "+iterator+ " попытки.\nБабка старше Вас на "+(babAge-yourAge)+ " лет."); } else if ((Integer.parseInt(babAgeTxt.getText())) > babAge) mes.setMessage("Попытка "+iterator+"\nМладше"); else mes.setMessage("Попытка "+iterator+"\nСтарше"); mes.open(); } });
Button butExit = new Button (sh, SWT.PUSH); butExit.setText ("Выход"); butExit.addSelectionListener (new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { MessageBox mes = new MessageBox (sh); mes.setText("Game Over"); mes.setMessage("До свидания !"); mes.open(); sh.close(); } });
sh.pack(); sh.open (); //открываем её while (!sh.isDisposed ()) //цикл работает //пока оболочка не уничтожена { if (!dis.readAndDispatch ()) dis.sleep (); //пока дисплей не читает и не //передаёт ОС сообщения, он спит } dis.dispose (); //уничтожаем объект } } Из данного примера можно подчерпнуть знания о создании обработчика событий (в данном примере от кнопок, у каждой свой обработчик), использование окон сообщений (MessageBox), оператор конкатенации (слияния) текста. Скелет программы взят из статьи (Простейшее SWT приложение). Используемые классы: Button Label Text MessageBox Integer (для преобразования строки в целое число) Программа не является эталоном и нуждается в доработке. При вводе возраста (своего и бабки), при переводе строки в целое число не проверяется является ли строка вообще числом, если ввести последовательность символов программа вылетит с сообщением об ошибке в консоль. Можете доработать сами или разберём это позже, при Вашем желании.
|