< F2D82B682E182F182AF82F12E6A7464>

Similar documents
< F2D82518CC282CC D2E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D834F838C A815B A CC>

< F2D F B834E2E6A7464>

< F2D89BA8EE882C E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D E E6A7464>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D A838B838D96402E6A7464>

< F2D A839382CC906A2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D B825082CC96E291E82E6A7464>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>


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

ガイダンス

ガイダンス

Java言語 第1回

Microsoft PowerPoint prog1_doc2x.pptx

ガイダンス

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

ガイダンス

GUIプログラムⅣ

ガイダンス

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

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

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

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

2

r3.dvi

GUIプログラムⅤ

untitled

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

text_13.dvi

アプレットⅤ

text_12.dvi

Microsoft PowerPoint ppt

Prog1_12th

Thread

Microsoft PowerPoint prog1_doc2.pptx

Taro-korattsu.jtd

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

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

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

Microsoft PowerPoint - prog11.ppt

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

r2.dvi

問1

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

Prog2_11th

Microsoft PowerPoint - prog11.ppt

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

2

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

PowerPoint Presentation

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

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

PowerPoint Presentation

226

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

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

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

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

Prog1_12th

Java言語 第1回

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 プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - OOP.pptx

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

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

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

Microsoft PowerPoint - prog12.ppt

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

Microsoft PowerPoint - prog13.ppt

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

r4.dvi

Microsoft PowerPoint - prog13.ppt


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

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog10.ppt

Java講座

PowerPoint プレゼンテーション

例外(exception)とは何か

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

<4D F736F F F696E74202D AC C8899E D834F E >

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

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Programming-C-9.key

Transcription:

3 人のじゃんけん [Java アプレット ] [Java アプリケーション ] 1. はじめに A 君 B 君 C 君の 3 人でじゃんけんを 1 回するときの勝ち負けを考えてみましょう あいこの場合は A 君 B 君 C 君の順に グー グー グー チョキ チョキ チョキ パー パー パー グー チョキ パー グー パー チョキ チョキ グー パー チョキ パー グー パー グー チョキ パー チョキ グーの 9 通りあります また A 君だけが勝つ場合は A 君 B 君 C 君の順に グー チョキ チョキ チョキ パー パー パー グー グーの 3 通りあります 同様に B 君だけが勝つ場合と C 君だけが勝つ場合もそれぞれ 3 通りずつあります 更に A 君だけが負ける場合は A 君 B 君 C 君の順に グー パー パー チョキ グー グー パー チョキ チョキの 3 通りあります 同様に B 君だけが負ける場合と C 君だけが負ける場合もそれぞれ 3 通りずつあります つまり 3 人でじゃんけんを 1 回すると 27 通りのグー チョキ パーの出し方があり 例えば あいこになる数学的確率は 9/27 約分して 1/3=0.333 になります しかし 実際には 3 人でじゃんけんを 3 回するとき あいこになるのがちょうど 1 回だけ起こるとは限りませんね また 他の場合も同様なことが言えますね では 数学的に求めた理論上の確率の 1/3 との関係はどうなっているんでしょうか シミュレーションソフト 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.*; -66-

