import java.util.Random; import com.nttdocomo.io.ConnectionException; import com.nttdocomo.ui.*; public class HitBlow extends IApplication implements ComponentListener,SoftKeyListener { private Panel panel; private ImageLabel title; private TextBox expectation; private TextBox result; private Button input; private char[] answer; private MediaImage mediaImage; // 初期化 public HitBlow() { title=new ImageLabel(loadImage("/title.gif")); expectation=new TextBox("000",3,1,TextBox.DISPLAY_ANY); expectation.setInputMode(TextBox.NUMBER); result=new TextBox("",13,7,TextBox.DISPLAY_ANY); result.setEditable(false); input=new Button("予想する"); panel=new Panel(); panel.add(title); panel.add(expectation); panel.add(input); panel.add(new Label("結果",Label.LEFT)); panel.add(result); panel.setComponentListener(this); panel.setSoftLabel(Panel.SOFT_KEY_1,"終了"); panel.setSoftKeyListener(this); Display.setCurrent(panel); } private Image loadImage(String file) { mediaImage=MediaManager.getImage("resource://"+file); try { mediaImage.use(); } catch (ConnectionException e) { e.printStackTrace(); } return mediaImage.getImage(); } // 開始 public void start() { Random random=new Random(); answer=new char[3]; for (int i=0;i<=answer.length-1;i++) { answer[i]=(char)('0'+Math.abs(random.nextInt())%10); } } // イベント public void componentAction(Component source,int type,int param) { String message; char[] trial; boolean[] checked; int hit,blow; if (source==input && type==ComponentListener.BUTTON_PRESSED) { trial=expectation.getText().toCharArray(); checked=new boolean[3]; if (trial.length!=3) { message="Error"; } else { hit=0; blow=0; for (int i=0;i<=2;i++) { if (trial[i]==answer[i]) { hit++; checked[i]=true; } } for (int i=0;i<=2;i++) { for (int j=0;j<=2;j++) { if (trial[i]==answer[j] && !checked[j]) { blow++; checked[j]=true; } } } if (hit==3) { message="Clear !"; } else { message=hit+"hit"+blow+"blow"; } } result.setText( expectation.getText()+":"+message+"\n"+ result.getText()); } } public void softKeyPressed(int softKey) { if (softKey==Panel.SOFT_KEY_1) { mediaImage.unuse(); mediaImage.dispose(); terminate(); } } public void softKeyReleased(int softKey) { } }