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

Similar documents
Public Grid As ReverseGrid Public Position As Point ' 論理位置 Public Rectangle As Rectangle ' 物理位置 Status; 黒 白 なしの状態 Grid; オセロの盤面 Position; 盤面内の説明 Rectan

ルーレットプログラム

ブロック崩し風テニス

バスケットボール

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

グラフィックス

Microsoft Word 練習問題の解答.doc

かべうちテニス

ブロック パニック

コンピュータ概論


ウィンドウ操作 応用

データアダプタ概要

Microsoft Word - VBA基礎(6).docx

プロセス間通信

コンピュータ概論

Microsoft Word - VBA基礎(3).docx

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

ICONファイルフォーマット

untitled

プレポスト【問題】

Microsoft PowerPoint - Visualプログラミング

sinfI2005_VBA.doc

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

NotifyIconコントロール

VB.NET解説

BASICとVisual Basic

ファイル操作

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

Secure iNetSuite for .NET 4.0Jの新仕様について

Msako技術資料 

VFD256 サンプルプログラム

My関数の作成演習問題集

占領双六ゲーム

ListViewコントロール

正規表現応用

B 5 (2) VBA R / B 5 ( ) / 34

Microsoft PowerPoint - vp演習課題

インベーダープログラム

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Microsoft Word - VB.doc


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

Userコントロール


csv csv

PowerPoint プレゼンテーション

C#の基本

untitled

Java KK-MAS チュートリアル

DAOの利用

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

IP RFID RFID IP RFID IP RFID IP RFID IP RFID IP RFID RFID RFID RFID RFID RFID POS IP RFID i

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2

ファイル監視

Excel Excel Excel = Excel ( ) 1

ASP.NET 2.0 Provider Model 概要

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

EXCEL VBA講座

45 VBA Fortran, Pascal, C Windows OS Excel VBA Visual Basic Excel VBA VBA Visual Basic For Application Microsoft Office Office Excel VBA VBA Excel Acc

倉庫番

D0120.PDF

ExcelVBA

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

ドライブは安全運転で in 滋賀♪

3D回転体プログラム

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

PowerPoint プレゼンテーション

Transcription:

21113 Visual Basic を利用したフリーソフト開発 要旨 各自でフリーソフトを作成 インターネット上に公開することを目的とし Visual Basic2008 2010 を使い簡単なアプリの作成に成功した 1. 目的情報化が進んだ現代において 社会に出ていくためにはパソコンの一つや二つ 軽く扱えなければならない さらに 資源の乏しい日本においては今後 情報技術の発展することが望ましいと考える 私たちのグループでは SE( システムエンジニア ) 等の職に就き 今後の日本のみならず情報技術によって世界に貢献できる人材となるべく プログラミング技術の習得を目的とした 2. 使用した器具 装置など (1) 使用言語 Visual Basic (2) 開発ソフト Microsoft Visual Studio 2008 Microsoft Visual Studio 2010 使用マシン FMV K5290 Intel LB-D701S 3. 研究 実験の手順 (1)Visual Basic について インターネットを活用し基礎から学ぶ (2) 学んだことを生かし 以下のソフトを開発 ちんちろりん 4. 結果 (1) ちんちろりんア ちんちろりんについてここでは ちんちろりんというゲームのソフトを作った ( 図.1 参照 ) このゲームではプレイヤーとコンピュータがサイコロを3つずつふり サイコロの目の出方によって決まっている 役 を用いて 高い役を出した方が勝ち 勝った方は賭け金に役による倍率をかけた金額を獲得できるというゲームである 役の一例として 出目 1~6( サイコロ 3 個のうち 2 個が一致した際に残りの 1 個が出した数 )( 例 :1 1 4 の場合 出目 4 3 5 3 の場合出目 5): 賭け金の 1 倍を得る ( 賭け金が戻ってくる ) 13-1

