< F2D825282CC947B909482CC A815B83682E6A>

Similar documents
< F2D82518CC282CC D2E6A7464>

< F2D F B834E2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D A839382CC906A2E6A7464>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

Java言語 第1回

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

アプレットの作成

Microsoft PowerPoint prog1_doc2x.pptx

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 +=

Java言語 第1回

Java言語 第1回

問題1 以下に示すプログラムは、次の処理をするプログラムである

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

Microsoft PowerPoint prog1_doc2.pptx

Applet java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet

r3.dvi

Java演習(4) -- 変数と型 --

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

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

Java言語 第1回

PowerPoint Presentation

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

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

2008 e-learning T050050

226

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

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

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

PowerPoint プレゼンテーション

シミュレーションの簡単な例 GUI 無しのシミュレーションを作る GUI を作る パラメタを設定するデモンストレーションをする 2 オブジェクト指向プログラミング特論

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

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

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

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

Java講座

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

Transcription:

3 の倍数のトランプカード 1. はじめに [Java アプレット ] [Java アプリケーション ] ここにトランプが 1 組あります ジョーカー 2 枚を除いて 52 枚を使います 3 の倍数は スペード クローバ ダイヤ ハートに それぞれ 3 と 6 と 9 と 12 の 4 枚ずつあるので 4 4=16 枚あります この 52 枚のトランプから 1 枚引いたとき そのカードが 3 の倍数である確率を考えます 52 枚のうち 16 枚が 3 の倍数のカードなので 数学的には 16/52 になります しかし 実際には 1 枚ずつトランプを引いては戻すことを 52 回行ったら 3 の倍数のカードがちょうど 16 回出るなんてことはありませんね では 数学的に求めた理論上の確率の 16/52 との関係はどうなっているんでしょうか シミュレーションソフト 3 の倍数のトランプカード を使って 3 の倍数のカードが出る様子を観察してみてください 2.Java アプレット (1) Java プログラムリスト //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // // 3の倍数のトランプカード Copyright ( C) K.Niwa 2001.12.20 // // // ( Javaアプレット) // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /****** クラスの読み込み******************************************************************/ import java.applet.applet; import java.awt.*; import java.awt.event.*; import java.lang.math; /****** public class Toranpu2 extends Applet implements Runnable *********************************/ public class Toranpu2 extends Applet implements Runnable { // スレッドを使えるようにする -45-

/****** 変数とオブジェクトの型宣言 *******************************************************/ Thread myth; // スレッド型で宣言する Button[] mybtn; Panel mypanel; // ボタン型で宣言する // パネル型で宣言する int imgno; // 整数型で宣言する Image[] img; MediaTracker mymt; // イメージ型で宣言する int flag=0; int r=40; // 乱数 int ct1=0; // 実験回数 long t; // 時間かせぎ int d=0; int ct,ctt; // 度数 int N=1000; // 速度 int count; // ループカウンター /****** public void init () メソット **************************************************************/ public void init(){ setbackground( Color.lightGray ); // 背景色をライトグレーにする myth=null; // スレッドの初期化 imgno=0; img=new Image[ 53 ]; // イメージの実体化 img[ 1 ] =getimage( getdocumentbase (),"d01.jpg"); // ダイヤのエース画像の読み込み img[ 2 ] =getimage( getdocumentbase (),"d02.jpg"); img[ 3 ] =getimage( getdocumentbase (),"d03.jpg"); img[ 4 ] =getimage( getdocumentbase (),"d04.jpg"); img[ 5 ] =getimage( getdocumentbase (),"d05.jpg"); img[ 6 ] =getimage( getdocumentbase (),"d06.jpg"); img[ 7 ] =getimage( getdocumentbase (),"d07.jpg"); img[ 8 ] =getimage( getdocumentbase (),"d08.jpg"); img[ 9 ] =getimage( getdocumentbase (),"d09.jpg"); img[ 10 ] =getimage( getdocumentbase (),"d10.jpg"); img[ 11 ] =getimage( getdocumentbase (),"d11.jpg"); img[ 12 ] =getimage( getdocumentbase (),"d12.jpg"); img[ 13 ] =getimage( getdocumentbase (),"d13.jpg"); img[ 14 ] =getimage( getdocumentbase (),"h01.jpg"); // ハートのエース画像の読み込み img[ 15 ] =getimage( getdocumentbase (),"h02.jpg"); img[ 16 ] =getimage( getdocumentbase (),"h03.jpg"); img[ 17 ] =getimage( getdocumentbase (),"h04.jpg"); img[ 18 ] =getimage( getdocumentbase (),"h05.jpg"); img[ 19 ] =getimage( getdocumentbase (),"h06.jpg"); img[ 20 ] =getimage( getdocumentbase (),"h07.jpg"); img[ 21 ] =getimage( getdocumentbase (),"h08.jpg"); img[ 22 ] =getimage( getdocumentbase (),"h09.jpg"); img[ 23 ] =getimage( getdocumentbase (),"h10.jpg"); img[ 24 ] =getimage( getdocumentbase (),"h11.jpg"); img[ 25 ] =getimage( getdocumentbase (),"h12.jpg"); img[ 26 ] =getimage( getdocumentbase (),"h13.jpg"); img[ 27 ] =getimage( getdocumentbase (),"m01.jpg");// クローバのエース画像の読み込み img[ 28 ] =getimage( getdocumentbase (),"m02.jpg"); img[ 29 ] =getimage( getdocumentbase (),"m03.jpg"); img[ 30 ] =getimage( getdocumentbase (),"m04.jpg"); img[ 31 ] =getimage( getdocumentbase (),"m05.jpg"); img[ 32 ] =getimage( getdocumentbase (),"m06.jpg"); img[ 33 ] =getimage( getdocumentbase (),"m07.jpg"); img[ 34 ] =getimage( getdocumentbase (),"m08.jpg"); img[ 35 ] =getimage( getdocumentbase (),"m09.jpg"); img[ 36 ] =getimage( getdocumentbase (),"m10.jpg"); img[ 37 ] =getimage( getdocumentbase (),"m11.jpg"); img[ 38 ] =getimage( getdocumentbase (),"m12.jpg"); img[ 39 ] =getimage( getdocumentbase (),"m13.jpg"); img[ 40 ] =getimage( getdocumentbase (),"s01.jpg");// スペードのエース画像の読み込み -46-

