すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11686  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

こんなコンソールアプリを作ってみた。VisualStudio2005ね。

image

image 

まー、何のことはない、びっくり箱っぽいものなのだけれど。VB4脳がこれをどう作ったかというとだ、

Module Module1

    '箱本体クラス
    Private Class SurpriseBox
        '箱の中身列挙
        Private Enum InnerObj
            None = 0
            Pegion = 1
            Cock = 2
            Duck = 3
        End Enum
        '箱の中身用メンバ変数
        Private _innerAnimal As InnerObj
        Private _innerVoices() As String = {"しーん", "ででっぽー", "くわーーかっかっか", "あふ○ーーくっ"}
        Private _innerAnswer() As String = {"からっぽ", "はと", "おんどり", "あふだっく"}

        '何が入っていたかプロパティ
        Public ReadOnly Property InnerAnswer() As String
            Get
                Return _innerAnswer(_innerAnimal)
            End Get
        End Property

        '箱に何かをいれる操作
        Public Sub SetSomething()

            _innerAnimal = CType(CInt((Rnd() * 100) Mod _
                                    [Enum].GetNames(GetType(InnerObj)).Length), SurpriseBox.InnerObj)
            Console.WriteLine("ハコになんかはいったよ")

        End Sub

        '箱に触ったよイベント宣言
        Private Event SomethingHappen()

        '箱に触ったよイベントで動く処理
        Private Sub OnSomethingHappen() Handles Me.SomethingHappen

            Console.WriteLine(_innerVoices(_innerAnimal))

        End Sub

        '箱に触わる操作
        Public Sub TouchBox()
            Console.WriteLine("さわったね!!")
            RaiseEvent SomethingHappen()
        End Sub

    End Class

    '回数先生
    Private Class BoxTeacher

        '結局先生が何回触れるようにしてくれたのかを知らせるプロパティ
        Public ReadOnly Property Count() As Integer
            Get
                Return _myCount
            End Get
        End Property

        'メンバ変数
        Private _limitCount As Integer
        Private _myCount As Integer

        '引数なしコンストラクタは最大10回としとく
        Public Sub New()
            _limitCount = 10
        End Sub

        '引数つきコンストラクタは最大回数指定
        Public Sub New(ByVal pLimit As Integer)
            _limitCount = pLimit
        End Sub

        '教えて!先生!
        Public Sub TeachPlease()
            TeacherTaking()
        End Sub

        '「教えて!」すると先生登場。さぁ俺の話を聞け!
        Private Sub TeacherTaking()
            Dim setCount As Integer = 0

            '一応、再登場の時と挨拶が変わるらしい
            If _myCount > 0 Then
                Console.WriteLine(String.Format(" またあえたね!回数先生だ!こんども{0}回までOKだっ!", _limitCount))
            Else
                Console.WriteLine(String.Format(" やぁ!回数先生だ!さわりたい回数をいれようね!{0}回までOKだっ!", _limitCount))
            End If

            '入力まち
            Dim setCountStr As String = Console.ReadLine

            'ちゃんと数字がきたかどうかチェック
            'TryParse を知った時は衝撃だった
            If Integer.TryParse(setCountStr, setCount) = False Then
                Console.WriteLine(" 数字入れなきゃ動かないよ")
                Console.WriteLine(" 先生はざんねんだっ!")
                _myCount = 0
                Exit Sub
            End If

            '回数が範囲内なのかチェック
            'OrElse を知った時は衝撃だった
            If setCount < 1 OrElse setCount > _limitCount Then
                Console.WriteLine(String.Format(" 回数は、1回から{0}回。お約束しようね!", _limitCount))
                Console.WriteLine(" 先生はざんねんだっ!")
                _myCount = 0
                Exit Sub
            End If

            'メンバ変数に保存しておく。プロパティに直接触らせない。
            'こういうやり方が隠蔽ってことらしい
            _myCount = setCount

            'さよなら回数先生
            Console.WriteLine(" よぅし!よくやった!じゃ、先生は帰るよ!またなっ!")
        End Sub

    End Class

    'メイン処理
    Sub Main()

        '変数初期化
        Dim wRepeter As String = "Y"
        Dim setCount As Integer = 0
        Dim touchCount As Integer = 0
        Dim setObj As Integer = Nothing
        Dim myBox As New SurpriseBox
        Dim myTeacher As New BoxTeacher

        'Whileもすごいねー。DoLoopしか知らなかったので衝撃。
        While (wRepeter.ToUpper = "Y")

            'カウントアップも+=で書けるのが衝撃
            touchCount += 1

            'このあたりの作り方ってANSI-Cっぽいなんて思う
            Console.Clear()
            Console.WriteLine(String.Format("ハコをさわろう!何がでるかな?  {0}回目!", touchCount))

            'さわる回数は先生におまかせ
            'つまり、メインでは回数のチェックとか入力まちとかしない。
            '似たようなサブルーチン処理はVB4でもしていたけど、
            'クラスという違う世界?で記載して、その中身完全隠蔽っぽいことするっていうのは
            '意外と衝撃だったりする
            myTeacher.TeachPlease()

            '先生から回数おしえてもらうだけ。この回数も中でどうやってできてきたのかなんて
            'メインは知らないでいい。うわー衝撃だw
            setCount = myTeacher.Count
            If setCount = 0 Then
                Console.WriteLine("またきてね!")
                Exit While
            End If

            Console.WriteLine(String.Format("{0}回ハコがさわれるよ!何がでるかな?", setCount))

            'ここには書いてないのだけれど、Continueがさりげに使えるのも衝撃www
            'ここもmyBoxの中身の動きは気にしない。
            For i As Integer = 1 To setCount

                Console.WriteLine(String.Format("{0}回目", i))

                'どれかをハコにセットする準備
                myBox.SetSomething()

                'ハコをさわってみた
                'ここで自作イベントが発生ですよ、これってすごいですよ!
                myBox.TouchBox()

                Console.WriteLine(String.Format("箱の中は……{0}!", myBox.InnerAnswer))
            Next

            Console.WriteLine("もっかいやる?[Y]")
            wRepeter = Console.ReadLine()

        End While

        Console.WriteLine("お・し・ま・い♪")
        Console.Read()

    End Sub