ピンゾロ ( サイコロ 3 個全てが 1 の目になる ): 賭け金の 5 倍を得る ヒフミ ( サイコロ 3 つの目が 1 2 3 になる ): 賭け金の 3 倍を払う がある 他にも役はあるが ここでは省略する 図.1 ちんちろりんプレイ画像 イ プログラムの構造 このプログラムの構造は以下の通りである このゲームはプレイヤーが ちんちろりん ボタンをクリックすることにより Click イベントが開始する この Click イベントでは Chinchirorin メソッドが呼び出される Chinchirorin メソッドを呼び出すと サイコロの目がランダムに変化して 3つのサイコロの目を元に 役 を知ることができる これをプレイヤーとコンピュータが 1 回ずつ行った後 Judge メソッドを呼び出し勝敗を判定する このプログラムでは Chinchirorin メソッドがこのプログラムの中で重要な位置を占めているが 他にもいくつかのメソッドを作ることになる 登場するすべての自作メソッドは以下の通りである メソッド名 Chinchororin Get Yaku Get YakuName Get YakuPoint Judge 機能 さいころの目をランダムに変化させて 出た 役 を返す 3つ目のさいころの目から 役 を判断して返す 役 の名前を取得する 役 の倍数( 得点 ) を取得する 勝敗を判定して かけ金の移動を行う 13-2

ウ プログラムの説明 1サイコロを振るサイコロを振るシーンだが 今回はアニメーションを作成するのではなく三つの画像の目が表示されるだけというシンプルなものにした コードは以下の通り Private Sub Chinchirorin() Dim Rnd As New Random Dim Saikoro1 As Integer = Rnd.Next(1, 7) Dim Saikoro2 As Integer = Rnd.Next(1, 7) Dim Saikoro3 As Integer = Rnd.Next(1, 7) Dim File1 As String = BasePass & " Saikoro" & Saikoro1 & ".bmp" Dim File2 As String = BasePass & " Saikoro" & Saikoro2 & ".bmp" Dim File3 As String = BasePass & " Saikoro" & Saikoro3 & ".bmp" picsai1.image = Image.FromFile(File1) picsai2.image = Image.FromFile(File2) picsai3.image = Image.FromFile(File3) End Sub 1~6のランダムな数を取得するための Random クラスの Next メゾットを利用している ここで利用したものは Visual Basic の構文で簡単なものである 2 役の決定と表示サイコロをふり 出た目に応じて役を判断し表示するようにする 最初に役を定義するため 役の名前を取得する関数 GetYakuName を作る 今回はより分かりやすいコードにするため 列挙体 というものを使った これは関係のある値をまとめる役割があり 定数はそれぞれが互いに関係なく存在しているが 列挙体はそれぞれを意味のあるまとまりとして扱うことができる これにより今回は 役 というまとまりを扱えるようになった コードは以下の通り Private Function GetYakuName(ByVal Yaku As ChinchirorinYaku) As String Select Case Yaku Case ChinchirorinYaku.Deme1 Return " 出目 1" 13-3

Case ChinchirorinYaku.Deme2 Return " 出目 2" Case ChinchirorinYaku.Deme3 Return " 出目 3" Case ChinchirorinYaku.Deme4 Return " 出目 4" Case ChinchirorinYaku.Deme5 Return " 出目 5" Case ChinchirorinYaku.Deme6 Return " 出目 6" Case ChinchirorinYaku.Arashi1 Return " ピンゾロ " Case ChinchirorinYaku.Arashi5 Return " ゴゾロ " Case ChinchirorinYaku.Arashi Return " アラシ " Case ChinchirorinYaku.Sigoro Return " シゴロ " Case ChinchirorinYaku.Hifumi Return " ヒフミ " Case ChinchirorinYaku.Menashi Return " 目なし " End Select End Function 次に3つの目から役を決定する関数 GetYaku を作成した この関数は3つの目を因数にとり役を決定する ちんちろりん にはさまざまな役があるが それらを決定させるにはそのすべての場合を関数として作成する必要がある たとえば 3つの目がすべて1であるピンゾロと呼ばれる役があるが その場合は以下のようなコードとなる Private Function GetYaku(ByVal Number1 As Integer, ByVal Number2 As Integer, ByVal Number3 As Integer) As ChinchirorinYaku 13-4

