C++でスロットを作ってみよう
-演算子を使用して足し算と引き算ができるまで-
プログラムを勉強したことが無い人でもとても簡単にゲームを作る基礎をC++を使用して実際に作りながら
プログラミングをしたことがない人に向けて教える感覚で説明していきます。
前回で「変数の宣言」のやり方を説明して所持金が変動できる準備ができています。
今回は入力した値に応じてプログラム内で計算をする機能を追加して、
所持金を増やしたり減ったりするようにしていきます。
入力した値の分所持金を変更させる
前回作った変数 money のように宣言をした変数をプログラム中に中身を書き換えることができます。
電卓のような四則演算など足し算や引き算をすることができ、変数の中身を計算させたりできます。
早速、前回作成したプロジェクトを開いてコードの入力をしていきます。
同じような内容を繰り返し書いていますが、
以下のコードを『掛け金を表示するUI』と書いた部分より下部分を書き加えてください。
printf("l所持金:%dコイン\n", money); printf("========================\n"); //掛け金を表示するUI printf("\n"); printf("掛け金を入力して下さい(数字) 増えます\n"); //掛け金の入力処理 scanf_s("%d", &bet); //画面に表示させるUI printf("\n"); printf("掛け金:%d\n",bet); //足す money = money + bet; //画面に表示させるUI(2回目) printf("\n"); printf("所持金が%dコイン増えました\n", bet); printf("========================\n"); printf("l所持金:%dコイン\n", money); printf("========================\n"); //掛け金を表示するUI printf("\n"); printf("掛け金を入力して下さい(数字) 減ります\n"); //掛け金の入力処理 scanf_s("%d", &bet); //引く money = money - bet; //画面に表示させるUI(3回目) printf("\n"); printf("所持金が%dコイン減りました\n", bet); printf("========================\n"); printf("l所持金:%dコイン\n", money); printf("========================\n"); //今は入力で止めるために使用 printf("\n"); printf("数字を入力すると終了します。"); scanf_s("%d", &bet); return 0; }
上の内容が書けたら早速実行してみます。
コマンドプロンプト上に『掛け金を入力して下さい(数字) 増えます』と表示されるので
自由な数字を入力してエンターを押してみます。
すると画像なような表示になっていて所持金に加算された分の数字と
最初に持っていた所持金が入力した分が増えているものが表示されます。
私は「500」と入力したので
500コイン増えて、所持金が1500コインになりました。
次は入力した数字分減らす処理に入っています。
再び好きな数字を入力してエンターを押すと今度は入力した数字の分所持金が減らされます。
次は「1000」と入力したので、先ほど増えて1500コインになったところから
1000コイン減って、最終的な所持金が500コインになりました。
値の代入と演算子
変数の代入
まずは今回使用したコードで money の値を変更するコードです。
//変数の宣言 int money = 1000; //変数への代入 money = 2000;
前回にも簡単に変数を宣言するときに最初の数字をきめるときに使用した記号 = を使用すると
= の左側の値を右側の値にするという意味があります。
変数を一度宣言した後は変数の型を書く必要がなくなるので宣言以降は変数の名前のみを書いて使用します。
この = を使用して変数の中身を書き換えることを『変数の代入』と呼ばれ、
値を書き換えることを『代入する』と言われます。
代入する値は「1000」や「2000」といった決められた数字ではなく、変数の中身を入れることができます。
例えば以下のようなコードがあります。
int main(){ //変数を作成 int Number1 = 100; //変数に変数を代入 int Number2 = Number1; //代入に使用した変数の値を切り替え Number1 = 400; //各数字を表示させる printf(%d\n,Number1); printf(%d\n,Number2); return 0; }
このコードで変数の Number1 と Number2が作っています。
Number1 は作った時の最初の数字は「100」と決められた数字を代入しています。
一方 Number2 は具体的な数字ではなく作った際の最初の値は変数 Number1 の中の値にするようになっています。
その後4行目で Number1 の数字は「400」に変更されますが、最終的にそれぞれの変数の中に入っている値は
Number1 は「400」、Number2 は「100」となっていて、変数の代入がされるときに入っていた中身の値が入るようになっています。
演算子
C++では計算機のように足し算、引き算、掛け算、割り算など計算が特定の記号を書くことで行えるようになります。この記号のことを『演算子』と言います。
まずはその演算子の種類を少し説明します。
演算子 | 機能 |
+ |
左の数字と右側の数字の足し算をする |
– | 左の数字と右側の数字の引き算をする |
* | 左の数字と右側の数字の掛け算をする |
/ |
左の数字から右側の数字を割る割り算をする |
% | 割り算をしたときの余りの数字の部分を計算する 例えば10÷3=3 と残り1の余りがでるような場合の 1の部分を計算させる |
上の表の演算子を使用して変数を代入する際に以下コードのように使用することができます。
int Number1 = 100 + 200; int Number2 = 200 - 100; int Number3 = 100 * 3; int Number4 = 500 / 100; int Number5 = 10 % 3;
上のようなコードを書くと変数の中身は = の右側に書かれている数字を計算した状態の値がそれぞれの変数の中に代入されます。
そのため、上記のコードの場合は最終的には下の値になっています。
int Number1 = 300; int Number2 = 100; int Number3 = 300; int Number4 = 5; int Number5 = 1;
またこの計算は具体的な数字同士の計算だけではなく、変数と特定の数字の計算や変数同士の計算をすることができます。
int A = 20; int B = 10; int C = A + B; int D = A - B;
上のコードの場合、「A」と「B」は最初に特定の数字が決められています。
「C」の値は「A(20)」から「B(10)」を足した数が設定され、
「D」の値は「A(20)」から「B(10)」を引いた数が設定されるので「C」の中身は30、「D」の中身は10というように右辺の変数の中を計算した後の数字が左辺に代入される動きになります。
変数の中身に値が入っている状態だと以下のようなコードがうまく動作するようになっています。
int money = 1000; money = money + 100; int bet = 100; money = money + bet;
このコードは今回のコマンドプロンプト上で所持金を加算させるのに使用したコードです。
左辺の money 値は計算するときに money 内に入っていた値から100足した数字に更新するように処理がされています。上での説明同様に変数同士の計算も可能になっています。
また上のコードと全く同じ意味で少し短い以下のコードでも全く同じ挙動になります。
int money = 1000; money += 100; int bet = 100; money += bet;
この「+=」 の演算子で左辺の変数から右の値を足した数字に左辺の値を更新するという意味があり、演算子の種類のどれでも同じよう 「-=」、「*=」、「/=」などのようにして使うことができます。
今回のように所持金の額を掛け金の値分加算させるというような処理の場合はとてもシンプルなので「+=」を使用した方がいいかもしれませんが、少し複雑な計算をする場合はこの演算子はおススメしません。
今回はここまで
今回の内容でコマンドプロンプト上で所持金の加算と減算の処理が完成しました。
興味があれば私が書いたコードに乗っ取って演算子を変えて遊んでみると少し勉強になると思います。
今回まででコマンドプロンプトに同じような内容を何度も表示させるためにコード内に同じ文字を入力していて手間がかかるようになっていたので、関数を作ってコードの整理をしていきたいと思います。
ゲーム自体に大きく進歩はしませんが、大事な要素ですので是非確認してください。
前回までの記事は以下から確認できます。