End Module

って、こんな感じ。

AddressOfも出てこないし、コメントにあるとおり、衝撃だらけw

でも、これをリファレンスほとんど見ないで、インテリセンスに頼ってはいたけど、コード作ってテストできた自分をちょっとほめたい。.Netに出会って一年たって、なんかちょっと懐いてくれた様な感覚というか、そんな感じです。まーこれも、VB6をやっていればもうちょっと、衝撃度は低かったのかもしれないけど

で、本題(おい) 

        If aInt => bInt Then
            aInt = 0
        End If

ってのを書いたら

        If aInt >= bInt Then
            aInt = 0
        End If

って勝手に直してくれることに気づいた(笑)VisualStudio2005、貴方こまかいのね(笑)

投稿日時 : 2008年6月19日 12:53

コメント

# re: VB4どっぷり人間が頑張ってみたVB.Net 2008/06/19 13:04 じゃんぬねっと
> って勝手に直してくれることに気づいた(笑)
> VisualStudio2005、貴方こまかいのね(笑)

VB6 さんも直してくれます。

# re: VB4どっぷり人間が頑張ってみたVB.Net 2008/06/19 16:07 ちゃっぴ
Property なんてつかっちゃダメだ!
Class なんてつかっちゃダメだ!
漢は Sub ひとつで勝負!

# re: VB4どっぷり人間が頑張ってみたVB.Net 2008/06/20 0:07 iwamoto
なるほど~やっぱりTryParseはVBの血統だったのですね。先日、職場のC#のコードで見つけました。
どうしよう。

Post Feedback

タイトル
名前
Url:
コメント