现在聊一聊Num类
Num类只有一个BufferedImage类型的数组images作为数据成员,数组容量11
public Num() throws IOException {
images = new BufferedImage[11];
for(int i=0; i<11; i++){
images[i] = ImageIO.read(new File("img/num"+i+".png"));
}
}
构造方法负责读取数字图片文件。数字只有0到9,为什么数组容量为11呢?因为images[10]保存的是一张大于号的图片。游戏默认能显示的最大的分数是999,但是万一有大神呢,所以超出999的得分一律显示>999。
public void paint(Graphics g,int score,int n) {
if(n==0) {
if(score!=-1) {
double a,b,c;
a=Math.floor(score/100);
b=Math.floor(score%100/10);
c=Math.floor(score%10);
g.drawImage(images[(int)a],10,20,null);
g.drawImage(images[(int)b],39,20,null);
g.drawImage(images[(int)c],68,20,null);
}else {
g.drawImage(images[10],10,20,null);
g.drawImage(images[9],39,20,null);
g.drawImage(images[9],68,20,null);
g.drawImage(images[9],97,20,null);
}
}else if(n==1) {
if(score!=-1) {
double a,b,c;
a=Math.floor(score/100);
b=Math.floor(score%100/10);
c=Math.floor(score%10);
g.drawImage(images[(int)a],177,228,null);
g.drawImage(images[(int)b],203,228,null);
g.drawImage(images[(int)c],229,228,null);
}else {
g.drawImage(images[10],165,228,null);
g.drawImage(images[9],189,228,null);
g.drawImage(images[9],213,228,null);
g.drawImage(images[9],237,228,null);
}
}else if(n==2) {
g.drawImage(images[score],20,20,null);
}
}
重写paint方法可以看到paint方法分为两部分,有int n参数控制,对应两种显示位置,在游戏中显示在左上角,在最高记录界面显示在屏幕中央。