【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

きょういく ユースフル! ~ 僕は触媒になりたい ~

全て | カテゴリ未分類 | 生活をよくする | 本の紹介 | 共に生き、共に育つ | たのしいべんきょう | 個人的な日記 | 体育 | 音楽♪ | 道徳 等 | 問題解決 | 考え方 | 話し合い・話す・聞く | 特別支援教育 | 小学校 | 阪神間 地域情報 | PC・デジタル関係 | 教材・教具 | 食育(自立生活・家庭科)・園芸 | 仕事術 | 旅行(温泉含む) | 英語学習 | 環境保護・エコ | 作文・書くこと・漢字 | よのなか(社会) | いのち | 人間関係・コミュニケーション | 子育て | 地震・防災 | 算数 | 心理・カウンセリング・セラピー | 読む・音読・朗読 | エクセルでのプログラミング | 北播丹波 地域情報 | 教員免許 | 教育改革 | 休校期間お役立ち情報 | 映画 等 | 創造性をはぐくむ | プレゼン | 通級 | 健康 | ゲーム
2018.09.12
XML
​​​​【Excelプログラミング講座】第12回です。

この講座では、エクセル野球シミュレーション「ダイナミックベースボール」のゲームプログラムを材料として、エクセルVBAでのプログラミングを解説していきます。



ダイナミック・ベースボールのページ

過去記事をまとめたサイト↓
▼​エクセルプログラミング講座

前々回から、未解決のまま放置していたバグの解決に乗り出しています。
簡単に言うと、「サヨナラで途中終了すると、成績反映がされずに終わっちまうときもある」というバグです。原因は、設計段階で「サヨナラで途中終了する場合」のことを想定していなかったことにあります。前回までで、「打点」と「安打数」の成績反映はできそうな見通しが立ちました。
今回はいよいよ「打数」の反映の入れ込みです。
道筋としては、「打数のカウントを最初にして、送りバントの場合のみ、例外的にカウントを戻す、というやり方」をとろうとしています。

今回は、そのつづき!

果たして今まで放置していたバグが解決できるか?


打数の成績反映のコマンドは、
 Call SeisekiB(Range("H6"), 22)
でした。

現在の打数反映コマンドがどの場所にあるか、まず調べておきましょう。

Crtlキーを押しながら”F"で、「検索」でしたね。
検索窓に、「Call SeisekiB(Range("H6"), 22)」を貼り付けます。
このとき、検索条件を指定できます。



今回は、ゲームプログラム全体から検索したいので、
「カレントプロジェクト」
を選びます。

もしも、1つのサブルーチンとか、あるプロシージャの中だけを探すときは
「カレントプロシージャ」、
今いる「Module1」などのモジュール全体の中から探すときは
「カレントモジュール」
を選びます。
右側に「置換」もありますね。

Wordでもそうですが、検索と置換はうまく使うとかなり便利です。
今まで使いこなしていない人には、超おすすめの便利機能ですよ。

で、検索すると、該当箇所が反転表示されて、見つかります。



もう一度検索すると、別の該当場所に移動します。

確認すると、該当箇所は2つ。「HR(ホームラン)ねらい」と「飛球判定」の最後。
いずれも、その打席が終わって、次の打者に切り替わるか、チェンジを迎える直前に打数の成績反映がされています。

ん?

今回のエラー、「ホームランの時は記録されるのに」と報告されていましたが、この2カ所しかないということは、サヨナラホームランの場合もやはり打数は記録されないようです。

そうなると、話は早い!

前回、「サヨナラの処理」のところだけに入れれば話が済むんじゃないか、と言っていた理屈が、通るようになります。
そんなわけで、Sub「ScoreIn」の「​Call SeisekiP」の下に、打数の成績反映も付け足します。​
===========================
        'サヨナラの処理
        If Range("O3") <> "" And Range("Q3") > Range("Q2") Then
            Call SeisekiP(Range("O6"), 22)
            Call SeisekiB(Range("H6"), 22)
            Y = 3 'Y=3でwinningを処理
            MIDIstop
            Winning
            End
        End If
===========================

これで、エラー改善ができたはず!

以下、確認作業です。

これまでの修正箇所を、7回制変更プログラムにも反映させ、
7回制の試合で実際にサヨナラ処理を起こさせて、結果を見てみます。

エクセルのスコアボードは、実は自由に数値入力できるので(!)
得点は自由に操作しながら、7回裏まで試合を進行させます。
ヒットやホームランを打つかどうかは運任せですが、
相手投手をヘボ投手に選手交代し、少しでも確率を上げます。

ちなみに、「勝負!」ボタンだけはマウスでクリックしなければなりませんが、
ダイアログボックスはキーボードのEnterキーで次に進むので、
急いでいるときはEnterキー押しまくりでかなり高速進行できます。

再現に挑戦した1回目。おっと、サヨナラホームランになってしまいました。
サヨナラホームランの打者成績反映はやはり完璧であることを確認する結果となりました。(--;)

気を取り直して2回目。今度は、サヨナラ2ベース。
さっそく打者成績を見に行くと、おっと打点が入っていない。
そういえばこの連載記事の中ではちゃんと打点の反映方法に触れていませんでした。
(打点の反映方法は、バグ報告へのコメントの回答欄に以前書いていたのでした。)
そちらも反映し、見事、バグ取り、完成です。

バグ取りが本当に出来たかどうかの確認のため試合をしないといけないのは面倒ですが、これは大事なところ。
本当に直ったかどうか、まず自分で確認することは大事です。

そんなわけで、未解決バグは、見事解決されました!
解決済みバージョン3.3は近いうちに公開します!(^0^)





お気に入りの記事を「いいね!」で応援しよう

Last updated  2018.09.12 21:01:33
コメント(0) | コメントを書く


PR

Profile

にかとま

にかとま

Category

Keyword Search

▼キーワード検索

Free Space

Calendar

Archives

2024.11

Favorite Blog

米酢を加える 2024.… New! 森3087さん

Comments


© Rakuten Group, Inc.