発展プログラミング (5) 例題 5-03( 応用プログラム 3 目並べ その 2) 勝敗判定機能をそなえた 3 目並べ のゲーム盤を作りましょう 必要な変数を考えましょう 1 マス目の状態を保持する配列 整数型 :mas[] 2 何手目かを数える変数 整数型 :nante 3 ゲームが終了したかど

Similar documents
プログラミング教育のための発展的な教材作成の実践と考察

発展プログラミング (22) 例題 Othello_03( 応用プログラム オセロ その 3) オセロゲームの技術課題を一つずつ解決しましょう ステップ 3: はさんだ石を反転させるアルゴリ ズム 考え方はさんだ石を反転するには, 1 隣に相手の石があること 2 その先に, 自分の石があることが前提

Microsoft PowerPoint - prog03.ppt

Javaプログラムの実行手順

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

デジタル表現論・第4回

Prog1_6th

Prog2_9th

JavaプログラミングⅠ

プログラミングA

Prog2_12th

JavaScriptで プログラミング

ガイダンス

Prog1_3rd

Prog2_15th

メソッドのまとめ

Prog2_10th

Prog1_2nd

ガイダンス

ガイダンス

Java講座

Prog1_15th

人工知能入門

C#の基本2 ~プログラムの制御構造~

ガイダンス

Microsoft PowerPoint ppt

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Prog1_13th

PowerPoint Presentation

デジタル表現論・第6回

Prog2_10th

JavaプログラミングⅠ

ポインタ変数

C#の基本

基礎計算機演習 実習課題No6

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

CodeGear Developer Camp

基本情報STEP UP演習Java対策

PowerPoint プレゼンテーション

Prog2_6th

テキストファイルの入出力1

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

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

JavaプログラミングⅠ


Microsoft PowerPoint - prog12.ppt

Microsoft Word - VB.doc

プログラミング入門1

Java言語 第1回

スライド 1

プログラミング入門1

プログラミング基礎I(再)

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

JavaプログラミングⅠ

Microsoft Word - Mac版 Eclipseの導入と設定.docx

Prog2_5th

Prog2_10th

Prog2_4th

Microsoft Word - no11.docx

TestDesign for Web

Prog2_2nd

Prog2_2nd

第1章 ビジュアルプログラミング入門

Prog1_10th

プログラミングA

プログラミング入門1

Microsoft PowerPoint - prog04.ppt

教材ドットコムオリジナル教材 0から始めるiアプリ (4) 0 から始める i アプリ (4) i アプリをプログラミングする際に必要なのは Java というプログラミング言語の基礎知識です 独自の命令や駆使してプログラミングをするわけですが Java というベースになっている言語を知らないでプログ

AI 三目並べ

Prog2_6th

CubePDF ユーザーズマニュアル

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

untitled

P1_お歳暮2015

プログラミング基礎

< B C815B F898AFA90DD92E8837D836A B E786C73>

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Micro Focus Enterprise Developer チュートリアル メインフレーム COBOL 開発 : MQ メッセージ連携 1. 目的 本チュートリアルでは CICS から入力したメッセージを MQ へ連携する方法の習得を目的としています 2. 前提 使用した OS : Red H

Java言語 第1回

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

IPPO - 校内研修支援プログラム - 使用説明書 目次 項 目 ページ 1 プログラム利用の準備 この説明書の記述について プログラムの動作環境等 プログラムファイルのコピー プログラムファイルの起動 4 2 プログラムファイルの利用

プログラミングA

JavaプログラミングⅠ

大阪工業大学 授業アンケートシステム 教員側画面操作説明

クラス図とシーケンス図の整合性確保 マニュアル

Prog2_9th

データ構造とアルゴリズム論

Microsoft PowerPoint - OOP.pptx

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

檀家管理7のインストール

プログラミング入門1

計算機プログラミング

GUIプログラムⅣ

ガイダンス

農業・農村基盤図の大字小字コードXML作成 説明書

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Transcription:

発展プログラミング (5) 例題 5-03( 応用プログラム 3 目並べ その 2) 勝敗判定機能をそなえた 3 目並べ のゲーム盤を作りましょう 必要な変数を考えましょう 1 マス目の状態を保持する配列 整数型 :mas[] 2 何手目かを数える変数 整数型 :nante 3 ゲームが終了したかどうかを示す変数 整数型 :endflg 最低限 この 3 種類は必要です 前回作成した例題 5-02 をもとに 新しくプログラムを作成します その方法 1 パッケージ エクスプローラの Rei5_02 を右クリックし コピー を選択 2 再度 パッケージ エクスプローラの Rei5_02 を右クリックし 貼り付け を選択 1 SagamiharaSogoHighSchool

3 新規名として Rei5_03 と入力 4 パッケージ エクスプローラー内の Rei5_03 を右クリック 次で開く WindowBui lder エディター を選択 ソースコードの追加 1. ソース タブをクリックし 次のインスタンス変数を追加する privateintnant e; // 現在何手目か 9になれば引き分け privateintendfl g; // 勝負がついたかどうか 1= 終了,0= は試合中 privateint[]mas; // 0-9 のマスの状態 (0= 空 1=,2= ) 2. setbutt on メソッドからボタンを参照できるように 次のインスタンス変数を追加する privatejbutton button0; privatejbutton button1; privatejbutton button2; privatejbutton button3; privatejbutton buton4; privatejbutton button5; privatejbutton button6; privatejbutton button7; privatejbutton button8; 2 SagamiharaSogoHighSchool

