r14.dvi

Similar documents
r14.dvi

r2.dvi

r4.dvi

r3.dvi

r8.dvi

r3.dvi

r2.dvi

r4.dvi

I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

r5.dvi

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

r6.dvi

text_13.dvi

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

Thread

I. (i) Java? (A). Foo_Bar (B). G day (C). 999 (D). Golgo13 (ii)? (A). Java public (B). Java (C). Java JavaScript (D). Java C Java C (iii)? (A). Java (

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

Chapter JDK KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseeven

Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperforme

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperforme

Microsoft PowerPoint prog1_doc2x.pptx


Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

text_12.dvi

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperformed

Microsoft PowerPoint prog1_doc2.pptx

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

ガイダンス

ÿþ˜u#u·0¹0Æ0à0

Java演習(9) -- クラスとメソッド --

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperformed

ガイダンス

< F2D834F838C A815B A CC>

アプレットの作成

< F2D B838A835882CC8CF68EAE2E6A7464>

vol.30.}...`.X...b.h

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

任意の加算プログラム

LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal

次の演習課題(1),(2)のプログラムを完成させよ

< F2D82518CC282CC D2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

4 p.2 4 GUI return; public void mousepressed(mouseevent e) { /* 5 */ public void mousereleased(mouseevent e) { /* 5 */ public void mouseentered(mousee

10K pdf

Java言語 第1回

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

問1

ガイダンス

2

untitled

< F2D F B834E2E6A7464>


< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

<4D F736F F F696E74202D AC C8899E D834F E >

ガイダンス

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

< F2D825282CC947B909482CC A815B83682E6A>

< F2D A839382CC906A2E6A7464>

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

2

ガイダンス

try catch Exception Java try catch try { } catch ( Exception e ) { } e 16-1 try catch 0 try { int x = 0; int y = 10 / x; } catch ( Exception e ) { Sys


やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

< F2D92DE82E8914B82CC977088D32E6A7464>

Java 2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q 2.

< F2D89BA8EE882C E6A7464>

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

< F2D A838B838D96402E6A7464>

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

< F2D E E6A7464>

r4.dvi

< F2D8EA CE909482CC92EA82852E6A7464>

B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

Java演習(2) -- 簡単なプログラム --

Microsoft PowerPoint - prog10.ppt

Java 2 - Lesson01

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap


Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

Microsoft PowerPoint - prog10.ppt

ソフトウェア開発方法論2

2 p.2 2 Java > javac Hello0.java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.j

JAVA入門

GUIプログラムⅣ

課題

GUIプログラムⅤ

Transcription:

2008 14 2009.1.30 3e/3f paint (0 n rn() ) 1 / import java.awt.*; import javax.swing.*; public class ex33ef extends JFrame { public ex33ef() { setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); public void paint(graphics g) { g.setcolor(getbackground()); g.fillrect(0, 0, getwidth(), getheight()); for(int i = 0; i < 20; ++i) { g.setcolor(new Color(100, 250-i*10, 100+i*5)); g.fillrect(20+i*10, 20+i*5, 80, 60); 1

for(int i = 0; i < 10; ++i) { g.setcolor(new Color(rn(256), rn(256), rn(256))); g.filloval(rn(400), rn(300), 40, 40); public int rn(int n) { return (int)(n*math.random()); public static void main(string[] args) { new ex33ef().setvisible(true); 2 paint ( ) 4d 4abc ) ( XY static class Rect { Color col; int gx, gy, width, height; public Rect(Color c, int x, int y, int w, int h) { col = c; gx = x; gy = y; width = w; height = h; g.setcolor(col); g.fillrect(gx-width/2, gy-height/2, width, height); 2

Graphics fillpolygon( ) X Y (new int[]{, Java ) static class Tri { Color col; int[] x, y; public Tri(Color c, int x0, int y0, col = c; int x1, int y1, int x2, int y2) { x = new int[]{x0,x1,x2; y = new int[]{y0,y1,y2; g.setcolor(col); g.fillpolygon(x, y, 3); draw ( ) public class Flag { Rect r0; Circle c0; public Flag(Color c1, Color c2, int x, int y, int r) { r0 = new Rect(c2, x, y, 6*r, 4*r); c0 = new Circle(c1, x, y, r); r0.draw(g); c0.draw(g); Circle 3 import java.awt.*; import javax.swing.*; 3

public class ex34abc extends JFrame { Rect r1 = new Rect(Color.pink, 250, 100, 80, 60); Tri t1 = new Tri(Color.blue, 80, 100, 180, 100, 130, 50); Flag f1 = new Flag(Color.red, Color.white, 300, 200, 20); Flag f2 = new Flag(Color.yellow, Color.green, 90, 220, 15); public ex34abc() { setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); public void paint(graphics g) { g.setcolor(getbackground()); g.fillrect(0, 0, getwidth(), getheight()); r1.draw(g); t1.draw(g); f1.draw(g); f2.draw(g); public static void main(string[] args) { new ex34abc().setvisible(true); 5d import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ex35d extends JFrame { JLabel l0 = new JLabel("0"); String mem = "0"; char op = + ; public ex35d() { setlayout(null); add(l0); l0.setbounds(10, 10, 180, 30); String s = "9876543210.c+-*/="; for(int i = 0; i < s.length(); ++i) { JButton b = new JButton("" + s.charat(i)); add(b); b.setbounds(10+(i%3)*50, 50+(i/3)*30, 50, 25); b.addactionlistener(new MyAdapter(s.charAt(i))); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(200, 300)); pack(); JLabel( ) = mem op addactionlistener 4

4 MyAdapter ActionPerformed class MyAdapter implements ActionListener { char ch; public MyAdapter(char c) { ch = c; public void actionperformed(actionevent evt) { if(ch == c ) { l0.settext("0"); else if(ch== + ch== - ch== * ch== / ) { mem = l0.gettext(); l0.settext("0"); op = ch; else if(ch == = ) { double x = Double.parseDouble(mem); double y = Double.parseDouble(l0.getText()); if(op == + ) l0.settext("" + (x+y)); else if(op == - ) l0.settext("" + (x-y)); else if(op == * ) l0.settext("" + (x*y)); else if(op == / ) l0.settext("" + (x/y)); else { l0.settext(l0.gettext() + ch); public static void main(string[] args) { new ex35d().setvisible(true); ch (1) (2) mem op (3) = (4) 5

1 1.1 1 (thread) 1 (single thread) ( 5 ) 1 (multiple thread) ( 5 ) (concurrent) CPU CPU (pararell ) CPU 1 main main 5 (animation ) while(true) { 0.1 0.1 GUI 1.2 Java Java Thread new start? Thread run Thread run run 6

Java ( 6) import java.awt.*; import javax.swing.*; public class Sample41 extends JFrame { double time = 0.0, xpos = 100.0, ypos = 100.0, height = 100.0; public Sample41() { add(new JPanel() { public void paint(graphics g) { g.setcolor(color.red); g.filloval((int)xpos, (int)ypos, 50, 50); ); add(new JLabel("demo"), BorderLayout.SOUTH); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); new Thread() { public void run() { while(true) { try { sleep(100); catch(exception ex) { time += 0.1; ypos = 100 + height*math.sin(time); repaint();.start(); public static void main(string[] args) { new Sample41().setVisible(true); 6 JPanel ( ) paint JPanel (double buffering ) 1 XY xpos ypos ( double filloval int ) time height JPanel Mac OS X Java 1 demo JLabel( ) add() 2 BorderLayout.SOUTH ( 4.4 ) Thread run 100 time 0.1 ypos time sin repaint 7

2 sleep try {... catch(exception ex) { ( ) 1 1 a. b. c. (2 1?) d. 2 e. 2 GUI addxxxlistener (JPanel ) (XXXListener ) 3 MouseLister mouseclicked( ) mousepressed( ) mousereleased( ) mouseentered( ) mouseexited( ) MouseMotionLister mousemoved( ) mousedragged( ) KeyLister keytyped( ) keypressed( keyreleased( ) ( ) 3 MouseAdapter MouseMotionAdapter KeyAdapter +/- (0) import (1) (2) (3) ( ) 4 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Sample42 extends JFrame { double time = 0, xpos = 100, ypos = 100, amp = 10; public Sample42() { add(new JPanel() { public void paint(graphics g) { g.setcolor(color.red); g.filloval((int)xpos, (int)ypos, 50, 50); ); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); // // 1 2 8

add(new JLabel("demo"), BorderLayout.SOUTH); addmouselistener(new MouseAdapter() { // public void mousepressed(mouseevent evt) { // xpos = evt.getx(); ypos = evt.gety(); repaint(); // // ); // setfocusable(true); // addkeylistener(new KeyAdapter() { // public void keypressed(keyevent evt) { // if(evt.getkeychar() == + ) { amp *= 1.1; // if(evt.getkeychar() == - ) { amp *= 0.9; // // ); // new Thread() { public void run() { while(true) { try { sleep(100); catch(exception ex) { time += 0.1; ypos += amp*math.cos(time); // repaint();.start(); public static void main(string[] args) { new Sample42().setVisible(true); setfocusable(true) ( ) 2 ( ) L R 3 3.1? ( static ) class MovingCircle implements Animation { Color cl; double gx, gy, vx, vy, rad; public MovingCircle(Color cl1, double x, double y, double vx1, double vy1, double rad1) { cl = cl1; gx = x; gy = y; vx = vx1; vy = vy1; rad = rad1; g.setcolor(cl); g.filloval((int)(gx-rad), (int)(gy-rad), (int)(rad*2), (int)(rad*2)); 9

gx += vx * dt; gy += vy * dt; if(gx<0 && vx<0 gx>getwidth() && vx>0) { vx = -vx; if(gy<0 && vy<0 gy>getheight() && vy>0) { vy = -vy; Java ( ) Animation? interface Animation { public void draw(graphics g); public void addtime(double dt); ( ) Animation ( a for(int i = 0; i < count; ++i) a[i].draw(g); a[i].draw(g) draw a[i] draw draw Java a[i].draw(g) a[i] a[i] if a[i] (a[i]) elsif a[i] (a[i]) elsif a[i] (a[i])... ( )... 1 3.2 1 (differential programming) ( JPanel paint ) import java.awt.*; import javax.swing.*; public class Sample43 extends JFrame { 10

double time; Animation[] a = new Animation[20]; int count = 0; public Sample43() { add(new JPanel() { public void paint(graphics g) { for(int i = 0; i < count; ++i) a[i].draw(g); ); add(jlabel("demo"), BorderLayout.SOUTH); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); a ( 2 ) a[count++] = new MovingCircle(Color.red, 100, 100, -30, 40, 15); // a[count++] = new MovingJack(new Color(80,120,180),10,10,80,30,30); // a[count++] = new LightOnOffJack(new Color(40, 120, 80), // 10, 30, 20, 20, 30, Color.red); // a[count++] = new MovingSnowman(new Color(60, 100, 80), // 110, 30, 30, 20, 30, Color.red, 1.2); // a[count++] = new WavingSnowman(new Color(120, 240, 80), // 150, 70, 40, 20, 30, Color.red, 1.2); // a[count++] = new LongNeckSnowman(new Color(150, 80, 80), // 110, 70, 40, -15, 30, Color.red, 1.2); // a[count++] = new RotateSnowman(new Color(110, 180, 120), // 110, 110, -10, -15, 30, Color.red, 1.2); 50 addtime time = 0.001 * System.currentTimeMillis(); new Thread(new Runnable() { public void run() { while(true) { try { Thread.sleep(50); catch(exception ex) { double dt = System.currentTimeMillis()*0.001 - time; for(int i = 0; i < count; ++i) a[i].addtime(dt); time += dt; repaint(); ).start(); public static void main(string[] args) { new Sample43().setVisible(true); main Animation MovingCircle Java 7 MovingCircle draw ( super(...) super.draw(...) ( )draw ) class MovingJack extends MovingCircle { Color eyecolor, mouthcolor; public MovingJack(Color c, double x, double y, double vx1, double vy1, double rad1) { super(c, x, y, vx1, vy1, rad1); eyecolor = mouthcolor = c.brighter(); int u = (int)rad/4; super.draw(g); 11

MovingCircle (i Animation) MovingJack LightOnOffJack MogingSnowman WavingSnowman LongNeckSnowman RotateSnowman 7 g.setcolor(eyecolor); g.fillpolygon(new int[]{(int)gx-3*u, (int)gx-2*u, (int)gx-u, new int[]{(int)gy-u, (int)gy-2*u, (int)gy-u, 3); g.fillpolygon(new int[]{(int)gx+3*u, (int)gx+2*u, (int)gx+u, new int[]{(int)gy-u, (int)gy-2*u, (int)gy-u, 3); g.setcolor(mouthcolor); g.fillpolygon(new int[]{(int)gx-u, (int)gx, (int)gx+u, new int[]{(int)gy+u, (int)gy+2*u, (int)gy+u, 3); MovingJack addtime ( addtime MovingCircle ) draw eyecolor draw class LightOnOffJack extends MovingJack { double atime = 0.0; Color lightoncolor; public LightOnOffJack(Color c, double x, double y, double vx, double vy, double rad1, Color c1) { super(c, x, y, vx, vy, rad1); lightoncolor = c1; atime += dt; super.addtime(dt); if((int)atime % 2 == 0) eyecolor = cl.brighter(); else eyecolor = lightoncolor; super.draw(g); MovingJack eyecolor LightOnOffJack dx dy ( ) class MovingSnowman extends LightOnOffJack { double ratio, dx = 0, dy = 0; public MovingSnowman(Color c, double x, double y, double vx1, double vy1, double rad1, Color c1, double r) { super(c, x, y, vx1, vy1, rad1, c1); ratio = r; dy = rad*2; g.setcolor(cl); g.filloval((int)(gx+dx-rad*ratio), (int)(gy+dy-rad*ratio), (int)(rad*ratio*2), (int)(rad*ratio*2)); 12

8 super.draw(g); MovingSnowman dy sin class WavingSnowman extends MovingSnowman { public WavingSnowman(Color c, double x, double y, double vx1, double vy1, double rad1, Color c1, double r) { super(c, x, y, vx1, vy1, rad1, c1, r); super.addtime(dt); dy = rad*2 - (ratio-1)*rad*(1+math.sin(20*atime)); MovingSnowman dy ( dy super.draw dy dy ) class LongNeckSnowman extends MovingSnowman { public LongNeckSnowman(Color c, double x, double y, double vx1, double vy1, double rad1, Color c1, double r) { super(c, x, y, vx1, vy1, rad1, c1, r); int len = (int)(rad*(atime%1)); g.setcolor(cl); g.fillrect((int)(gx-0.3*rad),(int)gy,(int)(0.6*rad),(int)rad*2+len); dy += len; super.draw(g); dy -= len; MovingSnowman ( 8) class RotateSnowman extends MovingSnowman { public RotateSnowman(Color c, double x, double y, double vx1, double vy1, double rad1, Color c1, double r) { super(c, x, y, vx1, vy1, rad1, c1, r); super.addtime(dt); dx = rad*2*math.cos(atime); dy = rad*2*math.sin(atime); // 3 13

3.3? N M M N M N M N ( 9 ) 9 import java.awt.*; import javax.swing.*; public class Sample44 extends JFrame { double time; Animation[] a = new Animation[20]; int count = 0; public Sample44() { getcontentpane().add(new JPanel() { public void paint(graphics g) { for(int i = 0; i < count; ++i) a[i].draw(g); ); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); a[count++] = new FlyingMove( new Circle(Color.red, 100, 100, 15), -30, 40); a[count++] = new CircleMove( new Circle(Color.blue, 120, 100, 10), 30, 5); a[count++] = new CircleMove( new Triangle(Color.green,100,100,140,100,80,120), 40, 2); a[count++] = new ChgColor(new Circle(Color.red, 100, 140, 20), new Color[]{Color.pink, Color.cyan, Color.black, 0.5); AnimGroup g1 = new AnimGroup(160, 100); g1.add(new Circle(new Color(200, 155, 120), 0, 0, 40)); g1.add(new Triangle(Color.blue, -30, 0, -10, 0, -20, -10)); g1.add(new Triangle(Color.blue, 30, 0, 10, 0, 20, -10)); g1.add(new Triangle(Color.blue, -10, 10, 10, 10, 0, 20)); a[count++] = new FlyingMove(g1, 45, 35); 14

AnimGroup g2 = new AnimGroup(160, 100); g2.add(new Circle(new Color(200, 155, 120), 0, 0, 40)); g2.add(new ChgColor( new Triangle(Color.blue, -30, 0, -10, 0, -20, -10), new Color[]{Color.red, Color.white, 0.7)); g2.add(new CircleMove( new Triangle(Color.blue,30,0,10,0,20,-10), 3.0, 5.0)); g2.add(new Triangle(Color.blue, -10, 10, 10, 10, 0, 20)); a[count++] = new FlyingMove(g2, 25, 45); time = 0.001 * System.currentTimeMillis(); new Thread(new Runnable() { public void run() { while(true) { try { Thread.sleep(50); catch(exception ex) { double dt = System.currentTimeMillis()*0.001 - time; for(int i = 0; i < count; ++i) a[i].addtime(dt); time += dt; repaint(); ).start(); public static void main(string[] args) { new Sample44().setVisible(true); Animation interface Animation { public void draw(graphics g); public void addtime(double dt); public void moveto(double x, double y); public double getx(); public double gety(); public void setcolor(color c); public Color getcolor(); ( ) class Circle implements Animation { Color cl; double gx, gy, rad; public Circle(Color c, double x, double y, double r) { cl = c; gx = x; gy = y; rad = r; g.setcolor(cl); g.filloval((int)(gx-rad), (int)(gy-rad), (int)(rad*2), (int)(rad*2)); public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { cl = c; public Color getcolor() { return cl; ( Animation ( ) 1 gx gy FlyingMove ) class FlyingMove implements Animation { Animation anim; double gx, gy, vx, vy; public FlyingMove(Animation a, double vx1, double vy1) { 15

anim = a; gx = a.getx(); gy = a.gety(); vx = vx1; vy = vy1; anim.draw(g); anim.addtime(dt); gx += vx * dt; gy += vy * dt; if(gx<0 && vx<0 gx>getwidth() && vx>0) { vx = -vx; if(gy<0 && vy<0 gy>getheight() && vy>0) { vy = -vy; anim.moveto(gx, gy); public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { anim.setcolor(c); public Color getcolor() { return anim.getcolor(); Circle class CircleMove implements Animation { Animation anim; double gx, gy, rad, vtheta, theta = 0; public CircleMove(Animation a, double r, double vt) { anim = a; gx = a.getx(); gy = a.gety(); rad = r; vtheta = vt; anim.moveto(gx+rad*math.cos(theta), gy+rad*math.sin(theta)); anim.draw(g); anim.addtime(dt); theta += vtheta * dt; public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { anim.setcolor(c); public Color getcolor() { return anim.getcolor(); 3 class Triangle implements Animation { Color cl; double gx, gy, dx0, dy0, dx1, dy1, dx2, dy2; public Triangle(Color c, double x0, double y0, double x1, double y1, double x2, double y2) { cl = c; gx = (x0+x1+x2)/3; gy = (y0+y1+y2)/3; dx0 = x0-gx; dx1 = x1-gx; dx2 = x2-gx; dy0 = y0-gy; dy1 = y1-gy; dy2 = y2-gy; int[] x = new int[]{(int)(gx+dx0),(int)(gx+dx1),(int)(gx+dx2); int[] y = new int[]{(int)(gy+dy0),(int)(gy+dy1),(int)(gy+dy2); g.setcolor(cl); g.fillpolygon(x, y, 3); public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { cl = c; public Color getcolor() { return cl; 4 static class ChgColor implements Animation { Animation anim; 3 ( ) 4 16

Color[] colors; double time = 0, period; public ChgColor(Animation a, Color[] c, double p) { anim = a; colors = c; period = p; anim.draw(g); anim.addtime(dt); time += dt; anim.setcolor(colors[(int)(time/period) % colors.length]); public void moveto(double x, double y) { anim.moveto(x, y); public double getx() { return anim.getx(); public double gety() { return anim.gety(); public void setcolor(color c) { public Color getcolor() { return anim.getcolor();? static class AnimGroup implements Animation { Animation[] a = new Animation[20]; int count = 0; Color cl = Color.black; double gx, gy; public AnimGroup(double x, double y) { gx = x; gy = y; public void add(animation anim) { if(count+1 < a.length) a[count++] = anim; for(int i = 0; i < count; ++i) { double x = a[i].getx(), y = a[i].gety(); a[i].moveto(x+gx, y+gy); a[i].draw(g); a[i].moveto(x, y); for(int i = 0; i < count; ++i) a[i].addtime(dt); public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { cl = c; public Color getcolor() { return cl; draw 3 ( 10) Circle (i Animation) FlyingMove (i Animation) AnimGroup (i Animation) Triangle (i Animation) CircleMove (i Animation) ChgColor (i Animation) 10 17

5 4 3.4 1 (abstract class) abstract ( 11) Animation abstract class Figure implements Animation { Color cl; double gx, gy; public Figure(Color c, double x, double y) { cl=c; gx=x; gy=y; public void moveto(double x, double y) { gx = x; gy = y; public double getx() { return gx; public double gety() { return gy; public void setcolor(color c) { cl = c; public Color getcolor() { return cl; Figure (i Animation) Circle Triangle Container AnimGroup FlyingMove CircleMove ChgColor 11 + Figure class Circle extends Figure { double rad; public Circle(Color c, double x, double y, double r) { super(c, x, y); rad = r; g.setcolor(cl); g.filloval((int)(gx-rad), (int)(gy-rad), (int)(rad*2), (int)(rad*2)); class Triangle extends Figure { double dx0, dy0, dx1, dy1, dx2, dy2; public Triangle(Color c, double x0, double y0, double x1, double y1, double x2, double y2) { super(c, (x0+x1+x2)/3, (y0+y1+y2)/3); dx0 = x0-gx; dx1 = x1-gx; dx2 = x2-gx; 5 18

dy0 = y0-gy; dy1 = y1-gy; dy2 = y2-gy; int[] x = new int[]{(int)(gx+dx0),(int)(gx+dx1),(int)(gx+dx2); int[] y = new int[]{(int)(gy+dy0),(int)(gy+dy1),(int)(gy+dy2); g.setcolor(cl); g.fillpolygon(x, y, 3); 1 Container static abstract class Container extends Figure { Animation anim; public Container(Animation a) { super(a.getcolor(), a.getx(), a.gety()); anim = a; anim.draw(g); anim.addtime(dt); public void setcolor(color c) { anim.setcolor(c); public Color getcolor() { return anim.getcolor(); Container static class FlyingMove extends Container { double vx, vy; public FlyingMove(Animation a, double vx1, double vy1) { super(a); vx = vx1; vy = vy1; super.addtime(dt); gx += vx * dt; gy += vy * dt; if (gx<0.0 && vx < 0.0) { vx = -vx; if (gx>getwidth() && vx > 0.0) { vx = -vx; if (gy<0.0 && vy < 0.0) { vy = -vy; if (gy>getheight() && vy > 0.0) { vy = -vy; anim.moveto(gx, gy); class CircleMove extends Container { double rad, vtheta, theta = 0; public CircleMove(Animation a, double r, double vt) { super(a); rad = r; vtheta = vt; anim.moveto(gx+rad*math.cos(theta), gy+rad*math.sin(theta)); anim.draw(g); super.addtime(dt); theta += vtheta * dt; static class ChgColor extends Container { Color[] colors; double time = 0, period; public ChgColor(Animation a, Color[] c, double p) { super(a); colors = c; period = p; super.addtime(dt); time += dt; anim.setcolor(colors[(int)(time/period) % colors.length]); public void moveto(double x, double y) { anim.moveto(x, y); public double getx() { return anim.getx(); public double gety() { return anim.gety(); public void setcolor(color c) { 19

Container Figure class AnimGroup extends Figure { Animation[] a = new Animation[20]; int count = 0; public AnimGroup(double x, double y) { super(color.black, x, y); public void add(animation anim) { if(count+1 < a.length) a[count++] = anim; for(int i = 0; i < count; ++i) { double x = a[i].getx(), y = a[i].gety(); a[i].moveto(x+gx, y+gy); a[i].draw(g); a[i].moveto(x, y); for(int i = 0; i < count; ++i) a[i].addtime(dt); 4 4 4 4 GUI GUI ( 12 GUI GUI 3 1 ) 12 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Sample46 extends JFrame { Animation hit = null; Animation[] a = new Animation[20]; int count = 0; JPanel panel = new JPanel() { public void paint(graphics g) { for(int i = 0; i < count; ++i) { a[i].draw(g); ; JButton b1 = new JButton("Fast"); JButton b2 = new JButton("Slow"); JButton b3 = new JButton("Text"); JTextField t1 = new JTextField(); JPanel low = new JPanel(); 20

panel low low FlowLayout low 1 2 Animation changespeed 3 WavingText JTextField setpreferredsize ( ) public Sample46() { add(panel); add(low, BorderLayout.SOUTH); low.setlayout(new FlowLayout()); b1.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { if(hit!= null) { hit.changespeed(1.1); ); low.add(b1); b2.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { if(hit!= null) { hit.changespeed(0.9); ); low.add(b2); b3.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { String s = t1.gettext(); if(count+1>=a.length s.equals("")) { return; a[count++] = new WavingText( Color.getHSBColor((float)Math.random(), 1f, 1f), s, 400*Math.random(), 200*Math.random(), 100*Math.random(), 1); ); low.add(b3); low.add(t1); t1.setpreferredsize(new Dimension(60, 25)); setdefaultcloseoperation(exit_on_close); setpreferredsize(new Dimension(400, 300)); pack(); panel.addmouselistener(new MouseAdapter() { public void mousepressed(mouseevent e) { press(e.getx(), e.gety()); ); a[count++] = new FlyingCircle(Color.red,100,100,40,25,40,panel); a[count++] = new FlyingCircle(Color.blue,100,100,30,60,-90,panel); a[count++] = new WavingText(Color.green,"Hello",80,200,100,0.5); new Thread() { public void run() { while(true) { try { sleep(20); catch(exception ex) { for(int i = 0; i < count; ++i) { a[i].addtime(0.02); repaint();.start(); public static void main(string[] args) { new Sample46().setVisible(true); press public void press(int x, int y) { hit = null; for(int i = count-1; i >= 0; --i) { if(a[i].hit(x, y)) { hit = a[i]; for(int j = i; j < count-1; ++j) { a[j] = a[j+1]; a[count-1] = hit; return; 21

if(count+1 >= a.length) { return; hit = a[count++] = new FlyingCircle( Color.getHSBColor((float)Math.random(), 1f, 1f), x, y, 10+20*Math.random(), 10+40*Math.random(), 10+40*Math.random(), panel); ( ) Animation hit 1 FlyingCircle hit Animation 2 changespeed hit interface Animation { public void draw(graphics g); public void addtime(double dt); public boolean hit(double x, double y); public void changespeed(double r); static class WavingText implements Animation { static Font fn = new Font("Helvetica", Font.BOLD, 20); Color col; String text; double gx, gy, yrad, theta = 0.0, vtheta; public WavingText(Color c, String s, double x, double y, double r, double v) { col = c; text = s; gx = x; gy = y; yrad = r; vtheta = v; int x = (int)gx, y = (int)(gy + yrad*math.sin(theta)); g.setcolor(col); g.setfont(fn); g.drawstring(text, x, y); g.setcolor(color.black); theta += vtheta*dt; public boolean hit(double x, double y) { int xp = (int)gx, yp = (int)(gy + yrad*math.sin(theta)); return xp < x && x < xp+15*text.length() && yp-20 < y && y < yp; public void changespeed(double r) { vtheta *= r; static class FlyingCircle implements Animation { Color col; double gx, gy, rad, vx, vy; JPanel panel; public FlyingCircle(Color c, double x, double y, double r, double vx1, double vy1, JPanel p) { col = c; gx = x; gy = y; rad = r; vx = vx1; vy = vy1; panel = p; g.setcolor(col); g.filloval((int)(gx-rad), (int)(gy-rad), (int)(rad*2), (int)(rad*2)); gx += vx * dt; gy += vy * dt; if(gx<0 && vx<0 gx>panel.getwidth() && vx>0) { vx = -vx; if(gy<0 && vy<0 gy>panel.getheight() && vy>0) { vy = -vy; public boolean hit(double x, double y) { return (gx-x)*(gx-x) + (gy-y)*(gy-y) <= rad*rad; public void changespeed(double r) { vx *= r; vy *= r; 5 22

5 2 Java ( ) 1 A 14A 1 ( ) 1. Subject Report 14A 2. 3. ( ) 1 4. Q1. Q2. Java Ruby Q3. 23