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

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

1 情報基礎 A プログラムやソフトウエアの 構造 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
1 情報基礎 A 第 6 回 プログラミング入門 VBA の基本文法 1 - 計算の基本構造とプログラミング - 準備・変数・データの入出力 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
情報基礎実習 I (第3回) 木曜4・5限 担当:北川 晃. プログラミング演習 2 つの数を入力し,「計算」ボタンをクリック すると,それぞれの計算結果を次のように 表示するプログラムを作れ.
1 情報基礎 A 第 5 週 EXCEL 2 徳山 豪・全眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
プログラミング演習( 2 組) 第 9 回
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
徳山豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
情報基礎実習I (第4回) 木曜4・5限 担当:北川 晃.
徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
VBAを通して プログラム言語の基本構造を学ぶ
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
12.3,E,-15, 12.3,E5,+,=, >,<,…,
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
数値計算及び実習 第3回 プログラミングの基礎(1).
VBA H106077 寺沢友宏.
第四回 VB講座 画像とタイマー.
情報基礎A 第13週 VBAプログラミング VBAの基本文法7・実際のデータ処理
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
第7回 卒研進行状況 04A2029           古賀慎也.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
第二回 VB講座 電卓を作ろう.
プログラミング演習(2組) 第8回
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
プログラミング入門 電卓を作ろう・パートIV!!.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
情報実習I (第7回) 木曜4・5限 担当:北川 晃.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
実践プログラミング入門2 配列を使ってゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
すべてのレポートの提出期限 1月22日 火曜日 これ以降は特殊な理由が無い限り レポートを受け取りません!
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
仕様4 元素名他 初期画面作成 仕様1 元素数の入力 仕様2 分子名の判定 仕様3 飽和炭化水素の判定 CとH数だけではだめ
JavaScript プログラミング演習 - じゃんけんゲーム - 「ホームページを動的に制御したい…」
VBで始めるプログラミング 第三回 コードを書こう!! まきはた@ナーク ’04/05/21.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
疑似乱数, モンテカルロ法によるシミュレーション
先週の復習 2重ループを用いた、 表の記入と読み込み.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
プログラミングⅡ 第2回.
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
第6回:得点を表示しよう! (文字の表示、乱数)
1~15までの数字の中から、 1個の数字を選び、覚えて下さい。
栗原正純 UEC Tokyo 電気通信大学 情報通信工学科 2007/5/2(修正2008/08/21)
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング基礎演習 第4回.
情報工学Ⅱ (第8回) 月曜4限 担当:北川 晃.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
情報処理Ⅱ 第2回 2004年10月12日(火).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
プログラミング序論演習.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
プログラミング言語によっては,複素数が使えない。
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
情報処理3 第3回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

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

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

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

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

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

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

プログラムを読もう 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

'制限時間になるまで操作を続ける 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

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

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

問題の生成部分を変更 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問出すためのカウンタ

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

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 "間違い"

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 "間違い"