C++でスロットを作ってみよう
-コマンドプロンプトに入力と所持金の変動まで-
プログラムを勉強したことが無い人でもとても簡単にゲームを作る基礎をC++を使用して実際に作りながら
プログラミングをしたことがない人に向けて教える感覚で説明していきます。
前回の記事で文字をコマンドプロンプトに表示するまでを作ったので、
今回で所持金が入力した値だけ増えたり下がったりする機能を追加していきたいと思います。
保存したプロジェクトをVisual Studioで開く・再開する
前回の記事でプロジェクトを保存してVisual Studioを閉じている人に向けて
簡単に保存したプロジェクトを立ち上げる方法を説明します。
まずはVisual Studioを起動させます。
Visual Studioの画面が開くと画面左上から
「ファイル」>「開く」>「プロジェクト/ソリューション」を選択すると
開くファイルを選ぶ画面が開かれます。
前回にプロジェクトを作成した際に決めた場所まで移動してください。
その場所に新しくフォルダが作成されています。
フォルダの中身は画像の様になっているので
ファイルの名前の最後が「.sln」になっているものを選択して、「開く」をクリックします。
私の場合は「SlotMachine.sln」を選択して開くと
前回プロジェクトを保存した時の状態の画面が開きます。
もしくはVisual Studioを開かずに「SlotMachine.sln」をダブルクリックしても
同じようにVisual Studioが起動して保存時の画面が開かれます。
所持金の変動と入力をできるようにする
前回は printf() を使用して中に書いた文字が表示させるようにしましたが、
今のままではプログラムが動いている時に所持金が変動せず
テキストで書いた内容をそのまま表示させている状態になっています。
まずは以下のコードをint main()の中に書いてください。
int main() { int money = 1000; //<追加する内容 //画面に表示させるUI printf("\n"); printf("スロットゲーム\n"); printf("========================\n"); printf("l所持金:%dコイン\n", money); //<書き換える内容 printf("========================\n"); return 0; }
これが書けたら return 0 の行にブレークポイントを付けて実行してみましょう。
前回と同様の文字がコマンドプロンプトに表示されていればOKです。
更に続けて printf() と return 0 の間に以下のコードを入力して下さい。
printf("========================\n"); scanf_s("%d" &money); printf("\n"); printf("スロットゲーム\n"); printf("========================\n"); printf("l所持金:%dコイン\n", money); printf("========================\n"); scanf_s("%d" &money); return 0; }
この状態で今度はブレークポイントを外した状態で実行をしてください。
また同じ全く同じようなコマンドプロンプトの画面が開かれると思いますが、
今回はコマンドプロンプトの画面がすぐに閉じないような状態になっています。
この画面でキーボードの好きな文字を自由に押してみてください。
するとコマンドプロンプト内に入力した内容が表示されています。
scanf_s() を使った箇所で一度プログラムが入力を受け付けている状態になっているので、
好きな文字を書いてエンターを押すまでの間は文字を次のコードへ移動しない状態です。
好きな文字が書ける状態ですが、
今回は所持金を変更させる為のコードを書いているので、自由な数字を入力してからエンターを押して下さい。
すると所持金に表示されている数字が入力した値になったものが表示されていて、
所持金を更新できる状態になっています。
終了する前に再び所持金を入力するコードを書いたのでもう一度適当な数字を入力してエンターを押すと
プログラムが終了します。
今回使用したコード
今回使用したプログラムをコードを簡単に解説します。
変数
int money = 1000;
これはどのプログラムを使用しても必ず使われているもので
プロジェクト中に中身の値が変えられるもので「変数」と呼ばれます。
変数は色々な型があり、使いたい内容に応じて使い分けが必要です。
型は小数点を使わない整数を扱うものや「はい」か「いいえ」しか入らないものなどがあり、
自分で作った特別な型など様々な種類があります。
C++を扱う際によく使う基本的な例として以下の種類があります。
変数の種類
- int : 小数点を含まない整数、-1とか負の数字も入ります
- float : 小数点を含めた数字の値が入ります。
- double : floatと同じく小数点を含めた数字、ただfloatよりもかなり正確にきっちりな数字
- bool : 「はい」か「いいえ」で表せる内容、正確には「True」か「False」の2種類が入る
- char : 「A」とか「B」とか文字が入る型
これらの変数をプログラムに使用する為には「変数の宣言」をする必要があります。
使い方は使いたい型を書いて半角スペースを書いた後に自由な名前を書くと
それ以降にその名前をコードに書くと名前の中に入っている値がプログラム中に使えるようになります。
この名前はなんでもいいのですが中の値の用途が分かるようにしておくと整理しやすくなります。
今回の場合は小数点を含まない整数である所持金を変動できる数字にするため、
整数の型である int を使い、名前は money としています。
変数の初期化
int money = 1000;
上のコードでmoneyの中身を1000にするという意味があり、
変数を作る時に = の後に入れたい値を書くと作った時の最初の値が設定できるようになっています。
ちなみに変数の宣言をするより前にその名前を使用した場合は
その名前はまだ作られていない扱いになるのでエラーが発生します。
例えば以下のようなコードを書いてみます。
int main() { int A; A = 100; B = 200; int B; return 0; }
この場合はエラーが発生して画像のようにVisual Studioの右下のあたりで『Bは定義されていない識別子です。』と表示され、どのファイルの何行目に問題があるかを指摘されます。
今回の場合は10行目のBはまだ作られていないのでプログラムはBが何か分からない状態になるので
順序はしっかりしておく必要があります。
printf() で変数の中身を表示
今回変数をprintf()で使用するのに以下のコードを使用しています。
int money = 1000; printf("%d",money);
この 『”%d”』 の部分は変数の内容が入るという意味になっていて、
コンマの後に変数の名前を書くことでその名前の中に入っている値が表示されるようになります。
この %d は型が int が使われている場合に使用するもので変数の型に応じて %d の部分の内容が変わります。
型 | “コードに書く内容” |
int | %d |
float | %f |
char | %c |
間違った型を使用していた場合は中身の数字が正しく表示されなくなるので
使うときの変数の型とそれに合った内容を書き込んでください。
今回の場合は整数のみを使用しているので int 型用のコード “%d” を書いています。
入力を受け付ける
変数が宣言してから次のコードを書くと入力を受け付けるようになります。
scanf_s("%d",&int);
このコードを使用するとコンマの後の変数の内容を入力した値に変わるようになります。
このコードも printf() で説明した時と同様に型に応じて “%d” の部分を変えないといけません。
入力した際に型が違う値が入力された場合にエラーが発生したりするので、
入力の際も注意しておく必要があります。
scanf_s() の場合はコンマの後に変数の名前を書くのですが、名前の前に『&』が必要です。
プログラムを今まで触ったことがない人はあまり気にする必要はない説明かもしれませんが、
この scanf_s() のコマンドでコンマの右側に書かれているのは変数が保存されている場所を表すものが入るようになっています。
C++において『&』は中身という意味があり、実際はその場所の中身のみを変えたいので変数の前に『&』が書かれるようになっています。
スロットゲーム用に改良
スロットゲーム用にコードを書き換えるために最終的に以下のようなコードになりました。
#include <stdio.h>
int main() { //所持金用の変数 int money = 1000; //掛け金用の変数 int bet = 0; //画面に表示させるUI printf("\n"); printf("スロットゲーム\n"); printf("========================\n"); printf("l所持金:%dコイン\n", money); printf("========================\n"); //掛け金を表示するUI printf("\n"); printf("掛け金を入力して下さい(数字)\n"); //掛け金の入力処理 scanf_s("%d", &bet); //画面に表示させるUI printf("\n"); printf("掛け金:%d\n",bet); //今は入力で止めるために使用 printf("\n"); printf("数字を入力すると終了します。\n"); scanf_s("%d", &bet); return 0; }
このコードで変数 bet と変数 money の2種類の変数ができて、
入力した値を保存するようの変数 bet と現在の所持金を表す money と区別させています。
この後にスロットで当たりが出た場合は bet に応じた額を money に追加するという機能を準備しています。
実行して最終的に画像のように表示されていればOKです。
今回はここまで
今回の内容の変数の宣言はどのプログラムにとっても必ず使用する大事な要素なので覚えておくべき要素です。
次回は演算処理で所持金を掛け金に応じて足したり減らしたりする機能を追加していきます。
前回の内容も以下から確認してください。