import java.lang.math; java.lang パッケージから Math クラスを読み込む public class Gyanken2 extends Applet implements Runnable{ Thread myth; スレッド型で宣言する Button[] mybtn; ボタン型で宣言する Panel mypanel; パネル型で宣言する int imgno; 整数型で宣言する Image[] img; MediaTracker mymt; イメージ型で宣言する メディアトラッカー型で宣言する int flag=0; 整数型で宣言し初期化する int r1=1,r2=2,r3=3; 乱数 int ct1=0; long t; 実験回数 時間かせぎ int d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0; int ct; 度数 じゃんけんの点滅ループカウンター int N=1000; 自動速度 int count1=0; 手動の場合のカウント /****** public void init () の開始 *************************************************************/ public void init(){ setbackground( Color.lightGray ); 背景色をライトグレーにする myth=null; int count; ループカウンター imgno=0; img=new Image[ 3 ]; r1=1;r2=2;r3=3; グーチョキパーの初期化 img[ 0 ] =getimage( getdocumentbase (),"guu.jpg"); グー画像の読み込み img[ 1 ] =getimage( getdocumentbase (),"pii.jpg"); チョキ画像の読み込み img[ 2 ] =getimage( getdocumentbase (),"paa.jpg"); パー画像の読み込み mymt=new MediaTracker( this ); メディアトラッカーの実体化 for ( count=0;count < =2;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 (); パネルの実体化 パネルを1 行 4 列のグリッドレイアウトにする mypanel.setlayout( new GridLayout( 1,4 )); for ( count=0;count < =3;count++ ){ mypanel.add( mybtn[ count ]); パネルにボタンを貼り付ける setlayout( new BorderLayout ()); 全体をボーダーレイアウトにする add ("South",myPanel); パネルを南に貼り付ける -67-

mybtn[ 0 ].addactionlistener( new ActionListener (){ 初期化ボタン flag=0; 識別子 ct1=0; 実験回数 r1=1;r2=2;r3=3; グーチョキパーの初期化 repaint (); paint() メソッドを呼び出す ); mybtn[ 1 ].addactionlistener( new ActionListener (){ 高速ボタン flag=1; 識別子 N=100; スピード ( 0.1 秒 ) repaint (); paint() メソッドを呼び出す ); mybtn[ 2 ].addactionlistener( new ActionListener (){ 低速ボタン flag=2; 識別子 N=1000; スピード (1 秒 ) repaint (); paint() メソッドを呼び出す ); mybtn[ 3 ].addactionlistener( new ActionListener (){ 停止ボタン flag=3; 識別子 repaint (); paint() メソッドを呼び出す ); public void init() /****** public void start () の開始 ************************************************************/ public void start(){ if ( myth==null){ myth=new Thread( this ); スレッドを実体化する public void start() 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 ); 全体のクリア d1=0;d2=0;d3=0;d4=0;d5=0;d6=0;d7=0; 度数の初期化 -68-

g.drawimage( img[ 0 ],65,30+10,this); Aくんのじゃんけん表示 g.drawstring (A " くん ",65+3,75+10); g.drawimage( img[ 1 ],135,30+10,this); Bくんのじゃんけん表示 g.drawstring (B " くん ",135+3,75+10); g.drawimage( img[ 2 ],205,30+10,this); Cくんのじゃんけん表示 g.drawstring (C " くん ",205+3,75+10); g.drawstring (" あいこの回数 = "+d1,40,110); g.drawstring (" Aだけが勝つ回数 = "+d2,40,130); g.drawstring (" Bだけが勝つ回数 = "+d3,40,150); g.drawstring (" Cだけが勝つ回数 = "+d4,40,170); g.drawstring (" Aだけが負ける回数 = "+d5,40,190); g.drawstring (" Bだけが負ける回数 = "+d6,40,210); g.drawstring (" Cだけが負ける回数 = "+d7,40,230); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) K.Niwa 2001.12",80,325 ); 作者表示 if ( flag==0) 高速ボタンまたは低速ボタンを押したとき else if ( flag==1 flag==2){ ct1++; 実験回数 g.clearrect( 0,0,300,350 ); 全体のクリア 度数の表示 g.drawstring (" あいこの回数 = "+d1+" ( "+(( float)( d1 )/( float)( ct1 )) +" ) ",40,110) ; g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float)( d2 )/( float) ( ct1 )) +" )",40,130); g.drawstring (" Bだけが勝つ回数 = "+d3+" ( "+(( float)( d3 )/( float) ( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float)( d4 )/( float) ( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float)( d5 )/ ( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float)( d6 )/ ( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float)( d7 )/ ( float)( ct1 )) +" )",40,230); g.drawstring (" ただし ( ) 内は割合を表す ",40,260); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) K.Niwa 2001.12",80,325 ); 作者表示 判断前のAくん Bくん Cくんのじゃんけんの点滅 g.drawstring (A " くん ",65+3,75+10); g.drawstring (B " くん ",135+3,75+10); g.drawstring (C " くん ",205+3,75+10); for ( ct=1;ct < =2;ct++ ){ g.drawimage( img[ 0 ],65,30+10,this); g.drawimage( img[ 1 ],135,30+10,this); g.drawimage( img[ 2 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ g.drawimage( img[ 1 ],65,30+10,this); g.drawimage( img[ 2 ],135,30+10,this); g.drawimage( img[ 0 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ g.drawimage( img[ 2 ],65,30+10,this); g.drawimage( img[ 0 ],135,30+10,this); -69-

g.drawimage( img[ 1 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ Aくんのじゃんけんの判断 r1= ( int)( 1+3*Math.random ()); 乱数 1~3を整数にする if ( r1==1 ){ グー g.drawimage( img[ 0 ],65,30+10,this); else if ( r1==2 ){ チョキ g.drawimage( img[ 1 ],65,30+10,this); else if ( r1==3 ){ パー g.drawimage( img[ 2 ],65,30+10,this); Bくんのじゃんけんの判断 r2= ( int)( 1+3*Math.random ()); 乱数 1~3を整数にする if ( r2==1 ){ グー g.drawimage( img[ 0 ],135,30+10,this); else if ( r2==2 ){ チョキ g.drawimage( img[ 1 ],135,30+10,this); else if ( r2==3 ){ パー g.drawimage( img[ 2 ],135,30+10,this); Cくんのじゃんけんの判断 r3= ( int)( 1+3*Math.random ()); 乱数 1~3を整数にする if ( r3==1){ g.drawimage( img[ 0 ],205,30+10,this); グー else if ( r3==2){ g.drawimage( img[ 1 ],205,30+10,this); チョキ else if ( r3==3){ g.drawimage( img[ 2 ],205,30+10,this); パー 勝ち負けの判断 あいこ if ( r1==1 && r2==1 && r3==1){ else if ( r1==2 && r2==2 && r3==2){ else if ( r1==3 && r2==3 && r3==3){ else if ( r1==1 && r2==2 && r3==3){ else if ( r1==1 && r2==3 && r3==2){ else if ( r1==2 && r2==3 && r3==1){ else if ( r1==2 && r2==1 && r3==3){ -70-

else if ( r1==3 && r2==1 && r3==2){ else if ( r1==3 && r2==2 && r3==1){ Aだけが勝つ if ( r1==1 && r2==2 && r3==2){ d2++; else if ( r1==2 && r2==3 && r3==3){ d2++; else if ( r1==3 && r2==1 && r3==1){ d2++; Bだけが勝つ if ( r1==2 && r2==1 && r3==2){ d3++; else if ( r1==3 && r2==2 && r3==3){ d3++; else if ( r1==1 && r2==3 && r3==1){ d3++; Cだけが勝つ if ( r1==2 && r2==2 && r3==1){ d4++; else if ( r1==3 && r2==3 && r3==2){ d4++; else if ( r1==1 && r2==1 && r3==3){ d4++; Aだけが負ける if ( r1==1 && r2==3 && r3==3){ d5++; else if ( r1==2 && r2==1 && r3==1){ d5++; else if ( r1==3 && r2==2 && r3==2){ d5++; Bだけが負ける if ( r1==3 && r2==1 && r3==3){ d6++; else if ( r1==1 && r2==2 && r3==1){ d6++; else if ( r1==2 && r2==3 && r3==2){ d6++; -71-

Cだけが負ける if ( r1==3 && r2==3 && r3==1){ d7++; else if ( r1==1 && r2==1 && r3==2){ d7++; else if ( r1==2 && r2==2 && r3==3){ d7++; g.clearrect( 0,90,300,200 ); 枠の消去 度数の表示 g.drawstring (" あいこの回数 = "+d1+" ( "+(( float)( d1 )/( float)( ct1)) +" )",40,110); g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float)( d2 )/( float) g.drawstring (" Bだけが勝つ回数 = "+d3+" ( ( ct1 )) +" )",40,130); "+(( float)( d3 )/( float) ( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float)( d4 )/( float) ( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float)( d5 )/ ( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float)( d6 )/ ( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float)( d7 )/ g.drawstring (" ただし ( ( float)( ct1 )) +" ) 内は割合を表す ",40,260); )",40,230); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 else if ( flag==2) 停止ボタンを押したとき else if ( flag==3){ Aくんのじゃんけんの判断 if ( r1==1){ g.drawimage( img[ 0 ],65,30+10,this); else if ( r1==2){ g.drawimage( img[ 1 ],65,30+10,this); else if ( r1==3){ g.drawimage( img[ 2 ],65,30+10,this); Bくんのじゃんけんの判断 if ( r2==1){ g.drawimage( img[ 0 ],135,30+10,this); else if ( r2==2){ g.drawimage( img[ 1 ],135,30+10,this); else if ( r2==3){ g.drawimage( img[ 2 ],135,30+10,this); Cくんのじゃんけんの判断 if ( r3==1){ g.drawimage( img[ 0 ],205,30+10,this); else if ( r3==2){ g.drawimage( img[ 1 ],205,30+10,this); -72-

else if ( r3==3){ g.drawimage( img[ 2 ],205,30+10,this); g.drawstring (A " くん ",65+3,75+10); g.drawstring (B " くん ",135+3,75+10); g.drawstring (C " くん ",205+3,75+10); 度数の表示 if ( ct1> 0){ g.drawstring (" あいこの回数 = "+d1+" ( "+ (( float )( d1 ) / ( float)( ct1 )) +" )",40,110); g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float) ( d2 )/( float)( ct1 )) +" )",40,130); g.drawstring (" Bだけが勝つ回数 = "+d3+" ( "+(( float) ( d3 )/( float)( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float) ( d4 )/( float)( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float) ( d5 )/( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float) ( d6 )/( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float) ( d7 )/( float)( ct1 )) +" )",40,230); g.drawstring (" ただし ( ) 内は割合を表す ",40,260); else{ g.drawstring (" あいこの回数 = "+d1,40,110); g.drawstring (" Aだけが勝つ回数 = "+d2,40,130); g.drawstring (" Bだけが勝つ回数 = "+d3,40,150); g.drawstring (" Cだけが勝つ回数 = "+d4,40,170); g.drawstring (" Aだけが負ける回数 = "+d5,40,190); g.drawstring (" Bだけが負ける回数 = "+d6,40,210); g.drawstring (" Cだけが負ける回数 = "+d7,40,230); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) if ( flag==3) K.Niwa 2001.12",80,325 ); 作者表示 if ( mymt.checkid( 0)) public void paint( Graphics g) public class Gyanken extends Applet (2) HTML リスト < HTML> < HEAD> <!------------------------------------------------------------------------------------------------------------------------------------- 3 人のじゃんけん Copyright ( C) K.Niwa 2001.12.20 --------------------------------------------------------------------------------------------------------------------------------------> < /HEAD > < BODY > < CENTER< > B > 3 人のじゃんけん < /B> < BR>< BR> < APPLET CODE="Gyanken2.class" WIDTH="300" HEIGHT="350" >< /APPLET> < BR>< BR> < /CENTER> < /BODY> < /HTML> -73-

3.Java アプリケーション プログラムリスト F3 人のじゃんけん Copyright ( C) K.Niwa 2002.08.19 (Javaアプリケーション) / import java.awt.*; import java.awt.event.*; import java.lang.math; public class FGyanken2 extends Frame implements Runnable{ Thread myth; スレッド型で宣言する Button[] mybtn; ボタン型で宣言する Panel mypanel; パネル型で宣言する int imgno; Image[] img; MediaTracker mymt; イメージ型で宣言する メディアトラッカー型で宣言する int flag=0; int r1=1,r2=2,r3=3; int ct1=0; 乱数 実験回数 long t; 時間かせぎ int d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0; int ct; 度数 じゃんけんの点滅ループカウンター int N=1000; int count1=0; 自動速度 手動の場合のカウント /****** フレームとイベントの定義 **********************************************************/ public FGyanken2(){ setsize( 300,360 ); フレームの大きさ addwindowlistener( new WindowAdapter (){ 閉じるボタンのイベント処理 public void windowclosing( WindowEvent e){ System.exit( 0 ); ); myth=null; if ( myth==null){ スレッドの初期化 myth=new Thread( this ); スレッドの実体化 myth.start (); スレッドを開始する int count; ループカウンター imgno=0; img=new Image[ 3 ]; イメージ変数の実体化 r1=1;r2=2;r3=3; グーチョキパーの初期化 img[ 0 ] =Toolkit.getDefaultToolkit ().getimage("guu.jpg"); グー画像の読み込み img[ 1 ] =Toolkit.getDefaultToolkit ().getimage("pii.jpg"); チョキ画像の読み込み img[ 2 ] =Toolkit.getDefaultToolkit ().getimage("paa.jpg"); パー画像の読み込み mymt=new MediaTracker( this ); メディアトラッカーの実体化 for ( count=0;count < =2;count++ ){ mymt.addimage( img[ count ],0); 画像をメテ ィアトラッカーに貼り付ける -74-

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 (){ 初期化ボタン flag=0; ct1=0; 実験回数 r1=1;r2=2;r3=3; グーチョキパーの初期化 repaint (); ); mybtn[ 1 ].addactionlistener( new ActionListener (){ 高速ボタン flag=1; N=100; repaint (); ); mybtn[ 2 ].addactionlistener( new ActionListener (){ 低速ボタン flag=2; N=1000; repaint (); ); mybtn[ 3 ].addactionlistener( new ActionListener (){ 停止ボタン flag=3; repaint (); ); public FGyanken2() /****** public void run () の開始 **************************************************************/ public void run (){ while ( true ){ try { myth.sleep( N ); 休む catch( InterruptedException e){ if ( flag==1 flag==2){ repaint (); -75-

public void run() /****** public void paint( Graphics g ) の開始 ***************************************************/ public void paint( Graphics g){ if ( mymt.checkid( 0)){ 初期状態と初期化ボタンを押したとき if ( flag==0){ g.clearrect( 0,0,300,350 ); 全体のクリア d1=0;d2=0;d3=0;d4=0;d5=0;d6=0;d7=0; 度数の初期化 g.drawimage( img[ 0 ],65,30+10,this); Aくんのじゃんけん表示 g.drawstring (A " くん ",65+3,75+10); g.drawimage( img[ 1 ],135,30+10,this); Bくんのじゃんけん表示 g.drawstring (B " くん ",135+3,75+10); g.drawimage( img[ 2 ],205,30+10,this); Cくんのじゃんけん表示 g.drawstring (C " くん ",205+3,75+10); g.drawstring (" あいこの回数 = "+d1,40,110); g.drawstring (" Aだけが勝つ回数 = "+d2,40,130); g.drawstring (" Bだけが勝つ回数 = "+d3,40,150); g.drawstring (" Cだけが勝つ回数 = "+d4,40,170); g.drawstring (" Aだけが負ける回数 = "+d5,40,190); g.drawstring (" Bだけが負ける回数 = "+d6,40,210); g.drawstring (" Cだけが負ける回数 = "+d7,40,230); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 ); 作者表示 if ( flag==0) 高速ボタンまたは低速ボタンを押したとき else if ( flag==1 flag==2) { ct1++; 実験回数 g.clearrect( 0,0,300,350 ); 全体のクリア 度数の表示 g.drawstring (" あいこの回数 = "+d1+" ( "+(( float)( d1 )/( float)( ct1)) +" )",40,110); g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float)( d2 )/( float) ( ct1 )) +" )",40,130); g.drawstring (" Bだけが勝つ回数 = "+d3+" ( "+(( float)( d3 )/( float) ( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float)( d4 )/( float) ( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float)( d5 )/ ( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float)( d6 )/ ( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float)( d7 )/ ( float)( ct1 )) +" )",40,230); g.drawstring (" ただし ( ) 内は割合を表す ",40,260); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 ); 作者表示 判断前のAくん Bくん Cくんのじゃんけんの点滅 g.drawstring (A " くん ",65+3,75+10); g.drawstring (B " くん ",135+3,75+10); g.drawstring (C " くん ",205+3,75+10); -76-

for ( ct=1;ct < =2;ct++ ){ g.drawimage( img[ 0 ],65,30+10,this); g.drawimage( img[ 1 ],135,30+10,this); g.drawimage( img[ 2 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ g.drawimage( img[ 1 ],65,30+10,this); g.drawimage( img[ 2 ],135,30+10,this); g.drawimage( img[ 0 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ g.drawimage( img[ 2 ],65,30+10,this); g.drawimage( img[ 0 ],135,30+10,this); g.drawimage( img[ 1 ],205,30+10,this); for ( t=1;t < =1000000;t++ ){ Aくんのじゃんけんの判断 r1= ( int)( 1+3*Math.random ()); if ( r1==1){ g.drawimage( img[ 0 ],65,30+10,this); else if ( r1==2){ g.drawimage( img[ 1 ],65,30+10,this); else if ( r1==3){ g.drawimage( img[ 2 ],65,30+10,this); Bくんのじゃんけんの判断 r2= ( int)( 1+3*Math.random ()); if ( r2==1){ g.drawimage( img[ 0 ],135,30+10,this); else if ( r2==2){ g.drawimage( img[ 1 ],135,30+10,this); else if ( r2==3){ g.drawimage( img[ 2 ],135,30+10,this); Cくんのじゃんけんの判断 r3= ( int)( 1+3*Math.random ()); if ( r3==1){ g.drawimage( img[ 0 ],205,30+10,this); else if ( r3==2){ g.drawimage( img[ 1 ],205,30+10,this); else if ( r3==3){ g.drawimage( img[ 2 ],205,30+10,this); 勝ち負けの判断 あいこ if ( r1==1 && r2==1 && r3==1){ else if ( r1==2 && r2==2 && r3==2){ else if ( r1==3 && r2==3 && r3==3){ -77-

else if ( r1==1 && r2==2 && r3==3){ else if ( r1==1 && r2==3 && r3==2){ else if ( r1==2 && r2==3 && r3==1){ else if ( r1==2 && r2==1 && r3==3){ else if ( r1==3 && r2==1 && r3==2){ else if ( r1==3 && r2==2 && r3==1){ Aだけが勝つ if ( r1==1 && r2==2 && r3==2){ d2++; else if ( r1==2 && r2==3 && r3==3){ d2++; else if ( r1==3 && r2==1 && r3==1){ d2++; Bだけが勝つ if ( r1==2 && r2==1 && r3==2){ d3++; else if ( r1==3 && r2==2 && r3==3){ d3++; else if ( r1==1 && r2==3 && r3==1){ d3++; Cだけが勝つ if ( r1==2 && r2==2 && r3==1){ d4++; else if ( r1==3 && r2==3 && r3==2){ d4++; else if ( r1==1 && r2==1 && r3==3){ d4++; Aだけが負ける if ( r1==1 && r2==3 && r3==3){ d5++; else if ( r1==2 && r2==1 && r3==1){ d5++; else if ( r1==3 && r2==2 && r3==2){ d5++; Bだけが負ける if ( r1==3 && r2==1 && r3==3){ d6++; else if ( r1==1 && r2==2 && r3==1){ d6++; -78-

else if ( r1==2 && r2==3 && r3==2){ d6++; Cだけが負ける if ( r1==3 && r2==3 && r3==1){ d7++; else if ( r1==1 && r2==1 && r3==2){ d7++; else if ( r1==2 && r2==2 && r3==3){ d7++; g.clearrect( 0,90,300,200 ); 枠の消去 度数の表示 g.drawstring (" あいこの回数 = "+d1+" ( "+(( float)( d1 )/( float)( ct1)) +" )",40,110); g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float)( d2 )/( float) ( ct1 )) +" )",40,130); g.drawstring (" Bだけが勝つ回数 = "+d3+" ( "+(( float)( d3 )/( float) ( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float)( d4 )/( float) ( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float)( d5 )/ ( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float)( d6 )/ ( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float)( d7 )/ ( float)( ct1 )) +" )",40,230); g.drawstring (" ただし ( ) 内は割合を表す ",40,260); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 else if ( flag==2) 停止ボタンを押したとき else if ( flag==3){ Aくんのじゃんけんの判断 if ( r1==1){ g.drawimage( img[ 0 ],65,30+10,this); else if ( r1==2){ g.drawimage( img[ 1 ],65,30+10,this); else if ( r1==3){ g.drawimage( img[ 2 ],65,30+10,this); Bくんのじゃんけんの判断 if ( r2==1){ g.drawimage( img[ 0 ],135,30+10,this); else if ( r2==2){ g.drawimage( img[ 1 ],135,30+10,this); else if ( r2==3){ g.drawimage( img[ 2 ],135,30+10,this); -79-

if ( flag==3) if ( mymt.checkid( 0)) public void paint( Graphics g) Cくんのじゃんけんの判断 if ( r3==1){ g.drawimage( img[ 0 ],205,30+10,this); else if ( r3==2){ g.drawimage( img[ 1 ],205,30+10,this); else if ( r3==3){ g.drawimage( img[ 2 ],205,30+10,this); g.drawstring (A " くん ",65+3,75+10); g.drawstring (B " くん ",135+3,75+10); g.drawstring (C " くん ",205+3,75+10); 度数の表示 if ( ct1> 0){ g.drawstring (" あいこの回数 = "+d1+" ( "+ (( float )( d1 ) / ( float)( ct1 )) +" )",40,110); g.drawstring (" Aだけが勝つ回数 = "+d2+" ( "+(( float) ( d2 )/( float)( ct1 )) +" )",40,130); g.drawstring (" Bだけが勝つ回数 = "+d3+" ( "+(( float) ( d3 )/( float)( ct1 )) +" )",40,150); g.drawstring (" Cだけが勝つ回数 = "+d4+" ( "+(( float) ( d4 )/( float)( ct1 )) +" )",40,170); g.drawstring (" Aだけが負ける回数 = "+d5+" ( "+(( float) ( d5 )/( float)( ct1 )) +" )",40,190); g.drawstring (" Bだけが負ける回数 = "+d6+" ( "+(( float) ( d6 )/( float)( ct1 )) +" )",40,210); g.drawstring (" Cだけが負ける回数 = "+d7+" ( "+(( float) ( d7 )/( float)( ct1 )) +" )",40,230); g.drawstring (" ただし ( ) 内は割合を表す ",40,260); else{ g.drawstring (" あいこの回数 = "+d1,40,110); g.drawstring (" Aだけが勝つ回数 = "+d2,40,130); g.drawstring (" Bだけが勝つ回数 = "+d3,40,150); g.drawstring (" Cだけが勝つ回数 = "+d4,40,170); g.drawstring (" Aだけが負ける回数 = "+d5,40,190); g.drawstring (" Bだけが負ける回数 = "+d6,40,210); g.drawstring (" Cだけが負ける回数 = "+d7,40,230); g.drawstring (" 実験回数 = "+ct1,110,20); 実験回数の表示 g.drawstring ("Copyright( C) K.Niwa 2002.08",80,325 ); 作者表示 /****** public static void main メソット **********************************************************/ public static void main( String[] args){ Frame w=new FGyanken2 (); w.show (); public static void main( String[] args) public class FGyanken extends Frame implements Runnable -80-