神経衰弱ゲーム

Similar documents
神経衰弱ゲーム

万年暦プログラム

ルーレットプログラム

ブロック崩し風テニス

ブロック パニック

占領双六ゲーム

インベーダープログラム

3D回転体プログラム

グラフィックス

回文作成支援プログラム

パラパラ漫画

回文作成支援プログラム

相性占いプログラム

万年暦プログラム

VB.NET解説

回文作成支援プログラム

アプリケーション

プロセス間通信

ICONファイルフォーマット

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

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

sinfI2005_VBA.doc

VB実用⑦ エクセル操作Ⅰ

相性占いプログラム

回文作成支援プログラム

画像閲覧プログラム

Prog2_12th

占領双六ゲーム

NotifyIconコントロール

構造体

ListViewコントロール

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

Userコントロール

データアダプタ概要

パラパラ漫画

スロットプログラム

ファイル操作

Microsoft Word - VB_10.doc

ファイル操作-インターネットキャッシュ

回文作成支援プログラム

バスケットボール

チャットプログラム

草競馬プログラム

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

正規表現応用

データベース1

データベース1

倉庫番

かべうちテニス

ファイル監視

3D回転体プログラム

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

Microsoft Word _VBAProg1.docx

何時何処で誰が

モグラ叩きプログラム

MS-ExcelVBA 基礎 (Visual Basic for Application)

万年暦プログラム

ドッグファイト

データベースⅠ

ウィンドウ操作 応用

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

わにわにパニックプログラム

万年暦プログラム

Java講座

画像閲覧プログラム

Microsoft Word 練習問題の解答.doc

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

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

回文作成支援プログラム

ハッシュテーブル

PowerPoint プレゼンテーション

VB実用⑬ 印刷Ⅲ(PrintFormメソッド)

3D回転体プログラム

Javaプログラムの実行手順

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

VB実用⑩ エクセル操作Ⅳ

ExcelVBA

DAOの利用

ファイル操作-バイナリファイル

プラグイン

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

JavaプログラミングⅠ

GUIプログラムⅣ

データベース1

チア ダンス

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

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

プレポスト【問題】

データベースⅡ

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング スプライト スプライト Pygame では pygame.sprite を用いる事でスプライトの管理 描画 衝突判定等を簡単に行う事が出来る 此れを利用してキャラクター操作に関する各種機能をスプライトクラスとして 1 個

スライド 1

はるよちゃんっ!

Microsoft Word - VB.doc

構造体

PowerPoint プレゼンテーション

通信対戦プログラム

PowerPoint プレゼンテーション

プログラミング実習I

プロシード

Transcription:

神経衰弱ゲーム VB 2005 10 プログラムの概要 プログラムを起動すると 1 組のカードが裏向きに表示される 開始ボタンをクリックすると 其の場所に 先手と後手の得点が表示され タイトル部分に手番が表示されてゲームを開始する事が出来る 任意のカードを左クリックして開き 同じ数字のカードを 2 枚開くと 其のカードは盤上から取り除かれ カードを開いた者の得点と成る 開いた 2 枚のカードが揃わ無い時は 右クリックして カードを閉じる 2 枚のカードが揃えば 続けてカードを開く事が出来 揃わ無ければ 順番が相手に移る 最終的に 14 組以上を獲得した者が勝者と成る 今回の課題項目 単純 配列変数の宣言 (Private Dim) 標準コントロールの利用 (PictureBox Button Label) コントロール配列の利用 ( コードでインスタンスを生成して配列に格納 ) プロパティの値の取得と設定 (Size Location Image Tag Button Visible 等 ) イベントの利用 (Load Click MouseUp) メソッドの利用 (DrawImage Refresh Add FromImage) ステートメントの利用 (AddHandler With End With Call Exit Sub) 組込関数 ( 乱数 ) の利用 (Randomize Rnd DirectCast StrConv Right) 制御構造構文 ( 条件分岐 If ~ Then Select Case End Select ループ処理 For ~ Next) 演算子 ( 代入演算子 比較演算子 結合演算子 論理演算子 ) サブプロシージャーの作成と呼出 (Call: 引数有りと無し ) 今回の重点項目 実行時のオブジェクト生成 (New Controls.Add AddHandler) 商と剰余の利用 (Mod 演算子 演算子 ) 画像の指定範囲転送 (DrawImage) 今回の応用項目 同一のカードを続けてクリックすると 揃った事に成る不具合を修正する -1-

