見出し画像

一緒にテトリス作ってみませんか?(4)

こんにちは。
すみません、タイトルを変えました(^^;。
一人で作るより、やっぱり誰かと一緒の方が楽しいのでw。どなたか一緒に作ってみてもらえないでしょうか??


今日は昨日の続きで、MainPage.xaml の <Button> についてです。ボタンを押したときの動作を見てみましょう。

MainPage.xaml の一部

「Clicked="OnCounterClicked"」となっているので、ボタンを押すと OnCounterClicked という部分が実行されます。

昨日の解説で、この <Button> は class MainPage(正確には class MauiTetris.MainPage) に含まれていると分かるので、class MainPage の中にある OnCounterClicked を探しましょう。

MainPage.xaml.cs の一部

まず、下のコードを見て、MainPage には count という「整数が記録できる部品」が備わっていることを知っておいてください。
int は、integer(整数)という単語から来ています。
(private や void などは後日解説しますので、波かっこ {} の中身だけを見てください。)

MainPage の中身を作っていくときに、上のように「int count;」と書くと、count は、MainPage の中で使える「整数が記録できる部品」となります。このような部品のことを「メンバ変数」と呼びます。
今は「int count = 0;」と書いてあるので、count には最初に 0 が記録されます。

次に、OnCounterClicked の中身を見てみると count++ となっていますが、これは「count に記録されている値を1増やす」という命令です。count に 0 が記録されていたとしたら、count は 1 に書き換えられます。

$"あいう {count} かきく" とあった場合、count が 1 のときは "あいう 1 かきく" となり、count が 2 のときは "あいう 2 かきく" となります。
この便利機能のことを string interpolation と言います。

それで、count が 1 であれば、CounterBtn.Text は "Clicked 1 time" に設定され、count が 1 でなければ(2 以上であれば)、"… times" に設定されると分かると思います。(if 文は分かりやすいと思いますので、説明を省略させてくださいね。)

CounterBtn は <Button> を指すものであったので、ボタンに表示されるテキストが変更される、という流れになります。

最後の SemanticScreenReader は、単なるテキストの読み上げ機能ですので気にしなくて大丈夫です。


せっかくなので、ボタンを押したときの動作も少し変更してみましょう。

count += 2; は、count に記録されている値を2増やします。
(count = count + 2; と同じ動作になります。)

そのため、ボタンに表示される値が2ずつ増えるようになります。


Tips 1

MainPage の中に、count というメンバ変数があることを紹介しましたが、頭の中ではクラブチームみたいなものを想像すると良いと思います。
プログラムは、いろいろと部品に分けて開発していくのですが、それぞれの役割があるチームがあるみたいなものだ、と想像します。
MainPage というチームの中には、整数を記録する係の count がいる、という感じです。
count は MainPage の member として見るので、count を メンバ変数 と言います。


Tips 2

C# などの C系のプログラムを見ていると、「;(セミコロン)」がたくさんありますよね。
昔はコンピュータのディスプレイのサイズが小さくて、1行に書ける文字がたった32文字しかない時代とかあったんですよ。
そのため、下の図のように、1つの命令を2行や3行に分けて書くことも多かったのです。

そうすると、どこまでが1つの命令なのか分からなくなるので、1つの命令を書き終える毎に「;」を書いて、ここまでが1つの命令だよ、と記していたのです。
今の時代となっては、行末にいちいち「;」を書くのめんどうだな、となってしまうのですが、「;」は行末じゃなくて、命令の区切りだったのです。
時代の流れとともに「;」の意義が感じられなくなってしまった、という感じでしょうか?面白いものですね。
以下のように書いてもプログラムは正しく動きますので、よかったら試してみてくださいね。


次回は、図形を描画することを調べようと思っています。
いろいろと忙しいこともあり、少しずつしか調べることができず、ほんとはもっと時間をがばっと使って調べたいなぁ、とウズウズしています。
それでは、またよろしくお願いします。


この記事が気に入ったらサポートをしてみませんか?