< F2D825282CC947B909482CC A815B83682E6A>

Similar documents
< F2D82518CC282CC D2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D F B834E2E6A7464>

< F2D834F838C A815B A CC>

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D89BA8EE882C E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D A839382CC906A2E6A7464>

< F2D A838B838D96402E6A7464>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D E E6A7464>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

< F2D B825082CC96E291E82E6A7464>


Microsoft PowerPoint - OOP.pptx

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

ガイダンス

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

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

2

Java言語 第1回

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

Java言語 第1回

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

text_13.dvi

問題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

text_12.dvi

untitled

Microsoft PowerPoint - prog11.ppt

GUIプログラムⅣ

GUIプログラムⅤ

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

Thread

Microsoft PowerPoint prog1_doc2.pptx

Microsoft PowerPoint ppt

Microsoft PowerPoint - prog11.ppt

アプレットⅤ

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

Prog1_12th

r3.dvi

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

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

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

Prog2_11th

Microsoft PowerPoint - prog12.ppt

r2.dvi

2

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

問1

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

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

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

Java言語 第1回

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

PowerPoint Presentation

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

Prog1_12th

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

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

2008 e-learning T050050

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

r4.dvi

226

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

PowerPoint Presentation

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

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

(Microsoft Word - java\221n\221\242\203\214\203|\201[\203g.doc)

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 プレゼンテーション

例外(exception)とは何か

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

シミュレーションの簡単な例 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

アプレットⅣ

Programming-C-9.key

( ) p.1 x y y = ( x ) 1 γ γ = filtergamma.java import java.applet.*; public class filtergamma extends Applet{ Image img; Image new_img; publi

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

Taro-korattsu.jtd

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

PowerPoint プレゼンテーション


PowerPoint プレゼンテーション

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

Microsoft PowerPoint - prog10.ppt

Microsoft PowerPoint - prog13.ppt

<4D F736F F F696E74202D AC C8899E D834F E >

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-