オブジェクト プロパティ一覧 ピクチャーボックス 1 ラベル 1 ラベル 2 コマンドボタン ピクチャーボックス 2 コントロールの種類 プロパティ プロパティの設定値 フォーム Name breakdown BackColor Green FormBorderStyle FixedSingle MaximizeBox False Text 神経衰弱 ピクチャーボックス1 Name picback Image back1.gif( 他の画像を使用しても良い ) Size 71 96 Visible False ピクチャーボックス2 Name picbase Image cards.gif Size 923, 384 Visible False ラベル1 Name lblfirst AutoSize False Font MS 明朝, 太字,14 ForeColor Yellow Text 先手 : 0 組 TextAlign MiddleCenter ラベル2 Name lblsecond AutoSize False Font MS 明朝, 太字,14 ForeColor Yellow Text 後手 : 0 組 TextAlign MiddleCenter ボタン Name btnstart Font MS 明朝, 太字,14 ForeColor Yellow Text 開始 -2-

Public Class breakdown プログラムリスト ' フォームレベルでグローバルな変数の宣言 Private Card(51) As Integer ' カードの種類 Private Score(1) As Byte ' 得点 (0: 先手 1: 後手 ) Private Turn As Byte ' 手番 (0: 先手 1: 後手 ) Private Number As Byte ' 枚目 (0:1 枚目 1:2 枚目 ) Private Shows(1) As Byte ' 表札 (0:1 枚目 1:2 枚目 ) Private piccard(51) As PictureBox Private Bback As Bitmap ' 裏面画像 Private Bbase As Bitmap ' 表面画像 ' 表示用カード ' フォームが読み込まれた時の処理 Private Sub breakdown_load( ByVal sender As Object, ByVal e As System.EventArgs ) _ Handles Me.Load Size プロパティは Width プロパティと Height プロパティに分け Dim I As Integer て設定する事も出来る ' フォームのサイズ設定 Me.Size = New Size( 679, 640 ) ' フォームを中央に配置 Me.Left = ( SystemInformation.WorkingArea.Width - Me.Width ) / 2 Me.Top = ( SystemInformation.WorkingArea.Height - Me.Height ) / 2 ' 転送元画像の Bitmap オブジェクトの生成 Bback = New Bitmap( picback.image ) Bbase = New Bitmap( picbase.image ) ' カード用のピクチャボックスの配置 For I = 0 To 51 piccard( I ) = New PictureBox( ) With piccard( I ).Size = New Size( 71, 96 ).Location = New Point( (I Mod 9) * 72 + 16, (I 9) * 97 + 16 ).Tag = I End With Me.Controls.Add( piccard( I ) ) AddHandler piccard( I ).MouseUp, AddressOf piccard_mouseup Next ' コントロールの配置 btnstart.setbounds( 520, 501, 144, 96 ) lblfirst.location = New Point( 520, 520 ) lblsecond.location = New Point( 520, 550 ) ' 乱数系列とゲームの初期化 Randomize( ): Call GameInit( ) ピクチャボックスをコントロール配列と仕て扱う為の変数の宣言 SystemInformation クラスのメンバで有る WorkingArea プロパティでスクリーンサイズを取得 ピクチャボックスの Image プロパティから Bitmap オブジェクトを生成して居る PictureBox 型の配列にピクチャボックスのインスタンスを生成して コントロール配列化して居る フォームのコレクションに生成したコントロールを追加して居る 生成したコントロールのイベントハンドラを追加して居る Location プロパティは Top プロパティと Left プロパティに分けて設定する事も出来る 引数無しのサブプロシージャの呼 出 ( サブルーチンコール ) ' ボタン ( 開始 ) がクリックされた時の処理 Private Sub btnstart_click( ByVal sender As Object, ByVal e As System.EventArgs ) _ Handles btnstart.click ' スコアの初期化 Call ScoreDisp( 0, 0 ): Call ScoreDisp( 1, 0 ) ' 手番の表示 Me.Text = " 神経衰弱 - 先手の番です " ' 開始ボタンの非表示 btnstart.visible = False Call は Sub プロシージャ等に制御を渡すステートメントで有る 必要が有れば 引数を指定する事で 変数 配列 式等をプロシージャに引き渡す事が出来る -3-