If Number1 = 1 And Number2 = 1 And Number3 = 1 Then Return ChinchirorinYaku.Arashi1 End Function ゾロ目の役にはこのピンゾロ以外にもある それらをすべてひとつにまとめることができ そのほうがコードも簡潔になるため ゾロ目となるものをすべてまとめてみた コードは以 下の通り Private Function GetYaku(ByVal Number1 As Integer, ByVal Number2 As Integer, ByVal Number3 As Integer) As ChinchirorinYaku Dim Deme As Integer If Number1 = Number2 AndAlso Number1 = Number3 Then If Number1 = 1 Then Return ChinchirorinYaku.Arashi1 ElseIf Number1 = 5 Then Return ChinchirorinYaku.Arashi5 Else Return ChinchirorinYaku.Arashi If Number1 = Number2 Then Deme = Number3 ElseIf Number1 = Number3 Then Deme = Number2 ElseIf Number2 = Number3 Then Deme = Number1 Select Case Deme Case 1 Return ChinchirorinYaku.Deme1 13-5

Case 2 Return ChinchirorinYaku.Deme2 Case 3 Return ChinchirorinYaku.Deme3 Case 4 Return ChinchirorinYaku.Deme4 Case 5 Return ChinchirorinYaku.Deme5 Case 6 Return ChinchirorinYaku.Deme6 End Select If Number1 + Number2 + Number3 = 6 Then Return ChinchirorinYaku.Hifumi If Number1 + Number2 + Number3 = 15 Then Return ChinchirorinYaku.Sigoro Return ChinchirorinYaku.Menashi End Function 次に ちんちろりん ボタンをクリックしてから 出た目に対応させて役を表示させる Click イベントと先ほど作成した Chinchirorin メソッドに少し変更を加える コードは以下の通り 尚 Chinchirorin メソッドの部分は変更された部分に を付けた Click イベント Dim PlayerYaku As ChinchirorinYaku Private Sub btnplay_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnplay.click Chinchirorin() 13-6

If Not IsNumeric(txtBet.Text) OrElse CInt(txtBet.Text) = 0 Then MsgBox(" 賭け金を入力してください ", MsgBoxStyle.Information) Exit Sub lblplayeryaku.text = "" lblcomputeryaku.text = "" lblmessage.text = "" PlayerYaku = Chinchirorin() lblplayeryaku.text = GetYakuName(PlayerYaku) End Sub Chinchirorin メソッド Private Function Chinchirorin() As ChinchirorinYaku Dim Rnd As New Random Dim Saikoro1 As Integer = Rnd.Next(1, 7) Dim Saikoro2 As Integer = Rnd.Next(1, 7) Dim Saikoro3 As Integer = Rnd.Next(1, 7) Dim File1 As String = BasePass & " Saikoro" & Saikoro1 & ".bmp" Dim File2 As String = BasePass & " Saikoro" & Saikoro2 & ".bmp" Dim File3 As String = BasePass & " Saikoro" & Saikoro3 & ".bmp" Dim Yaku As ChinchirorinYaku picsai1.image = Image.FromFile(File1) picsai2.image = Image.FromFile(File2) picsai3.image = Image.FromFile(File3) Yaku = GetYaku(Saikoro1, Saikoro2, Saikoro3) lblyakuname.text = GetYakuName(Yaku) Return Yaku 13-7

