Musikui4 applet
/*
Copyright Nogami Shunji
1997/11
問題パネルの拡張部分で
虫食い算の問題作成を分担する
*/
import java.awt.*;
import java.util.*;

public class Musikui4Panel extends MondaiPanel{

    String mondaiBun;
    int xMax=20;
    int yMax=10;
    String mondaiSu[][]=new String[xMax][yMax];
    int mondaiMax=20;//問題の虫食い部分の数
    String kaito[]=new String[mondaiMax];
    String seito[]=new String[mondaiMax];
    int mondaiIti[][]=new int[mondaiMax][2];
    Choice choice1;//問題選択用チョイス
    int dataXMax=0;
    int dataYMax=0;
    int kMax=0;
    int kNo=0;
    int maruSu=0;
    int hx=130;//問題数字表示上左端位置
    int hy=80;
    Panel sujiP;//数字選択パネル
    String mondaiS="";

    //musikui4Panelクラス 初期設定など
    public Musikui4Panel(SansuApplet applet){
        super(applet);
        setBackground(Color.white);
        choice1= new Choice();
        add(choice1);
        choice1.reshape(0,0,100,30);
        addChoice();
        sujiP = new sujiPanel(this);
        add(sujiP);
        sujiP.reshape(10,50,25*3,25*4+2);
        setMondai("わり算1");
    }
    //問題がチョイスされた場合
    public boolean action(Event evt,Object arg){
        if(evt.target.equals(choice1)){
            setMondai((String)arg);
            return true;
        }
        return false;
    }

    //  ここでキーイベントを捕まえたいのだけれど捕まらない
    //  JDK1.1ならできる方法がある
    public boolean kyeDown(Event evt,int key){
        if(evt.id==Event.KEY_PRESS){
            if((key-48)>=0 && (key-48)<=9){
                kaito[kNo]=String.valueOf(key);
                kaitoHandan();
                repaint();
                return true;
            }
        }
        return false;
    }
    //マウスが押された場合の解答入力位置の移動
    //なお、数字の入力は別パネルで行っている
    public boolean mouseDown(Event evt, int x, int y){
        for(int i=0;i= mondaiIti[i][0] && x<=(mondaiIti[i][0]+16) && y>=mondaiIti[i][1] && y<=(mondaiIti[i][1]+16) ){
                kNo=i;
                repaint();
                return true;
            }
        }
        return false;
    }
    //数字選択パネルで数字が選択された場合の処理
    public void setSuji(String s){
        if(maruSu==0){
            kaito[kNo]=s;
            kaitoHandan();
            repaint();
        }
    }
    //解答入力がされた場合、全問正答か否かの判断
    public void kaitoHandan(){
        int gotoSu=0;
        for( int i=0;i0 ){
                g.fillRect(hx+x1*24+12-5,hy+24*y+2,24*(dataXMax-x1-1)+10,2);
                g.setColor(Color.black);
            }
        }
        for(int i=0;i0){
            g.setColor(Color.red);
            g.fillOval(itiX-8,itiY,34,34);
            g.setColor(Color.white);
            g.fillOval(itiX,itiY+8,18,18);
            g.setColor(Color.red);
        }
    }
    public void addChoice(){
        choice1.addItem("わり算1");
        choice1.addItem("わり算2");
        //choice1.addItem("わり算3");
        //choice1.addItem("わり算4");
        //choice1.addItem("わり算5");
        //choice1.addItem("わり算6");
        //choice1.addItem("わり算7");
        //choice1.addItem("わり算8");
        //choice1.addItem("わり算9");
        //choice1.addItem("わり算10");
    }
    //問題のデータ設定
    public void setMondai(String mondai){
        maruSu=0;
        kNo=0;
        String data[]=new String[10];
        for(int i=0;i<10;i++){
            data[i]="";
        }
        if(mondai.equals("わり算1")){
            mondaiS="□の中に数字を入れなさい。";
            dataYMax=5;
            data[0]="   ?";//問題
            data[1]="7)??";
            data[2]="  ?1";
            data[3]="   2";
            data[4]="3232";//解答
            setMondai(data,dataYMax);
        }else if(mondai.equals("わり算2")){
            mondaiS="□の中に数字を入れなさい。";
            dataYMax=5;
            data[0]="     ?";//問題
            data[1]="?4)16?";
            data[2]="   ??2";
            data[3]="     6";
            data[4]="35816";//解答
            setMondai(data,dataYMax);
        }
    }
}