// g941052 紺野 繁昭 // // 月を2回クリックすると月が落ちます。 // 雪だるまを2回クリックすると雪だるまが爆発します。 // import java.awt.*; import java.awt.event.*; class Kadai1108 extends Frame implements KeyListener, MouseListener { int daruma_mode = 0, moon_mode = 0; public Kadai1108(String title) { super(title); addKeyListener(this); addMouseListener(this); } public static void main(String[] args) { Kadai1108 frame = new Kadai1108("Kadai1108"); frame.setSize(400,400); frame.setVisible(true); } public void paint(Graphics g) { int x1[] = new int[3], y1[] = new int[3]; int x2[] = new int[20], y2[] = new int[20]; int i,j; // 背景をかく g.setColor(Color.black); g.fillRect(0,0,400,200); g.setColor(Color.gray); g.fillRect(0,200,400,200); // 雪だるまをかく switch(daruma_mode) { case 0: g.setColor(Color.white); g.fillArc(250,150,80,80,0,360); g.fillArc(230,220,120,120,0,360); g.setColor(Color.black); g.fillArc(270,170,10,10,0,360); g.fillArc(290,170,10,10,0,360); g.setColor(Color.red); x1[0]=285;x1[1]=265;x1[2]=285; y1[0]=190;y1[1]=197;y1[2]=204; g.fillPolygon(x1,y1,3); break; case 1: g.setColor(Color.red); g.fillArc(245,145,90,90,0,360); g.fillArc(225,215,130,130,0,360); g.setColor(Color.yellow); g.fillArc(270,170,10,10,0,360); g.fillArc(290,170,10,10,0,360); g.setColor(Color.white); x1[0]=285;x1[1]=265;x1[2]=285; y1[0]=190;y1[1]=197;y1[2]=204; g.fillPolygon(x1,y1,3); break; case 2: g.setColor(Color.red); for(i=0; i<10; i++) for(j=0; j<2; j++) { x2[i*2+j] = (int)((150-j*50)*Math.cos(2*3.1415*(i*2+j)/20)+280); y2[i*2+j] = (int)((150-j*50)*Math.sin(2*3.1415*(i*2+j)/20)+210); } g.fillPolygon(x2,y2,20); for(i=0; i<10; i++) for(j=0; j<2; j++) { x2[i*2+j] = (int)((90-j*30)*Math.cos(2*3.1415*(i*2+j)/20)+280); y2[i*2+j] = (int)((90-j*30)*Math.sin(2*3.1415*(i*2+j)/20)+210); } g.setColor(Color.yellow); g.fillPolygon(x2,y2,20); break; default: break; } // 月をかく switch(moon_mode) { case 0: g.setColor(Color.yellow); g.fillArc(50,50,30,30,-120,160); break; case 1: g.setColor(Color.yellow); g.fillArc(50,90,50,50,-120,160); break; case 2: g.setColor(Color.yellow); g.fillArc(50,100,100,100,-120,160); g.setColor(Color.red); for (i=0; i<10; i++) g.drawLine(70+i*10,200,70+i*10,180); break; default: break; } } public void keyPressed(KeyEvent e) { int key = e.getKeyChar(); // System.out.println("keyPressed("+e+","+key+")"); if(key=='q') System.exit(0); } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} public void mousePressed(MouseEvent e) { int mx = e.getX(), my = e.getY(); // 雪だるまをクリックしているかチェック if (mx>=240 && mx<=340 && my>=150 && my<=340) { daruma_mode++; if (daruma_mode==3) daruma_mode = 0; } // 月をクリックしているかチェック switch(moon_mode) { case 0: if (mx>=60 && mx<=80 && my>=60 && my<=80) moon_mode++; break; case 1: if (mx>=60 && mx<=100 && my>=100 && my<=140) moon_mode++; break; case 2: if (mx>=60 && mx<=150 && my>=110 && my<=200) moon_mode = 0; break; default: break; } repaint(); } public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }