2019年11月18日

師匠のVB.NETどたばた塾~第3回

sisyo.gif
師匠T:……。

deshi.gif
弟子D:どうしたのですか、師匠? 何か難しい顔を……。

sisyo.gif
いや、もうすぐ12月、クリスマスであろう? いやなんでもない。

deshi.gif
(師匠の体が泣いている……!?)

sisyo.gif
さて、そんな世俗のことなどどうでもよい。今回もびしばしいくぞ!
今回は繰り返しについてじゃ。はっはっはっ!

deshi.gif
は、はぁ……。

【 やってみせい! 】

sisyo.gif
さて、今回はいきなり問題じゃ。1から5までの合計を求めるプログラムを作ってみるがよい。

deshi.gif
はいっ。かたかたかた……これでいかがでしょうか?

vb1911-l01.JPG

sisyo.gif
ふむ、まずまずじゃな。では、1から100までの合計を表示させてみよ。

deshi.gif
はい。かたかた……

deshi.gif
がーーーー!! 無理です! 気力がもちません!

sisyo.gif
そうであろう。そこで役立つのが、繰り返しを司る、Do~Loop文と、For~Next文なのだ。まずは、繰り返しの基本形・Do~Loop文について説明していくぞ!

deshi.gif
はい!

【 臨機応変! Do~Loopなのじゃ! 】

sisyo.gif
さて。Do~Loop文はある条件が満たされる(あるいは満たされなくなる)まで繰り返しを行うものであり、このように書くぞ。

(書き方1)
Do While 条件式
Loop

(書き方2)
Do Until 条件式
Loop

(書き方3)
Do
Loop While 条件式

(書き方4)
Do
Loop Until 条件式

(書き方5)
Do
Loop

deshi.gif
色々な書き方があるのですね。それぞれ、どのような違いがあるのですか?

sisyo.gif
うむ。まず、条件が満たされている間繰り返すか、条件が満たされていない間繰り返すか、からじゃ。
書き方1、書き方3の場合、つまり、Whileとついている場合は、条件が満たされている間繰り返す。つまり、条件が満たされなくなるまで繰り返すのじゃ。

deshi.gif
ふむふむ。

sisyo.gif
他方、書き方2と書き方4、Untilとついている場合は、条件が満たされていない間繰り返す。つまり、条件が満たされるまで繰り返すのだ。

deshi.gif
なるほど。

sisyo.gif
次は、最低何回繰り返すか、についてじゃ。書き方1と書き方2、つまり、Do側にUntil/Whileがついている場合は、このDoの時点で繰り返すかどうか判断するので、繰り返す条件が成立しないときは、1回も繰り返さずに終えることになる。

vb1911-z01.jpg

deshi.gif
ふむふむ。

sisyo.gif
一方、Loop側についている場合(書き方3と書き方4)は、Do~Loop内の命令を実行した後、Loopで判断するので、最低1回は繰り返すことになるのだ。

vb1911-z02.jpg

deshi.gif
なるほど!

sisyo.gif
ここまでのことを図に表すとこうなるぞ。

vb1911-z03.JPG

deshi.gif
わかりました。それで、書き方5については?

sisyo.gif
うむ。この場合は、無限に繰り返すのだ。

deshi.gif
ええ!? それはとても困るのでは?

sisyo.gif
ふふふ、安心せい。ちゃんと止めるためのものが用意してある。それがExit Do文じゃ。

deshi.gif
Exit Doですか。

sisyo.gif
うむ。このExit Do文が実行されると、そこで繰り返しは終了し、Loopの次の文から命令を実行していくのだ。
そこで、このExit Do文をIF文などと組み合わせて、条件が満たされたときにExit Do文を実行するようにするのじゃ。

deshi.gif
なるほど。

sisyo.gif
それでは弟子よ。Do~Loop文を活用し、1から10までの合計を計算するプログラムを作ってみるがよい。

deshi.gif
はい! かたかた……これでいかがでしょうか?

vb1911-l02.JPG

sisyo.gif
うむ、見事じゃ!と言いたいところだが、まだ甘いのう。実行結果を今一度確認してみるがよい。

vb1911-g01.JPG
↑ あれ?

deshi.gif
え……? あっ、45になってる。正解は55のはずなのに。どうしてでしょう?

sisyo.gif
ふふふ。プログラムの流れを追ってみるがよい。aが9の時はどうなっておる?

deshi.gif
あっ! sumに足したあと、aに1を足して10になって、そこでDoに戻って10になってるからこの10が足されずに抜けてしまったんですね。

