ソースコードの追記 |
サイコロを2回ふると、出目の合計は、2〜12までの数値になります。これを、曲の前半8回、後半8回について行うので、結局、2〜12までの乱数を16回、発生させれば良いことになります。ボタンを押すと、乱数を発生し、その結果を画面に表示する処理をソースコードに追加します。
下記のようにMainCanvas.javaを書き換えます。 |
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Random;
class MainCanvas extends Canvas implements CommandListener
{
private Command diceCmd = new
Command("サイコロ",Command.SCREEN,2);
private Command quitCmd = new Command("終了",Command.SCREEN,1);
private DiceMusic diceMusic;
Random rnd = new Random();
int dice[] = new int[8*2];
boolean init_flg = false;
public MainCanvas(DiceMusic diceMusic)
{
this.diceMusic = diceMusic;
addCommand(quitCmd);
addCommand(diceCmd);
setCommandListener(this);
}
public void paint( Graphics g )
{
if(init_flg == false)
{
init_flg =
true;
return;
}
Font font =
Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL);
g.setFont(font);
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
int i;
g.setColor(0,0,0);
for(i=0;i<8*2;i++)
{
g.drawString(Integer.toString(i+1)+"回目のサイコロ",0,i*13+30,Graphics.LEFT
| Graphics.TOP);
g.drawString(Integer.toString(dice[i]),100,i*13+30,Graphics.LEFT
| Graphics.TOP);
}
}
public void commandAction(Command c, Displayable d){
if (c.getLabel() == "サイコロ")
{
int i;
for(i=0;i<8*2;i++)
{
dice[i] = rnd.nextInt(11)+2;
}
repaint();
}
else if(c.getLabel() == "終了" )
{
diceMusic.exit();
}
}
} |
エミュレータを起動して読み込みます。下の図のようになります。 |
 |
|
|