' ピクチャボックス ( カード ) がクリックされた時の処理 Private Sub piccard_mouseup( ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs ) Dim P As PictureBox = DirectCast( sender, PictureBox ) Dim N As Integer = P.Tag If btnstart.visible = True Then Exit Sub Select Case e.button Case Windows.Forms.MouseButtons.Left If Card( N ) < 0 Then Exit Sub If Number < 2 Then Call CardDisp( N, Card( N ) ) Shows( Number ) = N : Number += 1 End If If Number = 2 Then If (Card( Shows(0) ) Mod 13) = (Card( Shows(1) ) Mod 13) Then piccard( Shows(0) ).Visible = False piccard( Shows(1) ).Visible = False Card( Shows(0) ) = -1 : Card( Shows(1) ) = -1 Score( Turn ) += 1 If Score(0) + Score(1) = 26 Then Select Case Score(0) Case Is > 13 Me.Text = " 神経衰弱 - 先手の勝ちです " Case Is < 13 Me.Text = " 神経衰弱 - 後手の勝ちです " Case Else Me.Text = " 神経衰弱 - 引き分けです " End Select Call GameInit( ) btnstart.visible = True Else Call ScoreDisp( Turn, Score( Turn ) ) Number = 0 End If End If End If Case Windows.Forms.MouseButtons.Right If Number = 0 Then Exit Sub Call BackDisp( Shows(0) ) If Number = 2 Then Call BackDisp( Shows(1) ) Number = 0 : Turn = Turn Xor 1 Select Case Turn Case 0 : Me.Text = " 神経衰弱 - 先手の番です " Case 1 : Me.Text = " 神経衰弱 - 後手の番です " End Select End Select ' 得点を表示するジェネラルプロシージャ Private Sub ScoreDisp( ByVal T As Byte, ByVal S As Byte ) Dim Z As String Z = ":" & StrConv(Microsoft.VisualBasic.Right(" " + CStr(S), 2), VbStrConv.Wide) & " 組 " If T = 0 Then Z = " 先手 " & Z : lblfirst.text = Z Else Z = " 後手 " & Z : lblsecond.text = Z End If -4- マウスの左右のボタンの押下状態は Click イベントでは感知出来ない為 MouseUp イベントを使用 従来のコントロール配列の識別に使用された Index は イベントを発生させたコントロールの Tag プロパティ等で代用する Mod 演算子は 剰余 ( 余り ) を求める演算子で有る Select Case 文では Is キーワー ドを比較演算子と共に用いて 値 の範囲を指定する事が出来る 孰れの Case にも該当しない場合 は Case Else 節が実行される Exit Sub ステートメントは 以降 のコードを実行せずに直ちに ( 強 制的に )Sub プロシージャを抜け る命令で有る 変数の取り得る値が 0 か 1 で 0 なら 1 に 1 なら 0 に変更するに は 論理演算子 Xor( 排他的論理 和 ) を用いる事が出来る 評価する変数が同一の場合には Select Case 文を使用するとコー ドが簡潔に成る 数値の部分を揃える為に 先頭にスペースを付けてから 右から 2 文字を切り取り 常に数値が 2 桁に成る様に仕て居る

