/*
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);
}
}
}