アクセス解析
FC2ブログ
                    
パソコン教室 COM-IT TOP > 2012年05月

みゅら~のVBA入門・第19回目

「みゅら~」のVBA入門・第19回目
The Tank Battle(戦車戦)-Excel
〜180秒以内で敵を撃破せよ!〜

皆さんこんにちは、「みゅら~」です。
前回はとても簡単だったと思います、逆バージョンをお試しいただけましたか?
段々VBAの面白さが湧いてきて下さったら、「みゅら~」の喜び、これにすぎること、
この上ない思いです。(自分的には、VBA伝道者になりつつあるな~と思っています)
さて、「ビジネス事務科第14期」が始まって1週間過ぎました。

生徒さんと楽しみながら授業を行なっています。
今回の「ビジネス事務科第14期」には「VBA」も入っているので、
ちょっとした「お遊び」もできます。あまり気張らず、
楽しんで授業を行いたいと思っております。
(今期は40数日間あるので、体調面も気をつけていこうと思います)

昨日(5月20日)は「Excelを教えてくれ〜」と言われたので「みゅら〜」宅で
個別Excel教室をやっていました。
(何回も続きそうなので、いつでも教室をやっている気分です)
尚、「みゅら〜」最近「パイプ」を始めました。
最初は「エアーガン」を買いに行くつもりが、「パイプ」に
目が引き寄せられたからです。
最初は、なかなか上手くいきませんでしたが、
最近はかなり「上達」しました。でもいつかは「エアーガン」を目指します。

誰かの名言を一言
「喧嘩が強くても、いくら頭が良くても、人を思いやる気持ちの無い奴は、強くない」(これは名言だな〜)
尚VBA入門は「みゅら~」の気分(ひらめき)次第で内容が変わりますがご了承願います。
「出張(たび)の途中のコラム」

◎上野編
「上野」と言えば「上野動物園」、「上野動物園」と言えば「パンダ」でしょうか。
「みゅら~」が見て、感じたことは「彰義隊」の墓と「西郷隆盛」の像が近くにあることです。
(尚「彰義隊」の墓は10年ほど前に閉鎖されたそうです・・残念)
「彰義隊」の墓は「上野戦争」で奮戦した霊を鎮めるためなので納得いきます。
(「みゅら~」が行く(何回も行っていますので)ときは、ご焼香が絶えていませんでした)
そこで「西郷隆盛」の像です。

何故ここにあるのか、色々調べたのですが、今もって不明です。
「西郷隆盛」の「薩摩軍」は「上野戦争」で大損害を被っているのに何故だろう?
(大村益次郎の策とも言われているそうです・・・)
(ここで勇名を轟かしたのがアームストロング砲です。VBA入門第17回目にも記述)

上野恩師公園にある「寛永寺」は徳川家の菩提寺で謹慎した
徳川慶喜の復権を目指して、最後はここで戦ったそうです。
さて、話題は変わりますが、上野恩賜公園と言えば「不忍の池」があります。
「みゅら~」の好きな「グレープ」(さだまさし・吉田政美)の
「無縁坂」も忘れられない場所でしょう。

坂の途中にある地名表示の掲示板には、森鴎外の「雁」で主人公の
岡田青年の散歩道として大変有名になったと言われています。
またまた「グレープ」の話題ですが、実は「追伸」という歌がありまして、
その中に「♪あなたに借りた鴎外も読み終えていないのに♪」と
言う歌詞がありまして、関連性を感じざるを得ません。
(「グレープ」にとって「無縁坂」は「無縁」では、なかっかたようですね)

「みゅら〜」の「スマホ」には、かなりの数の「グレープ」の曲が入っています。
尚、「上野駅」の「立ち食い蕎麦」では夏になると「冷かけ」が売り出されます。
(どこでもやっていると思いますが・・・)とても美味かった。

閑話休題

今回も簡単なゲームを作ってみましょう!!

「↑」「↓」キーで黄色い「戦車」を動かして、「スペース」キーで弾丸発射です。
命中したら、あなたの勝ちです。180秒以内で敵「戦車」を破壊しましょう。
180秒を超えると負けになりますので、頑張ってください。
玉は一回につき一発です。完全に外れると、また発射できます。
敵「戦車」はランダムで動きますので、命中させるのは難しいです。
しかし、命中判定ロジックを変更すると、少しだけ命中率があがります。
まずは、いつものようにシートにボタンを設定します。

みゅら〜VBA入門第19回2 
ボタンクリックイベントに下記のロジックを記述してください。
Private Sub CommandButton1_Click()
    UserForm1.ImageCartridge.Visible = False
    UserForm1.ImageDestroy.Visible = False
    UserForm1.Show 1