sisyo.gif
その通りじゃ。この場合は、条件をa<>11か、a <= 10にするのが正解じゃな。

deshi.gif
なるほど。

sisyo.gif
このように、条件式の内容、またDo側につけるかLoop側につけるかでも、結果は全く違うものになってしまう。気を付けることじゃ。

deshi.gif
はいっ!

【 融通はきかんが簡単! For~Nextじゃ! 】

sisyo.gif
さて。よくよく考えてみれば、今回のプログラムの主題は、1ずつ増えていく値を合計を足していく、というものであったな。

deshi.gif
はい。

sisyo.gif
このような、条件となる値が一定値ずつ増えていく流れの場合、もっと簡単に書けるものがある。それが……

deshi.gif
For~Next文ですね!

sisyo.gif
うむ、その通りじゃ。For~Next文の書き方は、昔のBASICと同じく、このように書く。

(書き方)
For 変数=値1 To 値2 Step 値3
Next

sisyo.gif
この文は、いたって簡単。まず変数の値が値1からスタートし、値3だけ増減していく。そして、値2以上(以下)になったら、繰り返しを終えるのだ。なお、この判断は、Nextの時点で行われる。
そうそう、値3が+1の時は、Step以降は省略することができるぞ。

deshi.gif
なるほど。

sisyo.gif
さて、それでは弟子よ。改めて出題じゃ。For~Nextを活用して、1から10までの合計を計算するプログラムを作ってみるがよい。

deshi.gif
はい!

vb1911-l03.JPG

deshi.gif
ちゃんと、55と正解がでましたよ! しかも、Do~Loopと比べて、若干繰り返しの部分が短くなってすっきりしてますね!

sisyo.gif
そうであろう。臨機応変に使えるDo~Loopと、シンプルなFor~Next。これらを使いわけて使いこなすことが、繰り返し処理の肝心な部分じゃ。精進するように。

deshi.gif
はい!

sisyo.gif
では、今日はここまでじゃ。次回は、配列変数について学ぶことにする。復習を忘れてはならぬぞ!

==========

※次の更新は、『フリーゲームレビュー』の予定です。お楽しみに!

posted by 裏編 at 13:40| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2019年11月14日

師匠TのチャレンジARSゲーム!~第拾七回:『サザンクロス』 【バンダイ】(その3)

うむ、師匠Tである! 今回も名作「サザンクロス」を攻略していくぞ!

今回は、前回から引き続き、ファンタジー世界で冒険し、さらに宇宙ステーションへと冒険の舞台が広がっていくぞ!

でははじめていくとしようぞ!

どんなゲームも、完全制覇じゃ!

【 本編じゃ! 】

ars1911-01.JPG
いよいよ、城の中に突入じゃ! ここからは再び、方向指示がFBLRに変わるので、気を付けるようにな。
どうやら、屋内ではFBLR、外ではNSEW、で方向指示するようじゃな。

ars1911-02.JPG
さてさて。右の扉は、いかにも何かありそうじゃな。
どうやら合言葉を言わねばならぬようじゃが、その合言葉は……?

ars1911-03.JPG
いたぞ! 囚われのアンドロメダ姫じゃ! 彼女を勇者ペルセウスのもとに連れ帰ってやるとしようぞ。

ars1911-04.JPG
もう片方の扉は、空き部屋のようじゃが……?

ars1911-05.JPG
無事に姫をペルセウスのもとに連れ帰ると、彼はベルをお礼にくれるぞ。
その時の、二人のアドバイスは、しっかりと聞いておくように。

ars1911-06.JPG
湖じゃ! そういえば二人が、ここであるものを使え、と言っておったの。
もっとも、ただ「USE(使う)」ではダメじゃぞ。もらったものはアレだったから……?

ars1911-07.JPG
ぎゃー! さそりじゃ! いくらわしでも、こいつに刺されてはひとたまりもない。
どうしたらよいのか……?

ars1911-08.JPG
少女は、何か哀しそうじゃ。いったいどうしたのであろうか?

ars1911-09.JPG
そしてここから、舞台は一気に宇宙ステーションへ!
このように、色々な世界観がミックスされておるのも、サザンクロスの魅力の一つじゃな。

ars1911-10.JPG
はしごがあるな。この上に、何が待っておるのか?

ars1911-11.JPG
宇宙船のコクピットにきたぞ。さて、ここで何をするかは……。
目の前にあるものを考えれば、すぐわかるであろう。

ars1911-12.JPG
さて、いよいよ発進じゃが、操作方法はわかっておるかな?

ars1911-13.JPG
ぎゃー! 目の前に隕石が! 回避、回避じゃ!!