img[ 41 ] =getimage( getdocumentbase (),"s02.jpg"); img[ 42 ] =getimage( getdocumentbase (),"s03.jpg"); img[ 43 ] =getimage( getdocumentbase (),"s04.jpg"); img[ 44 ] =getimage( getdocumentbase (),"s05.jpg"); img[ 45 ] =getimage( getdocumentbase (),"s06.jpg"); img[ 46 ] =getimage( getdocumentbase (),"s07.jpg"); img[ 47 ] =getimage( getdocumentbase (),"s08.jpg"); img[ 48 ] =getimage( getdocumentbase (),"s09.jpg"); img[ 49 ] =getimage( getdocumentbase (),"s10.jpg"); img[ 50 ] =getimage( getdocumentbase (),"s11.jpg"); img[ 51 ] =getimage( getdocumentbase (),"s12.jpg"); img[ 52 ] =getimage( getdocumentbase (),"s13.jpg"); mymt=new MediaTracker( this ); // メディアトラッカーの実体化 for ( count=1;count < =52;count++ ){ mymt.addimage( img[ count ],0); // トランプ画像のメテ ィアトラッカーへの貼り付け try{ mymt.waitforid( 0 ); catch( InterruptedException e){ mybtn=new Button[ 4 ]; mybtn[ 0 ] =new Button (" 初期化 "); // ボタンの実体化 mybtn[ 1 ] =new Button (" 高 mybtn[ 2 ] =new Button (" 低 速 "); 速 "); // ボタンの実体化 // ボタンの実体化 mybtn[ 3 ] =new Button (" 停 止 "); // ボタンの実体化 mypanel=new Panel (); // パネルの実体化 mypanel.setlayout( new GridLayout( 1,4 )); // パネルをグリッドレイアウトにする for ( count=0;count < =3;count++ ){ mypanel.add( mybtn[ count ]); // パネルにボタンを貼り付ける setlayout( new BorderLayout ()); // 全体をボーダーレイアウトにする add ("South",myPanel); // バネルを南に貼り付ける mybtn[ 0 ].addactionlistener( new ActionListener (){ // 初期化ボタンを押したとき public void actionperformed( ActionEvent e){ flag=0; // 識別子 repaint (); //paint() メソッドを呼び出す ); mybtn[ 1 ].addactionlistener( new ActionListener (){ // 高速ボタンを押したとき public void actionperformed( ActionEvent e){ flag=1; N=100; // 識別子 // スピード 0.1 秒 repaint (); //paint() メソッドを呼び出す ); mybtn[ 2 ].addactionlistener( new ActionListener (){ // 低速ボタンを押したとき public void actionperformed( ActionEvent e){ flag=2; // 識別子 N=1000; // スピード1 秒 repaint (); //paint() メソッドを呼び出す ); -47-