End Function 次に コンピュータの番 を作り プレイヤーの役とコンピュータの役のどちらが強いかを判定し 掛け金の移動を行う ゲームはプレイヤーがサイコロを振った後にコンピュータがサイコロを振る この時 コンピュータの番を自動的に行うためにタイマーを使い これがプレイヤーがサイコロを振ったすぐ後に作動させるようにする 先ほど作成した Click イベントに 内のコードを追加する 完成したコードは以下の通り Private Sub btnplay_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnplay.click Chinchirorin() If Not IsNumeric(txtBet.Text) OrElse CInt(txtBet.Text) = 0 Then MsgBox(" 賭け金を入力してください ", MsgBoxStyle.Information) Exit Sub lblplayeryaku.text = "" lblcomputeryaku.text = "" lblmessage.text = "" PlayerYaku = Chinchirorin() lblplayeryaku.text = GetYakuName(PlayerYaku) btnplay.enabled = False Timer1.Enabled = True 次にタイマーを使い Tick イベントが発生するようにする あらかじめプロパティウィンドウでタイマーの Interval プロパティを 1000 に設定した これは 1 秒ごとに Tick イベントが発生するという意味である つまり先ほどのコードの最後 Timer1.Enabled = True から 1 秒後に Tick イベントが発生する Tick イベントのコードは以下の通り Dim ComputerYaku As ChinchirorinYaku 13-8

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Timer1.Enabled = False ComputerYaku = Chinchirorin() lblcomputeryaku.text = GetYakuName(ComputerYaku) Call Judge() btnplay.enabled = True End Sub 最後にプレイヤーとコンピュータの勝ち負けを判断する Judge メソッドを作成する 先程書いたようにちんちろりんではいくつかの役があり それぞれの役に倍率が決まっている その役ごとの倍率を取得する関数を作っておく コードは以下の通り Private Function GetYakuPoint(ByVal Yaku As ChinchirorinYaku) As Integer Select Case Yaku Case ChinchirorinYaku.Hifumi Return 3 Case ChinchirorinYaku.Menashi Return 0 Case ChinchirorinYaku.Deme1 Return 1 Case ChinchirorinYaku.Deme2 Return 1 Case ChinchirorinYaku.Deme3 Return 1 Case ChinchirorinYaku.Deme4 Return 1 Case ChinchirorinYaku.Deme5 Return 1 Case ChinchirorinYaku.Deme6 13-9

Return 1 Case ChinchirorinYaku.Arashi1 Return 5 Case ChinchirorinYaku.Arashi5 Return 5 Case ChinchirorinYaku.Arashi Return 2 Case ChinchirorinYaku.Sigoro Return 3 End Select End Function ここでは役とその倍率の関係を記しただけなので 不十分である Judge メソッドのコードは以下の通り Private Sub Judge() Dim PlayerMoney As Integer = CInt(lblplayerMoney.Text) Dim ComputerMoney As Integer = CInt(lblComputerMoney.Text) Dim Bet As Integer = CInt(txtBet.Text) Dim Point As Integer If PlayerYaku > ComputerYaku Then If ComputerYaku < 0 Then Point = GetYakuPoint(ComputerYaku) Else Point = GetYakuPoint(PlayerYaku) PlayerMoney += Bet * Point ComputerMoney -= Bet * Point lblmessage.text = Bet * Point & " 円の勝ちです " lblplayeryaku.forecolor = Color.Red lblcomputeryaku.forecolor = Color.Black 13-10

ElseIf PlayerYaku < ComputerYaku Then If PlayerYaku < 0 Then Point = GetYakuPoint(PlayerYaku) Else Point = GetYakuPoint(ComputerYaku) PlayerMoney -= Bet * Point ComputerMoney += Bet * Point lblmessage.text = Bet * Point & " 円の負けです " lblplayeryaku.forecolor = Color.Black lblcomputeryaku.forecolor = Color.Red Else lblmessage.text = " ワカレ ( 引き分け ) です " lblplayeryaku.forecolor = Color.Black lblcomputeryaku.forecolor = Color.Black lblplayermoney.text = PlayerMoney lblcomputermoney.text = ComputerMoney End Sub 以上で完成となる 5. 結果に対する考察 分かったことサイコロを振るだけでも Random クラスの Next メソッドを利用するなど 様々な構文が使われており 今回は画像を表示するだけであったが アニメーションにするともっと難しい構文を使うことになる このようないくつもの構文を駆使して アプリを起動させることができると学ぶことができた その中でも 列挙体 は 定数はそれぞれ互いに関係なく存在しているが それぞれを意味のあるまとまりとして扱うことができるようになり 今回の例でいくと 役 というまとまりを扱える 13-11

ようにまった これからの課題としては 今回完成したちんちろりんはいつまでたってもゲームオー バーにならない これを終わらせるプログラムを組むことや このシステムを応用してポーカーゲー ムも作ることができるので アイデアを盛り込んで改善していきたい 6. 参考文献 Visual Basic 中学校 http://homepage1.nifty.com/rucio/main/main.html Microsoft visual Studio http://www.microsoft.com/japan/msdn/vstudio/express 13-12