Presentation is loading. Please wait.

Presentation is loading. Please wait.

実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.

Similar presentations


Presentation on theme: "実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野."— Presentation transcript:

1 実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野

2 ゲームのプロットを作る 頭の体操 バージョン1 バージョン2 あなたのバージョン?? 計算式もしくはクイズを表示する ユーザは回答を行う
 計算式もしくはクイズを表示する  ユーザは回答を行う  正しく回答した数を競う バージョン1  計算: 表示した数の3倍を計算 バージョン2  足し算、引き算、掛け算を計算 あなたのバージョン??

3 アルゴリズムと流れ図を考える ゲーム開始 タイムカウンタセット 問題提示 回答取り込み No 正解かどうか 間違い表示 Yes
正解数を1増やす タイムアップか No Yes 得点の表示をして終了

4 必要な機能を探そう 問題を生成する 問題の表示と回答の取り込み 正解の判定と正誤表示 タイムカウンタの作成 3桁の数をランダムに生成する
 問題を生成する  3桁の数をランダムに生成する  Rnd関数を利用します  問題の表示と回答の取り込み  InputBoxで出来る  正解の判定と正誤表示  If 文と MsgBoxで出来る  タイムカウンタの作成  Timerという関数(オブジェクト)があります

5 乱数とタイムカウンタ Rnd Timer 呼び出すごとに1未満0以上の実数(実際は16桁の小数)をランダムに発生するオブジェクト
 プログラムの最初にRandomizeとおまじないを書いておく必要がある Timer その日の午前0時から現在何秒たったかを示すオブジェクト 

6 整数をランダムに出そう 実数の整数部分を計算する関数(切捨て操作) 1000未満の整数をランダムに出すには 3未満だったら Int()
 x = Int(Rnd*1000) 3未満だったら  x = Int(Rnd* 3) x が0ならグー 1ならチョキ 2ならパー というように使える

7 プログラムを読もう Sub Game1( ) ' ' Brain training1
Dim suuji As Integer '提示する問題 Dim answer As Integer '回答 Dim score As Integer '得点(正解数) Dim mytime As Single 'タイムカウンタ、単精度小数型 '乱数を利用するためのおまじない Randomize MsgBox "頭の体操です。 表示する数の3倍をタイプしてください" 'スコアとタイマーのセット score = 0 mytime = Timer

8 '制限時間になるまで操作を続ける While Timer < mytime + 30 '問題の提示と回答のチェック、正解数のカウント suuji = Int(Rnd * 1000) answer = InputBox("問題:" & suuji & "の3倍は?") If answer = suuji * 3 Then score = score + 1 Else MsgBox "間違い" End If Wend

9 ' 終了と得点の表示、講評つき If score > Then MsgBox "正解数" & score & "個。よく出来ました。" ElseIf score > Then MsgBox "正解数" & score & "個。まあまあやね" Else MsgBox "正解数" & score & "個。頑張りましょう" End If End Sub

10 バージョン2 足し算、掛け算、引き算を計算させたい 20問出題して、正解数と、何秒で計算したかを計りましょう。 乱数で第一変数を発生
 足し算、掛け算、引き算を計算させたい  乱数で第一変数を発生  乱数で第二変数を発生  乱数で演算を発生  引き算のときは、答えが負にならないように工夫しよう。  20問出題して、正解数と、何秒で計算したかを計りましょう。

11 問題の生成部分を変更 Dim x As Integer Dim y As Integer Dim enzan As Integer
Dim score As Integer Dim answer As Integer Dim mytime As Single Dim count As Integer ’20問出すためのカウンタ

12 演算と2つの変数をランダムに生成 enzan = Int(Rnd * 3) x = Int(Rnd * 8 + 2)
y = Int(Rnd * 8 + 2) enzanが0なら足し算、1なら掛け算、2なら引き算をさせましょう。 それについては次のページ 変数が0や1だとやさしすぎるので、2以上にしてあります

13 If enzan = 0 Then answer = InputBox("問題:" & x & "+" & y & "= ?") If answer = x + y Then score = score + 1 Else MsgBox "間違い" End If ElseIf enzan = 1 Then answer = InputBox("問題:" & x & "*" & y & "= ?") If answer = x * y Then score = score + 1 Else answer = InputBox("問題:" & x + y & "-" & y & "= ?") If answer = x Then score = score + 1 Else MsgBox "間違い"

14 MsgBox “正解数” & score & “個。” & “時間” & mytime & "秒"
For  count = 1  To 20 enzan = Int(Rnd * 3) hensu1 = Int(Rnd * 8 + 2) hensu2 = Int(Rnd * 8 + 2) Next  count mytime = Timer - mytime MsgBox “正解数” & score & “個。” & “時間” &  mytime & "秒" If enzan = 0 Then answer = InputBox("問題:" & x & "+" & y & "= ?") If answer = x + y Then score = score + 1 Else MsgBox "間違い" End If ElseIf enzan = 1 Then answer = InputBox("問題:" & x & "*" & y & "= ?") If answer = x * y Then score = score + 1 Else answer = InputBox("問題:" & x + y & "-" & y & "= ?") If answer = x Then score = score + 1 Else MsgBox "間違い"


Download ppt "実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野."

Similar presentations


Ads by Google