mybtn[ 3 ].addactionlistener( new ActionListener (){ // 停止ボタンを押したとき public void actionperformed( ActionEvent e){ flag=3; // 識別子 repaint (); //paint() メソッドを呼び出す ); //public void init() /****** public void start () メソット *************************************************************/ public void start(){ if ( myth==null){ myth=new Thread( this ); // スレッドの実体化 myth.start (); // スレッドを開始する /****** public void run () メソット **************************************************************/ public void run (){ while ( true ){ try { myth.sleep( N ); // 休む catch ( InterruptedException e){ if ( flag==1 flag==2){ repaint (); //paint() メソッドを呼び出す /****** public void paint( Graphics g ) メソット ****************************************************/ public void paint( Graphics g){ if ( mymt.checkid( 0 )){ // メディアトラッカーに全て読み込まれているかチェック // 初期状態と初期化ボタンを押したときのイベント処理 if ( flag==0){ g.clearrect( 0,0,300,350 ); // 全体のクリア d=0; // 引いた3の倍数のカード枚数の初期化 ct1=0; // 引いたすべてのカードの枚数の初期化 r=40; // スペードのエース g.drawimage( img[ 40 ],115,30,this); // トランプの表示 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,110+50); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,130+50); g.drawstring (" 3の倍数を引いた割合 = ",20+40,150+70); g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = 0.30769231",23,260 ); g.drawstring ("Copyright( C) K.Niwa 2001.12",80,325 );// 作者表示 //if ( flag==0) // 高速ボタンまたは低速ボタンを押したときのイベント処理 ] else if ( flag==1 flag==2) { ct1++; // 実験回数 g.drawimage( img[ 40 ],115,30,this); // トランプの表示 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160) g.drawstring (""+d,180+40,160); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,180) g.drawstring (""+ct1,180+40,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); g.drawstring (""+(( float)( d )/( float)( ct1 )),150+40,220); g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = 0.30769231",23,260 ); -48-

// 作者表示 g.drawstring ("Copyright( C) K.Niwa 2001.12",80,325 ); // 判断前のトランプを切る点滅 for ( ctt=1;ctt < =52;ctt++ ){ g.drawimage( img[ ctt ],115,30,this); for ( t=1;t < =100000;t++ ){ // 時間稼ぎ // トランプが3の倍数のカードかどうかの判断の開始 r= ( int)( 1+52*Math.random ()); 1 ~ 52 の乱数 switch (){ r case 1: // ダイヤのエース g.drawimage( img[ 1 ],115,30,this); case 2: g.drawimage( img[ 2 ],115,30,this); case 3: g.drawimage( img[ 3 ],115,30,this); case 4: g.drawimage( img[ 4 ],115,30,this); case 5: g.drawimage( img[ 5 ],115,30,this); case 6: g.drawimage( img[ 6 ],115,30,this); case 7: g.drawimage( img[ 7 ],115,30,this); case 8: g.drawimage( img[ 8 ],115,30,this); case 9: g.drawimage( img[ 9 ],115,30,this); case 10: g.drawimage( img[ 10 ],115,30,this); case 11: g.drawimage( img[ 11 ],115,30,this); case 12: g.drawimage( img[ 12 ],115,30,this); case 13: g.drawimage( img[ 13 ],115,30,this); case 14: // ハートのエース g.drawimage( img[ 14 ],115,30,this); case 15: g.drawimage( img[ 15 ],115,30,this); -49-

case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: g.drawimage( img[ 16 ],115,30,this); g.drawimage( img[ 17 ],115,30,this); g.drawimage( img[ 18 ],115,30,this); g.drawimage( img[ 19 ],115,30,this); g.drawimage( img[ 20 ],115,30,this); g.drawimage( img[ 21 ],115,30,this); g.drawimage( img[ 22 ],115,30,this); g.drawimage( img[ 23 ],115,30,this); g.drawimage( img[ 24 ],115,30,this); g.drawimage( img[ 25 ],115,30,this); g.drawimage( img[ 26 ],115,30,this); case 27: // クローバのエース g.drawimage( img[ 27 ],115,30,this); case 28: case 29: case 30: case 31: case 32: case 33: case 34: g.drawimage( img[ 28 ],115,30,this); g.drawimage( img[ 29 ],115,30,this); g.drawimage( img[ 30 ],115,30,this); g.drawimage( img[ 31 ],115,30,this); g.drawimage( img[ 32 ],115,30,this); g.drawimage( img[ 33 ],115,30,this); g.drawimage img 34,115,30,this ; ( [ ] ) -50-

//switch ( r) case 35: case 36: case 37: case 38: case 39: g.drawimage( img[ 35 ],115,30,this); g.drawimage( img[ 36 ],115,30,this); g.drawimage( img[ 37 ],115,30,this); g.drawimage( img[ 38 ],115,30,this); g.drawimage( img[ 39 ],115,30,this); case 40: // スペードのエース g.drawimage( img[ 40 ],115,30,this); case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: case 51: case 52: g.drawimage( img[ 41 ],115,30,this); g.drawimage( img[ 42 ],115,30,this); g.drawimage( img[ 43 ],115,30,this); g.drawimage( img[ 44 ],115,30,this); g.drawimage( img[ 45 ],115,30,this); g.drawimage( img[ 46 ],115,30,this); g.drawimage( img[ 47 ],115,30,this); g.drawimage( img[ 48 ],115,30,this); g.drawimage( img[ 49 ],115,30,this); g.drawimage( img[ 50 ],115,30,this); g.drawimage( img[ 51 ],115,30,this); g.drawimage( img[ 52 ],115,30,this); -51-

// トランプが3の倍数のカードかどうかの判断の終了 g.clearrect( 0,140,300,100 ); // 枠の消去 //else if ( flag==1 flag==2) g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160); g.drawstring (""+d,180+40,160); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,180); g.drawstring (""+ct1,180+40,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); g.drawstring (""+(( float)( d )/( float)( ct1 )),150+40,220); // 停止ボタンを押したときのイベント処理 else if ( flag==3){ // トランプカードの表示 switch (){ r case 1: // ダイヤのエース g.drawimage( img[ 1 ],115,30,this); case 2: g.drawimage( img[ 2 ],115,30,this); case 3: g.drawimage( img[ 3 ],115,30,this); case 4: g.drawimage( img[ 4 ],115,30,this); case 5: g.drawimage( img[ 5 ],115,30,this); case 6: g.drawimage( img[ 6 ],115,30,this); case 7: g.drawimage( img[ 7 ],115,30,this); case 8: g.drawimage( img[ 8 ],115,30,this); case 9: g.drawimage( img[ 9 ],115,30,this); case 10: g.drawimage( img[ 10 ],115,30,this); case 11: g.drawimage( img[ 11 ],115,30,this); case 12: g.drawimage( img[ 12 ],115,30,this); case 13: g.drawimage( img[ 13 ],115,30,this); case 14: // ハートのエース g.drawimage( img[ 14 ],115,30,this); case 15: g.drawimage( img[ 15 ],115,30,this); -52-

case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: g.drawimage( img[ 16 ],115,30,this); g.drawimage( img[ 17 ],115,30,this); g.drawimage( img[ 18 ],115,30,this); g.drawimage( img[ 19 ],115,30,this); g.drawimage( img[ 20 ],115,30,this); g.drawimage( img[ 21 ],115,30,this); g.drawimage( img[ 22 ],115,30,this); g.drawimage( img[ 23 ],115,30,this); g.drawimage( img[ 24 ],115,30,this); g.drawimage( img[ 25 ],115,30,this); g.drawimage( img[ 26 ],115,30,this); case 27: // クローバのエース g.drawmage( img[ 27 ],115,30,this); case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: g.drawimage( img[ 28 ],115,30,this); g.drawimage( img[ 29 ],115,30,this); g.drawimage( img[ 30 ],115,30,this); g.drawimage( img[ 31 ],115,30,this); g.drawimage( img[ 32 ],115,30,this); g.drawimage( img[ 33 ],115,30,this); g.drawimage( img[ 34 ],115,30,this); g.drawimage( img[ 35 ],115,30,this); g.drawimage img 36,115,30,this ; ( [ ] ) -53-

case 37: g.drawimage( img[ 37 ],115,30,this); case 38: g.drawimage( img[ 38 ],115,30,this); case 39: g.drawimage( img[ 39 ],115,30,this); case 40: // スペードのエース g.drawimage( img[ 40 ],115,30,this); case 41: g.drawimage( img[ 41 ],115,30,this); case 42: g.drawimage( img[ 42 ],115,30,this); case 43: g.drawimage( img[ 43 ],115,30,this); case 44: g.drawimage( img[ 44 ],115,30,this); case 45: g.drawimage( img[ 45 ],115,30,this); case 46: g.drawimage( img[ 46 ],115,30,this); case 47: g.drawimage( img[ 47 ],115,30,this); case 48: g.drawimage( img[ 48 ],115,30,this); case 49: g.drawimage( img[ 49 ],115,30,this); case 50: g.drawimage( img[ 50 ],115,30,this); case 51: g.drawimage( img[ 51 ],115,30,this); case 52: g.drawimage( img[ 52 ],115,30,this); //switch ( r) // トランプカードの表示の終了 g.clearrect( 0,140,300,100 ); // 枠の消去 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160); g.drawstring (""+d,180+40,160); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,180); g.drawstring (""+ct1,180+40,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); -54-

if ( ct1> 0){ g.drawstring (""+(( float)( d )/( float)( ct1)),150+40,220); g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = // 作者表示 0.30769231",23,260 ) ; g.drawstring ("Copyright( C) K.Niwa 2001.12",80,325 ); //else if ( flag==3) //if ( mymt.checkid( 0)) //public void paint( Graphics g) //public class Toranpu extends Applet (2) HTML リスト < HTML> < HEAD> <!------------------------------------------------------------------------------------------------------------------------------------- 3の倍数のトランプカード Copyright ( C) K.Niwa 2001.12.20 --------------------------------------------------------------------------------------------------------------------------------------> < /HEAD> < BODY > < CENTER< > B > 3の倍数のトランプカード < /B> < BR>< BR> < APPLET CODE="Toranpu2.class" WIDTH="300" HEIGHT="350" >< /APPLET> < BR>< BR> < /CENTER> < /BODY> < /HTML> 3.Java アプリケーション プログラムリスト //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // 3の倍数のトランプカード // // Copyright ( C) K.Niwa 2002.08.19 // // // ( Javaアプリケーション) // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /****** クラスの読み込み *****************************************************************/ import java.awt.*; import java.awt.event.*; import java.lang.math; /****** public class FToranpu2 extends Frame implements Runnable ********************************/ public class FToranpu2 extends Frame implements Runnable { // スレット を使えるようにする /****** 変数とオブジェクトの型宣言 ********************************************************/ Thread myth; // スレット 型で宣言する Button[] mybtn; Panel mypanel; // ボタン型で宣言する // パネル型で宣言する -55-

int imgno; Image[] img; MediaTracker mymt; // イメージ型で宣言する int flag=0; int r=40; // 乱数 int ct1=0; / 実験回数 long t; int d=0; // 時間かせぎ // 度数 int ct,ctt; int N=1000; int count; // 速度 // ループカウンター /****** フレームとイベントの定義 **********************************************************/ public FToranpu2(){ setsize( 300+20,360 ); // フレームの大きさ addwindowlistener( new WindowAdapter (){ // フレームの定義 public void windowclosing( WindowEvent e){ System.exit( 0 ); ); myth=null; // スレッドの初期化 if ( myth==null ) // スレッドの実体化 { myth=new Thread( this ); myth.start (); setbackground( Color.lightGray ); // 背景色の設定 imgno=0; img=new Image[ 53 ]; // イメージの実体化 // ダイヤのエース画像の読み込み img[ 1 ] =Toolkit.getDefaultToolkit ().getimage("d01.jpg"); img[ 2 ] =Toolkit.getDefaultToolkit ().getimage("d02.jpg"); img[ 3 ] =Toolkit.getDefaultToolkit ().getimage("d03.jpg"); img[ 4 ] =Toolkit.getDefaultToolkit ().getimage("d04.jpg"); img[ 5 ] =Toolkit.getDefaultToolkit ().getimage("d05.jpg"); img[ 6 ] =Toolkit.getDefaultToolkit ().getimage("d06.jpg"); img[ 7 ] =Toolkit.getDefaultToolkit ().getimage("d07.jpg"); img[ 8 ] =Toolkit.getDefaultToolkit ().getimage("d08.jpg"); img[ 9 ] =Toolkit.getDefaultToolkit ().getimage("d09.jpg"); img[ 10 ] =Toolkit.getDefaultToolkit ().getimage("d10.jpg"); img[ 11 ] =Toolkit.getDefaultToolkit ().getimage("d11.jpg"); img[ 12 ] =Toolkit.getDefaultToolkit ().getimage("d12.jpg"); img[ 13 ] =Toolkit.getDefaultToolkit ().getimage("d13.jpg"); // ハートのエース画像の読み込み img[ 14 ] =Toolkit.getDefaultToolkit ().getimage("h01.jpg"); img[ 15 ] =Toolkit.getDefaultToolkit ().getimage("h02.jpg"); img[ 16 ] =Toolkit.getDefaultToolkit ().getimage("h03.jpg"); img[ 17 ] =Toolkit.getDefaultToolkit ().getimage("h04.jpg"); img[ 18 ] =Toolkit.getDefaultToolkit ().getimage("h05.jpg"); img[ 19 ] =Toolkit.getDefaultToolkit ().getimage("h06.jpg"); img[ 20 ] =Toolkit.getDefaultToolkit ().getimage("h07.jpg"); img[ 21 ] =Toolkit.getDefaultToolkit ().getimage("h08.jpg"); img[ 22 ] =Toolkit.getDefaultToolkit ().getimage("h09.jpg"); img[ 23 ] =Toolkit.getDefaultToolkit ().getimage("h10.jpg"); img[ 24 ] =Toolkit.getDefaultToolkit ().getimage("h11.jpg"); img[ 25 ] =Toolkit.getDefaultToolkit ().getimage("h12.jpg"); img[ 26 ] =Toolkit.getDefaultToolkit ().getimage("h13.jpg"); -56-

// クローバのエース画像の読み込み img[ 27 ] =Toolkit.getDefaultToolkit ().getimage("m01.jpg"); img[ 28 ] =Toolkit.getDefaultToolkit ().getimage("m02.jpg"); img[ 29 ] =Toolkit.getDefaultToolkit ().getimage("m03.jpg"); img[ 30 ] =Toolkit.getDefaultToolkit ().getimage("m04.jpg"); img[ 31 ] =Toolkit.getDefaultToolkit ().getimage("m05.jpg"); img[ 32 ] =Toolkit.getDefaultToolkit ().getimage("m06.jpg"); img[ 33 ] =Toolkit.getDefaultToolkit ().getimage("m07.jpg"); img[ 34 ] =Toolkit.getDefaultToolkit ().getimage("m08.jpg"); img[ 35 ] =Toolkit.getDefaultToolkit ().getimage("m09.jpg"); img[ 36 ] =Toolkit.getDefaultToolkit ().getimage("m10.jpg"); img[ 37 ] =Toolkit.getDefaultToolkit ().getimage("m11.jpg"); img[ 38 ] =Toolkit.getDefaultToolkit ().getimage("m12.jpg"); img[ 39 ] =Toolkit.getDefaultToolkit ().getimage("m13.jpg"); // スペードのエース画像の読み込み img[ 40 ] =Toolkit.getDefaultToolkit ().getimage("s01.jpg"); img[ 41 ] =Toolkit.getDefaultToolkit ().getimage("s02.jpg"); img[ 42 ] =Toolkit.getDefaultToolkit ().getimage("s03.jpg"); img[ 43 ] =Toolkit.getDefaultToolkit ().getimage("s04.jpg"); img[ 44 ] =Toolkit.getDefaultToolkit ().getimage("s05.jpg"); img[ 45 ] =Toolkit.getDefaultToolkit ().getimage("s06.jpg"); img[ 46 ] =Toolkit.getDefaultToolkit ().getimage("s07.jpg"); img[ 47 ] =Toolkit.getDefaultToolkit ().getimage("s08.jpg"); img[ 48 ] =Toolkit.getDefaultToolkit ().getimage("s09.jpg"); img[ 49 ] =Toolkit.getDefaultToolkit ().getimage("s10.jpg"); img[ 50 ] =Toolkit.getDefaultToolkit ().getimage("s11.jpg"); img[ 51 ] =Toolkit.getDefaultToolkit ().getimage("s12.jpg"); img[ 52 ] =Toolkit.getDefaultToolkit ().getimage("s13.jpg"); mymt=new MediaTracker( this ); // メディアトラッカーの実体化 for ( count=1;count < =52;count++ ){ mymt.addimage( img[ count ],0); // トランフ 画像のメテ ィアトラッカーへの貼り付け try{ mymt.waitforid( 0 ); catch( InterruptedException e){ mybtn=new Button[ 4 ]; mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 高速 "); // ボタンの実体化 // ボタンの実体化 mybtn[ 2 ] =new Button (" 低 速 "); // ボタンの実体化 mybtn[ 3 ] =new Button (" 停 止 "); // ボタンの実体化 mypanel=new Panel (); // パネルの実体化 mypanel.setlayout( new GridLayout( 1,4 )); for ( count=0;count < =3;count++ ) { mypanel.add( mybtn[ count ]); setlayout( new BorderLayout ()); add ("South",myPanel); mybtn[ 0 ].addactionlistener( new ActionListener (){ // 初期化ボタンを押したとき public void actionperformed( ActionEvent e){ flag=0; // 識別子 repaint (); //paint() メソッドを呼び出す ); -57-

mybtn[ 1 ].addactionlistener( new ActionListener (){ // 高速ボタンを押したとき public void actionperformed( ActionEvent e){ flag=1; N=100; repaint (); ); mybtn[ 2 ].addactionlistener( new ActionListener (){ // 低速ボタンを押したとき public void actionperformed( ActionEvent e){ flag=2; N=1000; repaint (); ); mybtn[ 3 ].addactionlistener( new ActionListener (){ // 停止ボタンを押したとき public void actionperformed( ActionEvent e){ flag=3; repaint (); ); //public FToranpu2() /****** public void run () メソット **************************************************************/ public void run (){ while ( true ){ try { myth.sleep( N ); // 休む catch ( InterruptedException e){ if ( flag==1 flag==2){ repaint (); /****** public void paint( Graphics g ) メソット ****************************************************/ public void paint( Graphics g){ if ( mymt.checkid( 0)){ // 初期状態と初期化ボタンを押したときのイベント処理 if ( flag==0){ g.clearrect( 0,0,300,350 ); // 全体のクリア d=0; // 引いた3の倍数のカード枚数の初期化 ct1=0; r=40; // 引いたすべてのカードの枚数の初期化 // スペードのエース g.drawimage( img[ 40 ],115,30,this); // トランプの表示 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,110+50); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,130+50); g.drawstring (" 3の倍数を引いた割合 = ",20+40,150+70); g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = 0.30769231",23,260 ) ; g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 );// 作者表示 //if ( flag==0) // 高速ボタンまたは低速ボタンを押したときのイベント処理 else if ( flag==1 flag==2){ ct1++; // 実験回数 g.drawimage( img[ 40 ],115,30,this); // トランプの表示 -58-

; ; g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160) g.drawstring (""+d,180+40+10,160); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,180) g.drawstring (""+ct1,180+40+10,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); g.drawstring (""+(( float)( d )/( float)( ct1 )),150+40+5,220); g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = // 作者表示 0.30769231",23,260 ) ; g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 ); // 判断前のトランプを切る点滅 - for ( ctt=1;ctt < =52;ctt++ ){ g.drawimage( img[ ctt ],115,30,this); for ( t=1;t < =100000;t++ ){ // 時間稼ぎ // トランプが3の倍数のカードかどうかの判断の開始 r= ( int)( 1+52*Math.random ()); switch (){ r case 1: // ダイヤのエース g.drawimage( img[ 1 ],115,30,this); case 2: g.drawimage( img[ 2 ],115,30,this); case 3: g.drawimage( img[ 3 ],115,30,this); case 4: g.drawimage( img[ 4 ],115,30,this); case 5: g.drawimage( img[ 5 ],115,30,this); case 6: g.drawimage( img[ 6 ],115,30,this); case 7: g.drawimage( img[ 7 ],115,30,this); case 8: g.drawimage( img[ 8 ],115,30,this); case 9: g.drawimage( img[ 9 ],115,30,this); case 10: g.drawimage( img[ 10 ],115,30,this); case 11: g.drawimage( img[ 11 ],115,30,this); -59-

case 12: case 13: g.drawimage( img[ 12 ],115,30,this); g.drawimage( img[ 13 ],115,30,this); case 14: // ハートのエース g.drawimage( img[ 14 ],115,30,this); case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: g.drawimage( img[ 15 ],115,30,this); g.drawimage( img[ 16 ],115,30,this); g.drawimage( img[ 17 ],115,30,this); g.drawimage( img[ 18 ],115,30,this); g.drawimage( img[ 19 ],115,30,this); g.drawimage( img[ 20 ],115,30,this); g.drawimage( img[ 21 ],115,30,this); g.drawimage( img[ 22 ],115,30,this); g.drawimage( img[ 23 ],115,30,this); g.drawimage( img[ 24 ],115,30,this); g.drawimage( img[ 25 ],115,30,this); g.drawimage( img[ 26 ],115,30,this); case 27: // クローバのエース g.drawimage( img[ 27 ],115,30,this); case 28: case 29: g.drawimage( img[ 28 ],115,30,this); g.drawimage img 29,115,30,this ; ( [ ] ) -60-

case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: g.drawimage( img[ 30 ],115,30,this); g.drawimage( img[ 31 ],115,30,this); g.drawimage( img[ 32 ],115,30,this); g.drawimage( img[ 33 ],115,30,this); g.drawimage( img[ 34 ],115,30,this); g.drawimage( img[ 35 ],115,30,this); g.drawimage( img[ 36 ],115,30,this); g.drawimage( img[ 37 ],115,30,this); g.drawimage( img[ 38 ],115,30,this); g.drawimage( img[ 39 ],115,30,this); case 40: // スペードのエース g.drawimage( img[ 40 ],115,30,this); case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: g.drawimage( img[ 41 ],115,30,this); g.drawimage( img[ 42 ],115,30,this); g.drawimage( img[ 43 ],115,30,this); g.drawimage( img[ 44 ],115,30,this); g.drawimage( img[ 45 ],115,30,this); g.drawimage( img[ 46 ],115,30,this); g.drawimage( img[ 47 ],115,30,this); g.drawimage img 48,115,30,this ; ( [ ] ) -61-

case 49: case 50: case 51: case 52: g.drawimage( img[ 49 ],115,30,this); g.drawimage( img[ 50 ],115,30,this); g.drawimage( img[ 51 ],115,30,this); g.drawimage( img[ 52 ],115,30,this); //else if ( flag==1 flag==2) //switch ( r) // トランプが3の倍数のカードかどうかの判断の終了 g.clearrect( 0,140,300,100 ); // 枠の消去 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160); g.drawstring (""+d,180+40+10,160); g.drawstring (" 引いたすべてのカードの枚数 = ",20+40,180); g.drawstring (""+ct1,180+40+10,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); g.drawstring (""+(( float)( d )/( float)( ct1 )),150+40+5,220); // 停止ボタンを押したときのイベント処理 else if ( flag==3){ // トランプカードの表示 - switch (){ r case 1: // ダイヤのエース g.drawimage( img[ 1 ],115,30,this); case 2: g.drawimage( img[ 2 ],115,30,this); case 3: g.drawimage( img[ 3 ],115,30,this); case 4: g.drawimage( img[ 4 ],115,30,this); case 5: g.drawimage( img[ 5 ],115,30,this); case 6: g.drawimage( img[ 6 ],115,30,this); case 7: g.drawimage( img[ 7 ],115,30,this); case 8: g.drawimage( img[ 8 ],115,30,this); case 9: g.drawimage( img[ 9 ],115,30,this); -62-

case 10: case 11: case 12: case 13: g.drawimage( img[ 10 ],115,30,this); g.drawimage( img[ 11 ],115,30,this); g.drawimage( img[ 12 ],115,30,this); g.drawimage( img[ 13 ],115,30,this); case 14: // ハートのエース g.drawimage( img[ 14 ],115,30,this); case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: g.drawimage( img[ 15 ],115,30,this); g.drawimage( img[ 16 ],115,30,this); g.drawimage( img[ 17 ],115,30,this); g.drawimage( img[ 18 ],115,30,this); g.drawimage( img[ 19 ],115,30,this); g.drawimage( img[ 20 ],115,30,this); g.drawimage( img[ 21 ],115,30,this); g.drawimage( img[ 22 ],115,30,this); g.drawimage( img[ 23 ],115,30,this); g.drawimage( img[ 24 ],115,30,this); g.drawimage( img[ 25 ],115,30,this); case 26: g.drawimage( img[ 26 ],115,30,this); // クローバのエース case 27: g.drawimage( img[ 27 ],115,30,this); case 28: case 29: g.drawimage( img[ 28 ],115,30,this); g.drawimage img 29,115,30,this ; ( [ ] ) -63-

case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: g.drawimage( img[ 30 ],115,30,this); g.drawimage( img[ 31 ],115,30,this); g.drawimage( img[ 32 ],115,30,this); g.drawimage( img[ 33 ],115,30,this); g.drawimage( img[ 34 ],115,30,this); g.drawimage( img[ 35 ],115,30,this); g.drawimage( img[ 36 ],115,30,this); g.drawimage( img[ 37 ],115,30,this); g.drawimage( img[ 38 ],115,30,this); g.drawimage( img[ 39 ],115,30,this); case 40: // スペードのエース g.drawimage( img[ 40 ],115,30,this); case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: g.drawimage( img[ 41 ],115,30,this); g.drawimage( img[ 42 ],115,30,this); g.drawimage( img[ 43 ],115,30,this); g.drawimage( img[ 44 ],115,30,this); g.drawimage( img[ 45 ],115,30,this); g.drawimage( img[ 46 ],115,30,this); g.drawimage( img[ 47 ],115,30,this); g.drawimage( img[ 48 ],115,30,this); g.drawimage( img[ 49 ],115,30,this); g.drawimage img 50,115,30,this ; ( [ ] ) -64-

//else if ( flag==3) //if ( mymt.checkid( 0)) //public void paint( Graphics g) case 51: g.drawimage( img[ 51 ],115,30,this); case 52: g.drawimage( img[ 52 ],115,30,this); //switch ( r) // トランプカードの表示の終了 g.clearrect( 0,140,300,100 ); // 枠の消去 g.drawstring (" 引いた3の倍数のカード枚数 = ",20+40,160); g.drawstring (""+d,180+40+10,160); g.drawstring (""+ct1,180+40+10,180); g.drawstring (" 3の倍数を引いた割合 = ",20+40,220); if ( ct1> 0){ g.drawstring (""+(( float)( d )/( float)( ct1)),150+40+5,220) ; g.drawstring (" 3の倍数を引く理論上の割合 = 16/52 = 0.30769231",23,260 ) ; // 作者表示 g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 ); /****** public static void main メソット *********************************************************/ public static void main( String[] args ){ // フレ-ムを表示する Frame w=new FToranpu2 (); w.show (); //public static void main( String[] args) //public class FToranpu2 extends Frame implements Runnable -65-