' ゲームを初期化するジェネラルプロシージャ Private Sub GameInit( ) Dim I As Integer Dim K As Integer Dim S As Integer Dim D As Integer ' カードの初期化 For I = 0 To 51 : Card( I ) = I : Next I ' カードのシャッフル For I = 1 To 300 S = Int( Rnd( ) * 52 ) D = Int( Rnd( ) * 52 ) K = Card( D ) Card( D ) = Card( S ) Card( S ) = K Next ' 裏面カードの表示 For I = 0 To 51 : Call BackDisp( I ) : Next I ' 開始ボタンの表示 btnstart.visible = True ' スコアの初期化 Score( 0 ) = 0 : Score( 1 ) = 0 ' 手番と表札枚数の初期化 Turn = 0: Number = 0 此処で宣言した変数は宣言したサブプロシージャ内でしか値の参照と設定を行う事が出来ない 此のループ処理ではカウンター I の値を 0 から 51 に 1 宛変化させて Next 迄の処理 ( 配列に要素番号と同じ値の代入 ) を繰り返す 此れはカードシャッフルの定型と謂う可き方法で有る 此のループ処理ではカウンター I の値を 0 から 51 に 1 宛変化させて Next 迄の処理 ( サブルーチンコール ) を繰り返す 1 行に複数の文を記述する事をマルチステートメントと謂う ' カード ( 表面 ) を表示するジェネラルプロシージャ Private Sub CardDisp( ByVal N As Integer, ByVal S As Integer ) Dim X As Integer Dim Y As Integer 此処で宣言した変数は宣言したサ Dim G As Graphics ブプロシージャ内でしか値の参照 Dim R As Rectangle と設定を行う事が出来ない X = ( S Mod 13 ) * 71 Y = ( S 13 ) * 96 R = New Rectangle( X, Y, 71, 96 ) With piccard( N ).Image = New Bitmap(.Width,.Height ) G = Graphics.FromImage(.Image ) G.DrawImage( Bbase, 0, 0, R, GraphicsUnit.Pixel ).Refresh( ) End With ' カード ( 裏面 ) を表示するジェネラルプロシージャ Private Sub BackDisp( ByVal N As Integer ) Dim G As Graphics DrawImage メソッドに依り 1 枚の画像から必要な部分丈を切り 出して居る 描画の後 再描画の為の Refresh メソッドを実行しないと 描画は 反映されない With piccard( N ).Visible = True.Image = New Bitmap(.Width,.Height ) G = Graphics.FromImage(.Image ) G.DrawImage( Bback, 0, 0 ).Refresh( ) End With End Class 同じオブジェクトに対して複数の処理を実施する必要が有る場合 With ステートメントを用いると コードが簡潔に成る -5-

実行時にコントロールの生成 Add メソッド コントロールコレクションにコントロールを追加するメソッド Object.Controls.Add( コントロール ) コントロールコレクションにコントロールを追加し コンテナ化 ( 内包 ) する AddHandler ステートメント イベントをイベントハンドラに関連付けるステートメント AddHandler オブジェクト名. イベント名, AddressOf イベントプロシージャ名 オブジェクト名で指定したオブジェクトにイベント名で指定したイベントが発生した時 イベントプロシージャ名で指定したイベントプロシージャに分岐する様にする 実行時にコントロールを生成する手順 実行時にイベントを発生するコントロールを生成し フォーム等に配置する手順は 下記の通りで有る 1. 生成するコントロールに合わせたデータ型を持つ変数を宣言する 例 :Dim P As PictureBox 2. コントロールのインスタンスを生成し 変数に代入する 例 :P = New PictureBox( ) 3. 必要に応じて 生成したコントロールのプロパティを設定する 例 :P.Size = New Size(100, 50) P.Location = New Point(30, 30) P.Image = Image.FromFile( sample.gif ) 4. 生成したコントロールを Add メソッドを使用してコンテナの Controls コレクションに追加する 例 :Me.Controls.Add(P) 5. 生成したコントロールをイベントプロシージャに関連付ける 例 :AddHandler P.Click, AddressOf PictureBox_Click 上記の 1 と 2 は Dim P = New PictureBox( ) の様に 一つに纏めて記述する事も出来る 上記の 3 では 少なく共 Size プロパティと Location プロパティを設定して置く必要が有る 上記の 4 では フォーム丈で無く グループボックスやパネル等を指定する事が出来る 上記の 5 では 予めイベントプロシージャをジェネラルプロシージャと仕て作成して置くと AddressOf と入力すると インテリセンスに表示されるので 便利で有る -6-

