// //    ヒットアンドブロー // //   1999/ 2/20 宍戸 輝光 // import java.awt.*; import java.util.Random; public class jhb extends java.applet.Applet { Button btnGo,btnNew; TextField txtInput; TextArea txtDisp; Panel pDisp,pLine; int iSeikai,iTurn; public void start(){ setBackground(new Color(144,192,160)); setLayout(new BorderLayout()); pLine=new Panel(); txtInput=new TextField(5); pLine.add(txtInput); btnGo=new Button("G o"); pLine.add(btnGo); btnNew=new Button("N e w"); pLine.add(btnNew); add("North",pLine); pDisp=new Panel(); txtDisp=new TextArea(13,25); txtDisp.setFont(new Font("Courier",Font.PLAIN,12)); pDisp.add(txtDisp); add("Center",pDisp); initGame(); } private void initGame() { Random rnd=new Random(); iSeikai=Math.abs(rnd.nextInt() % 10000); iTurn=1; txtDisp.setText(""); txtInput.setText(""); btnGo.enable(true); } private void check() { int i,j,iHit,iBrrow,iS,iI,iInput; int iSn[]=new int[4],iIn[]=new int[4]; String sInput=new String(),str=new String(); try { iInput=Integer.parseInt(txtInput.getText()); } catch (NumberFormatException e) { return; } if (txtInput.getText().length()!=4) iInput=-1; txtInput.setText(""); if (iInput<0 || iInput>9999) return; iS=iSeikai; iI=iInput; for (i=0;i<4;i++) { // 数値を一桁ずつ配列に分解 iIn[i]=iI % 10; iSn[i]=iS % 10; iI/=10; iS/=10; } for (i=0;i<4;i++) sInput+=String.valueOf(iIn[3-i]); iHit=0; iBrrow=0; for (i=0;i<4;i++) if (iSn[i]==iIn[i]) { iHit++; iSn[i]=-1; iIn[i]=-2; } for (i=0;i<4;i++) for (j=0;j<4;j++) if (i!=j && iSn[i]==iIn[j]) { iBrrow++; iSn[i]=-1; iIn[j]=-2; } if (iTurn<10) // 桁を合わせてターン数と入力された数字を文字列化 str=" "+String.valueOf(iTurn)+" "+sInput+" "; else str=String.valueOf(iTurn)+" "+sInput+" "; if (iHit==4) { // 正解ならゲーム終了 str+="Clear!\n"; btnGo.enable(false); } else // ヒット/ブロ−数を文字列化 str+=String.valueOf(iHit)+" Hit, "+ String.valueOf(iBrrow)+" Brrow\n"; txtDisp.setText(str+txtDisp.getText()); // 先頭に追加 iTurn++; // ターン数更新 } public boolean action(Event evt,Object What) { if (evt.target==btnGo) { // Go ボタン check(); return true; } if (evt.target==btnNew) { // New ボタン initGame(); return true; } return false; } }