ars1911-14.JPG
こ、ここは一体!?


次回に続くのじゃ!!

==========
※次の更新は、新連載『師匠のVB.NETどたばた塾』の予定です。お楽しみに!
posted by 裏編 at 09:29| Comment(0) | チャレンジARS | 更新情報をチェックする

2019年11月11日

ActiveBasicとDXライブラリでゲームプログラミング!~第13回・シューティングゲームを作ろう!その5

n88_reon.gif
玲音:こんにちは! 玲音です! ……あれ? 楓ちゃん、何か書いてるの?

n88_kaede.gif
楓:な、なんでもありませんよ! 見ないでくださいっ。

n88_reon.gif
なになに……。「きょうもかえでは、せんぱいにこうざにひきずりこまれました」
もう、楓ちゃんったら~。

n88_kaede.gif
えへへ……。それで先輩。確か今回は、当たり判定をするんでしたよね?

n88_reon.gif
うん、そうだよ。今回は、自機の弾と敵、自機と敵、自機と敵の弾の当たり判定を作って、当たった時に敵が消えたり、ゲームオーバーになったりする処理をやっていくよ。それじゃ、さっそく初めてみよう!

~関数を作ろう!

n88_reon.gif
それじゃ、まずはモノとモノとの当たり判定を行う関数を作っていこう!

n88_kaede.gif
関数、ですか?

n88_reon.gif
うん。そしてこの関数を、それぞれ(自機の弾と敵の時、自機と敵の時、自機と敵の弾の時)で使いまわすようにしていくんだ。そうすれば、処理がシンプルになるでしょ?

abdx1911-g01a.jpg

abdx1911-g01b.jpg

n88_kaede.gif
なるほどっ。さすが、私のこの講座に引きずり込んだ先輩ですっ。

n88_reon.gif
だから、引きずり込んだんじゃないってばぁ……。こほん、それじゃ続いて、当たり判定の考え方ね。
まずはこの図をみて。

abdx1911-g02.jpg

n88_reon.gif
これが当たっている状態ね。これを見て、何か気づかないかな?

n88_kaede.gif
あっ! 当たっている状態というのは、中心同士の距離が、二つのものの幅の半分の合計より小さい状態なんですね!

n88_reon.gif
そういうこと。こうなっているかどうか判定して、条件が成立したら、当たっているという判定を返せばいいんだよ。というわけで、それを関数にしたものがこちらです!

abdx1911-l01.jpg

n88_reon.gif
まず、p〇1とついているのは物体(自機や弾、敵など)1の位置や大きさの情報。p〇2とついてるのは物体2の情報だよ。
そして、まず12行目から16行目まで(赤枠の部分)では、各物体の中心の位置を計算しているよ。
そして18行目からがいよいよ本番。中心の間の距離と、幅(高さ)の半分の合計を計算し(青枠の部分)、そしてこれを比べて、当たっていれば、1を返し、そうでなければ0を返すようにしてるんだ(緑枠の部分)。

n88_kaede.gif
なるほどー。あ、先輩、このAbsっていうのはなんなんですか?

n88_reon.gif
うん。それは、引数の絶対値を返す関数だよ。簡単に言うと、値のマイナスを取って返してくれるもの。

n88_reon.gif
これを使わないと、比較するために、値が正の数かどうかチェックして、負の数だったら正の数に直す手間がかかるからね。

n88_kaede.gif
なるほどー。

n88_reon.gif
さて、それじゃ、次はこの関数を使って行こう!

~関数を使おう!

n88_reon.gif
まずは、自機の弾と敵との当たり判定ね。考え方は簡単。全ての自機弾と敵のデータをチェックして、双方ともある組み合わせの時のみ、判定の関数を呼び出して判定する、という形。というわけで、そのためのサブプロシージャがこちら!

abdx1911-l02.JPG

n88_reon.gif
続いて、自機と敵、自機と敵の弾の当たり判定だよ。こちらも考え方は、さっきと同じ。ただ、自機は一機しかいないし、自機に当たったらゲームオーバー画面に行くので、自機があるかどうかの判定はしてないところが違うの。

abdx1911-l03.JPG

abdx1911-l04.JPG

n88_reon.gif
これができたところで、これらの関数をGameMainサブプロシージャに組み込もうか。次のコードをGameMainサブプロシージャに付け加えてね。

abdx1911-l05.JPG

abdx1911-l06.jpg
↑書き直した後のGameMainがこちら。(赤枠が追加した部分です)