同時に public Rei5_03 メソッドの中で 9 つのボタンについて JButton button0 = new JButton(""); となっている行の先頭の JButton を削除し 次のようにする button0 = new JButton(""); button0~butto n8まで 9つのボタンのすべてについて 変更する 3. public Rei5_03 メソッドの先頭に次のコードを記述する mas=newint[9]; 4. 0~8 のマス目ボタンに actionperformed メソッドを追加する button 0.addActionListener (newactionlis tener() { publicvoidactionp erformed(actionevent e) { clickmas(0) ; ); ボタン 2なら clickmas (2) とする 9つのボタンすべてに同様に記述 5. スタートボタンに actionperformed メソッドを追加する button 9.addActionListener (newactionlis tener() { publicvoidactionp erformed(actionevent e) { nant e= 0; endfl g= 0; for(inti= 0;i< 9;i++){ mas[i] =0; ); dispmas() ; ボタン 2なら clickmas (2) とする 9つのボタンすべてに同様に記述 3 SagamiharaSogoHighSchool

設定した変数 (nant e,endflg,mas []) を元に プログラムの実行にはどのようなメソッドが必 要か 考えましょう 必要なメソッドの例 ( 同じ機能のプログラムであっても 作成者によって異なるはず ) 1 マス目をクリックしたら配列 mas[ ] の値を書き換え を表示する clickma s *2 配列 mas[ ] の値にしたがって9つのマス目すべてに を表示する dispma s *3 9つのマスのうち 指定した1つのマスに文字を表示する setbutto n 4 配列 mas[ ] をチェックして ゲームが終了したかどうか判定する chken d 5 コンピュータ対戦のとき コンピュータがどこに打つかを考えるメソッド think *2 と 3 は 1 の処理に付随するメソッド 5 は次回作成する マス目をクリックしたら 配列 mas[ ] の値を書き換えて を表示する clickma s privatevoidclickm as(intm){ if(endfl g> 0) { // もうゲームが終了しているなら何もしない return; if(mas[m] == { 0) // 空欄ならmas[ ] に1か2を入れて マス目を表示 mas[m] = (nant e% 2) ; + 1 nant e++; dispmas() ; //9 つのマス目をすべて表示 if(chkend() { // > 終了をチェックし どちらの勝ちか表示する 0) endfl g= 1; if((nant e% 2)>0) { textfiel d.settext (" 先手 ( ) の勝ちです."); else{ textfiel d.settext (" 後手 ( ) の勝ちです."); 4 SagamiharaSogoHighSchool

配列 mas[ ] の値にしたがって9つのマス目すべてに を表示する dispma s privatevoiddispma s(){ for(inti= 0;i<9 ;i++){// の表示 if(mas[i] > { 1) setbutton (i," "); elseif(mas[i]==1) { setbutton (i," "); else{ setbutton (i,""); if(endfl g== { 0) if(nant e> 8) { endfl g= 1; textfiel d.settext( " 引き分けです."); elseif((nant e% 2) == { 1) else{ textfiel d.settext( " 後手 ( ) の番です."); textfiel d.settext( " 先手 ( ) の番です."); 9つのマスのうち 指定した1つのマスに文字を表示する setbutto n privatevoidsetbut ton(intc,string s){ switch(c){ case0:button 0.set Text(s);break; case1:button 1.set Text(s);break; case2:button 2.set Text(s);break; case3:button 3.setText(s);break; case4:button 4.set Text(s);break; case5:button 5.set Text(s);break; case6:button 6.set Text(s);break; case7:button 7.set Text(s);break; case8:button 8.set Text(s);break; 5 SagamiharaSogoHighSchool

ヒント ゲームの終了をチェックする方法 1. どちらかが 勝った ということは 縦 横 斜めの3つの番号のうち どれかが同じ番号になったということ 0. 1. 2. 3. 4. 5. 6. 7. 8. 2. 勝つパターンは 8 種類 0,1,2 3,4,5 6,7,8 0,3,6 1,4,7 2,5,8 0, 4,8 2,4,6 のマス目が 1 か 2 の値にそろうこと 配列 mas[ ] をチェックして ゲームが終了したかどうか判定する chken d privateintchkend(){ int c =0; if((mas[0]== mas[1])&&(mas[1] = mas[2]) &&(mas[0]> 0)){ c= 1; elseif (mas[3] ==mas[4]) &(mas[4]==mas[5])&& (mas[3]> 0)){ c= 2; elseif (mas[6] ==mas[7]) &(mas[7]==mas[8])&& (mas[6]> 0)){ c= 3; elseif (mas[0] ==mas[3]) &(mas[3]==mas[6])&& (mas[0]> 0)){ c=4; elseif (mas[1] ==mas[4]) &(mas[4]==mas[7])&& (mas[1]> 0)){ c= 5; elseif (mas[2] ==mas[5]) &(mas[5]==mas[8])&& (mas[2]> 0)){ c= 6; elseif (mas[0] ==mas[4]) &(mas[4]==mas[8])&& (mas[0]> 0)){ c= 7; elseif (mas[2] ==mas[4]) &(mas[4]==mas[6])&& (mas[2]> 0)){ c= 8; returnc; ゲームが終了している場合は1~8のいずれかを返す 終了していなければ0を返す 6 SagamiharaSogoHighSchool

課題 1 今回作成した Java クラスを 正常に動作することを確認後 提出しなさい 今回提出すべきファイル (1 本 ) (Rei5_03) 2 このプログラムを コンピュータが自動的に手を打ってくるようにするには どこを修正すれ ばよいか考えなさい コンピュータが考えるメソッド think を呼び出すのは プログラムのどこで行うのかを 考える 先手の場合と後手の場合があるので それぞれ thin k メソッドを呼び出す場所が必要に なる 7 SagamiharaSogoHighSchool