DirectCast キーワードに依る型変換 型変換を指示するキーワード DirectCast( 式, 型 ) Ctype と同様に型変換を行い 指定した型と式のランタイム型が同じ場合 実行時のパフォーマンスは CType より優れて居る 引数の式には 変換の対象と成る式を指定し 省略する事は出来ない 引数の型には 変換後の型を指定し 省略する事は出来ない 演算子に依る整数除算 2 つの数値の商を計算し 結果を整数で返す演算子 数式 1 数式 2 数式 1 を数式 2 で除算し 小数部を切り捨てゝ 其の商を返す Option Strict が Off の場合 除算を実行する前に 浮動小数点数式はバイト型 短整数型 整数型 又は 長整数型の式に丸められる On の場合は コンパイルエラーが発生する Mod 演算子に依る剰余 2 つの数値の除算を行い 其の剰余を返す演算子 数式 1 Mod 数式 2 数式 1 を数式 2 で除算し 其の剰余 ( 余り ) を返す Mod 演算子は 引数 1 を引数 2 で除算し 其の剰余を返す 例えば A = 8 Mod 3 では 変数 A の値は 2 に成る 引数 1 か引数 2 が浮動小数点数値の場合は 除算が実行され 浮動小数点数の剰余が返される 演算結果のデータ型は 有効な値の範囲が最も広いデータ型と同じに成る 有効な値の範囲は Byte 型 Short 型 Integer 型 Long 型 Single 型 Double 型 Decimal 型の順に広く成る Xor 演算子に依る排他的論理和 2 つの数値の排他的論理和を返す演算子 数式 1 Xor 数式 2 数式 1 と数式 2 の排他的論理和 ( 互いが異なる時だけ真に成る ) を返す Xor 演算子は 論理演算子 及び ビット演算子と仕てする -7-

Graphics オブジェクトの FromImage メソッド Image オブジェクトから新しい Graphics オブジェクトを作成するメソッド Object.FromImage( イメージ ) 指定した Image オブジェクトの新しい Graphics を返す 描画 ( イメージング ベクタグラフィックス タイポグラフィ ) を行う為に必要な Graphics オブジェクトを Image オブジェクトから生成する場合に使用する Image オブジェクトには ピクチャボックスの Image プロパティも指定する事が出来るが Bitmap クラスの新しいインスタンスで初期化して置く必要が有る ピクチャボックスに描画を行う為の手順は 下記の通りで有る 1.Graphics オブジェクトを格納する為の変数を宣言する例 :Dim G As Graphics 2. ピクチャボックスの Image プロパティを Bitmap クラスの新しいインスタンスで初期化する 例 :PictureBox1.Image = New Bitmap(.Width,.Height) 3. ピクチャボックスの Image プロパティから Graphics オブジェクトを作成する 例 :G = Graphics.FromImage(PictureBox1.Image) 上記で ピクチャボックスに Graphics オブジェクトのメソッドを使用して 描画を行う事が出来る様に成る Graphics オブジェクトの DrawImage メソッド 指定した位置に元のサイズで指定したイメージの指定した部分を描画するメソッド Object.DrawImage( イメージ, X 座標, Y 座標, 矩形, 単位 ) 指定した位置に元のサイズで 指定した Image オブジェクトの指定した部分を描画する 引数のイメージには 描画元と成る Image オブジェクトを指定し 必ず指定する 引数の X 座標には 描画イメージの左上隅の X 座標を指定し 必ず指定する 引数の Y 座標には 描画イメージの左上隅の Y 座標を指定し 必ず指定する 引数の矩形には 描画元と成る Image オブジェクトの範囲を指定し 必ず指定する 引数の単位には 引数に使用する単位 ( ピクセル等 ) を指定し 必ず指定する 猶 矩形は Rectangle 構造体で指定し 単位は GraphicsUnit 列挙体のメンバで指定する DrawImage メソッドで元画像の指定部分をピクチャボックスに描画する手順を 下記に示す 1. ピクチャボックスの Graphics オブジェクトを作成する 例 :Dim G As Graphics PictureBox1.Image = New Bitmap(.Width,.Height) G = Graphics.FromImage(PictureBox1.Image) 2. 元画像の Bitmap オブジェクトをピクチャボックスより作成する Dim B As Bitmap = New Bitmap(PictureBox2.Image) 3. 矩形を表す Rectangle 構造体を定義する Dim R As Rectangle = New Rectangle(10, 10, 50, 50) 4. 指定した位置に元のサイズで指定したイメージの指定した部分を描画する G.DrawImage(B, 0, 0, R, GraphicsUnit.Pixel) -8-