End Sub
ボタンをクリックするとユーザーフォームが表示されます。

みゅら〜VBA入門第19回5  
上図の中で「↑」「↓」で黄色い「戦車」を動かします。
タイミングを計って「スペース」キーで弾丸を発射します。

みゅら〜VBA入門第19回3 
弾丸が命中すると下図のようになります。


 
みゅら〜VBA入門第19回1 
 
しかし、180秒以内に命中させないと下図のようになります。

 みゅら〜VBA入門第19回4

では、例によってロジックを下記に記します。
Option Explicit
Dim intCartridge     As Integer
Private Sub UserForm_Activate()
    Dim i           As Integer
    Dim intResult   As Integer
    Dim intMove     As Integer
   
    Randomize
    For i = 1 To 180
        Application.Wait Now + TimeValue("00:00:01")
        If (ImageCartridge.Visible = True) Then
            ImageCartridge.Left = ImageCartridge.Left + ImageCartridge.Width
            If ((ImageEnemy.Left <= ImageCartridge.Left) And _
                (ImageEnemy.Top >= ImageCartridge.Top And _
                ImageEnemy.Top <= ImageCartridge.Top + ImageCartridge.Height)) Then
                ImageCartridge.Visible = False
                ImageDestroy.Top = ImageEnemy.Top
                ImageDestroy.Left = ImageEnemy.Left
                ImageDestroy.Visible = True
                MsgBox ("おめでとう あなたの勝ちです!!")
                Exit Sub
            End If
            If (ImageCartridge.Left > ImageEnemy.Left) Then
                ImageCartridge.Visible = False
                DoEvents
            End If
        End If
        intResult = Int((10 - 1 + 1) * Rnd + 1)
        intMove = intResult Mod 10
        Select Case intMove
            Case 0, 1, 2, 3, 4
                ImageEnemy.Top = ImageEnemy.Top - 15
                If (ImageEnemy.Top < 0) Then
                    ImageEnemy.Top = 0
                End If
                DoEvents
            Case 5, 6, 7, 8
                ImageEnemy.Top = ImageEnemy.Top + 15
                If (ImageEnemy.Top + ImageEnemy.Height >= 306) Then
                    ImageEnemy.Top = 306
                End If
                DoEvents
        End Select
        LabelTime.Caption = i & "/180秒"
        DoEvents
    Next i
    MsgBox ("あなたの負けです")
End Sub
 
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Select Case KeyCode
        Case 40 '↓
            ImageMe.Top = ImageMe.Top + 10
        Case 38 '↑
            ImageMe.Top = ImageMe.Top - 10
        Case 32 'スペース
            If (ImageCartridge.Visible = False) Then
                ImageCartridge.Top = ImageMe.Top
                ImageCartridge.Left = ImageMe.Left + ImageMe.Width
                ImageCartridge.Visible = True
            End If
    End Select
    DoEvents
    DoEvents
    DoEvents
End Sub
 
最後まで読んでくださってありがとうございます
 
★次回は「戦車戦」の発展型をご紹介したいと思います。
 
「みゅら~」のVBA入門(教室)は皆様の応援によって支えられています。
今後もご声援のほどよろしくお願いします。
  






COM-ITインストラクター募集中
たくさんのご応募お待ちしております。 なお定員になり次第、募集は締め切らせていただきます。
パンフレットはこちらから

いつも読んでいただきありがとうございます^^
ランキングに参加してます!!
よろしかったら、ポチっとお願いします。
   ↓ ↓ ↓ 


にほんブログ村 地域生活(街) 北海道ブログ 札幌情報へ

COM-ITインストラクター募集中
就労継続支援A型(雇用型)事業所を利用される方を募集しております。 見学など随時お受けしておりますので、まずはお気軽にご連絡ください。 ご応募お待ち申し上げております。
(担当:後藤)

パンフレットはこちらから
カレンダー
04 | 2012/05 | 06
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
com-itの所在地・連絡先
所在地はこちら
〒001-0023 北海道札幌市北区北23条西4丁目1−12鉄北ビル2F
TEL 011-738-7551
FAX 011-738-7552

ランキングに参加しています!
ブログランキングに参加してます。 お手数ですが、下記バナーをぽちっと して頂けたらすごくうれしいです。
  にほんブログ村 地域生活(街) 北海道ブログ 札幌情報へ
最新記事
カテゴリ
月別アーカイブ
管理画面
RSSリンクの表示
QRコード
QR
検索フォーム