n88_reon.gif
なお今回は、ゲームオーバーの処理は作ってないから、敵や弾に当たったら画面が黒くなるだけになってる。そこらへんは次回にやっていくよ。では実行してみよう!




n88_kaede.gif
おー! こちらの弾で敵を倒せたり、弾や敵に当たったら画面が黒くなるようになりましたよ!

n88_reon.gif
それでは今回はここまで。次回はいよいよラスト。スコアをいれたり、タイトルやゲームオーバー画面を入れたり、BGMを入れたりしていくよ。よろしくね!

==========

※次の更新は、『師匠TのチャレンジARSゲーム』の予定です。お楽しみに!

2019年11月07日

新電脳戦記パソレクW~第参話:サブスクリプションの肖像

※今回のパソレクWは、漫画形式でお届けします。
※漫画は、作画のカゼカオル様の承諾をいただいたうえで、Gパソレクのコマを切り抜いて組み合わせたり、台詞を入れ替えたりなどして作成いたしました。承諾してくださったカゼカオル様に感謝です!
※内容に一部間違いがあるかもしれません。ご注意くださいませ。

イラスト提供:カゼカオル 様

1911-p01.jpg

1911-p02.jpg

1911-p03.jpg

1911-p04.jpg

1911-p05.jpg
posted by 裏編 at 12:07| Comment(0) | パソレクW | 更新情報をチェックする

2019年11月04日

古いスマホを有効活用!

 世の中、どんどん新しいスマホが出てきますよね。
 それに合わせて、スマホをどんどん買い替えている人もいるのではないでしょうか?
 さてさて、そして古いスマホはどうしましょうか?
 ゲオなどに売るのも一つの方法ですが、それではちょっと芸がないですし、今まで日々をともにしてきたスマホを売るのも、もったいないというか、名残惜しいというか。
 そこで今回は、役目を終えた古いスマホを活用する方法を、いくつかご紹介しようと思います。

~ドライブレコーダーに!
 スマホには、カメラもあれば、衝撃を感知するセンサーもあります。
 なので、専用のアプリをいれれば、スマホをそのままドライブレコーダーにすることができるのです!
 ここでご紹介するのは、Safety Sightというアプリ。あの損保ジャパン日本興和が提供しているサイトで、事故などで衝撃を感知すると、自動的に録画を開始するだけでなく、前の車に接近したり、前の車が急発進した時に知らせてくれたり、トラブルの解決方法を教えてくれたり、警察や救急などにボタン一つで電話してくれたりなど、役に立つ機能がいっぱいです!
 これがあれば、カーナビを新しく買う必要はありませんね^^

~リモコンに!
 世の中には、スマホをテレビなどのリモコンにできるアプリも存在しています。
 スマホには赤外線通信機能がありますから、これを利用すればリモコンにできるわけですね。
 この類のアプリは色々なものがありますから、探してみて、お気に入りのアプリを見つけましょう! これで、リモコンをなくした時でも大丈夫ですね。
 ただ、当然この機能を使うためには、赤外線通信機能を持っているものでなくてはいけないのでご注意を……と言うところですが、テレビのほうがWifi機能をもっていれば、Wifiを通してリモコン操作できるものもあるので、そちらを試してみるのも一つの手かと思います。

~フォトフレームに!
 思い出の写真を、一枚一枚、表示させてくれるアイテム、フォトフレーム。
 これも、アプリを使えば、簡単にスマホをフォトフレームにすることができます。
 これについても、対応するアプリは色々とありますので、自分がよいと思うものを探してみるといいと思います。
 スマホを再利用したフォトフレームに、思い出の写真を映し出してみませんか?

~スライドパッドに!
 面白いと思ったのがこれ。
 スライドパッドというのは、ノートパソコンについているカーソルを動かすためのデバイス。その上で指を動かすと、それに合わせてカーソルが動く、というものです。
 これも、アプリを使うことで、スマホをそれにすることができます!
 また、アプリの中には、スマホをスライドパッドだけではなくキーボードにしたり、動画のオンオフもできたりするものもあるそうです。何とも便利ですよね!
 ただし、タッチ切れを起こしているものには、この利用法はできませんのでご注意を。

~最後に
 ここまで四つの活用法を紹介してきましたが、いかがでしょうか?
 古いスマホを売ったりするのもいいですが、愛着のあるスマホです。第二の人生ならぬスマホ生を与えてあげて、これからも使えなくなる日が来るまで、一緒に寄り添うのもいいのではないでしょうか?

==========

次の更新は、『新電脳戦記パソレクW』の予定です。お楽しみに!

posted by 裏編 at 09:53| Comment(0) | 特集 | 更新情報をチェックする