Refresh メソッドの依るコントロールの再描画 コントロールを再描画するメソッド Object.Refresh( ) 強制的に コントロールがクライアント領域を無効化し 直後に其のコントロール自体と其の子コントロールを再描画する Graphics オブジェクトの描画メソッド (DrawImage DrawLine 等 ) を用いてピクチャボックスに描画しても 其の儘では 何も表示されない Refresh メソッドを用いて 再描画する必要が有る With ステートメントの依る一連のステートメントの実行 一連のステートメントを実行するステートメント With オブジェクト. プロパティ = 値. メソッド ( ) End With オブジェクトや構造体への参照を繰り返し指定する一連のステートメントを実行する With... End With ステートメントを使用すると 特定のオブジェクトの名前を再定義する事無く 其のオブジェクトに対して一連のステートメントを実行する事が出来る 例えば 単一のオブジェクトに対して複数の異なるプロパティを変更する場合 With... End With ステートメント内にプロパティを割り当てるステートメントを指定する With... End With ステートメントを使用する場合 オブジェクトへの参照はプロパティを割り当てる度に指定するのではなく 一度丈指定する With... End With ステートメントを使用して同じオブジェクトの複数のプロパティに値を割り当てるコード例は 下記の通りで有る With Label1.Height = 50.Width = 100.Text = "This is Label1" End With With... End With ステートメントに入ると End With ステートメントを実行する迄 object を割り当て直す事は出来ない 此の為 修飾せずにアクセス可能なのは 指定したオブジェクトのメソッドやプロパティ丈で有る 他のオブジェクトのメソッドやプロパティを使用するには オブジェクト名で修飾する必要が有る With... End With ブロックの中に別の With... End With ステートメントを配置すると With... End With ステートメントを入れ子構造に出来る 但し 外側の With... End With ステートメントのメンバは内側の With... End With ステートメントに対してはマスクされて居るので 内側の With... End With ステートメントのオブジェクト参照を外側の With... End With ステートメントに含まれて居るオブジェクトのメンバに渡す時は 完全に修飾する必要が有る -9-

.NET Framework 対応 明示的な型変換 従来の記述法 Dim N As Integer = P.Tag.NET Framework の記述法 Dim N As Integer = Integer.Parse(P.Tag) Tag プロパティは Object 型で有るが Visual Basic では Integer 型の値が設定されて居れば 暗黙的に Integer 型に変換される 併し.NET Framework では 明示的に型変換を行う事が望ましい 乱数の発生 従来の記述法.NET Framework の記述法 Dim R As Random = New Random().NET Framework では 乱数を発生させるには Rnd 関数ではなく Random オブジェクトを使用する ( 此処では ゲームを初期化する GameInit メソッドのローカル変数に仕て居る ) 猶 クラスをインスタンス化する時に 乱数系列の初期化が行われるので Randomize 関数の実行は 不要と成る 従来の記述法 S = Int(Rnd() * 52) D = Int(Rnd() * 52).NET Framework の記述法 S = R.Next(0, 52) D = R.Next(0, 52) 上記では 0 以上 52 未満の整数値 (Integer 型 ) が返される 猶 Rnd 関数の様に 0.0 以上 1.0 未満の実数値 (Double 型 ) を返す NextDouble メソッドも提供されて居る 数値の文字列化 従来の記述法 Z = ":" & StrConv(Microsoft.VisualBasic.Right(" " + CStr(S), 2), VbStrConv.Wide) & " 組 ".NET Framework の記述法 Z = ":" & StrConv(S.ToString().PadLeft(2, " "c), VbStrConv.Wide) & " 組 ".NET Framework では 数値の文字列化には CStr 関数ではなく 各クラスの ToString メソッドを使用する 亦 文字列を 指定の長さ ( 文字数 ) に整形する PadLeft メソッドや PadRight メソッドも提供されて居る 猶.NET Framework では StrConv 関数の様に 半角文字を全角文字に変換したり 全角文字を半角文字に変換する手段は提供されて居ない ( 此の様な事を行う必要が有る場合には 従来の関数や API 関数を使用するか 又は 自作のコードで対処する必要が有る ) -10-