第2章02 変数を使ってレベルから体力などを計算する@イチからゲーム作りで覚えるC言語

イチからゲーム作りで覚えるC言語
連載ページ一覧へ
2章03 変数を使ったレベルや体力など表示する
NEXT : 2章03 変数を使ったレベルや体力など表示する
2章01 レベルから体力を計算する : PREV

この記事でやること

今回はプロジェクト「0020_keisan」で前回作り上げたソースコードを参考に新しいプロジェクト「0025_keisan2」を作成して、変数を使った計算をし、結果を表示するプログラムを作ってみましょう。

この記事はゆる~くC言語でゲームを作りながらプログラミングを学ぶための連載記事です。シリーズものですので記事の一覧はこちらを参照してくださいね。

前回の計算するプログラムで変数を使うことを考える

前回の計算結果を表示するプログラムは下のように作りました。

#include <stdio.h>
int main( void )
{
 printf("村人A:あなたのレベルは「%d」なんですか!\n", 5);
 printf("村人A:レベル「%d」ともなれば、\n", 5);
 printf(" 凡人とはやっぱりちがいますよね。\n");
 printf("村人A:なんかオーラというか、そういうの。\n");
 printf("村人A:レベル「%d」だと体力も「%d」もあるんですね。\n", 5, 5 * 100 );
}

このプログラムはレベル5のプレイヤーに話しかける村人の会話をイメージしています。
プレイヤーの体力は 5 × 100 で、1 レベル上がると体力が 100 上がっていくようなイメージです。

じゃあ、レベルが 6 になったときは、どうプログラムを書いたらよいでしょうか。
数値 5 の部分を 6 用に全部書き換えれば、レベル 6 のプレイヤーに向けた文章となるかと思います。でもプレイヤーのレベル毎に文章を用意して表示して・・・とするのは非常に効率が悪いですね。
このレベルや体力ような、場合によって変わるような数値を変数を使うことで、うまく処理できます。

プレイヤーに話しかける村人(老人)

変数とは

変数は数値だったり文字だったりを入れておくことのできる箱のようなもの、とよく例えられます。

変数をC言語で作るとき、まずは「こういう名前で、これくらいの整数が入る箱をつくるよ」という宣言をします。

メモリ上に変数を入れる箱を作るイメージ

変数 i の宣言(箱をメモリ上に作るイメージ)

宣言をして、整数だったり文字だったりを入れることのできる箱(変数)ができたら、晴れてそこに整数や文字を入れることができます。
変数に文字を入れることを代入とよびます。

変数 i に整数 100 を代入するイメージ

変数 i に整数 100 を代入するイメージ

この数値だったり文字などを記録しておくことのできる箱はどこにできているかというと、PCやスマホなどに組み込んであるメモリの中に作られます。PCやスマホの電源を落としたりすると後に残らないため揮発性(きはつせい)メモリと呼ばれています。
変数はちゃんとハードディスクやSDカード上などにファイルとして保存(セーブ)しておかないと消えてしまうので、ゲームプログラミングをするときも、どの変数をちゃんとディスクやSDカードに保存したか、注意する必要があります。
このあたりのハードウェアの基本的な知識は、後々ポインタについてお話する際にもう少し細かくお話しようと思います。

変数をつかったプログラムを作成する

新しくプロジェクト「0025_keisan2」を作成し、空のソースコード「Keisan2.c」を作成して以下の内容をコピペもしくはキーボードからエディタに入力してみてください。
このソースコードは前のプロジェクトで作成した Keisan.c をベースにいろんな部分を変数を使って書き直し&追加したものです。

#include <stdio.h>
int main( void )
{
 int level;
 int tairyoku;
 float kion;
 level = 5;
 tairyoku = level * 100;
 kion = -60.5f;
 printf("村人A:レベル「%d」だと", level );
 printf("体力も「%d」もあるんじゃのう。\n", tairyoku );
 printf("村人A:ところで今日の気温は「%f」度。\n", kion );
 printf("      雪に埋もれて訓練ですかな。\n");
 level++;
 printf("村人A:おや、いま寒さに耐えて、経験値が上がって\n");
 printf("      レベル「%d」になったようじゃね。\n");
}

実行してみると、下のような結果になります。

村人A:レベル「5」だと体力も「500」もあるんじゃのう。
村人A:ところで今日の気温は「-60.500000」度。
      雪に埋もれて訓練ですかな。
村人A:おや、いま寒さに耐えて、経験値が上がって
      レベル「6」になったようじゃね。

いくつか変更を加えています。

ぷらんくちゃん 雪の中

変数の宣言

ではでは、4行目から見ていきましょう。

 int level;

ここで整数をいれることができる level という名前の変数を宣言しています。

int 変数名;
という書き方で、以降、変数名に整数を代入することができます。
今後、この変数名で整数を扱うよ!ということです。この int で宣言された変数を int型と呼びます。int とは Integerの頭3文字をとっていて、日本語で「整数」という意味です。そのまんまですね。

変数は使う前に上のような書き方でまず宣言する必要があるので、注意しましょう。
その後、6行目で実際に数値「5」を代入しています。

 level = 5;

書き方はこんな感じですね。
変数名 = 変数にいれる値;
あ、変数名、=(イコールの記号)、変数に入れる値、のそれぞれの間はスペースや改行をいれても大丈夫です。あまり離れすぎてると人間の目で読みづらくなってしまうのでおすすめはしませんけど・・。

変数の宣言と初期化を一緒に行う

 int level;
 level = 100;

などのように宣言して、変数の最初の値を代入(初期化)するプログラムは1行にまとめることができます。

 int level = 100;

int 変数名 = 100;

以降、このmain関数の中では「level」は整数の変数として扱うことができます。
また、次の行で、プレイヤー体力を想定した変数 “tairyoku” に level × 100 の結果を代入しています。

 tairyoku = level * 100;

つまりこの式で tairyoku = 5 * 100 = 500 で、500が代入されることになります。

記号「*」(アスタリスクと読む)は掛け算を表しています。こんな風に掛け算以外に、2つの整数を計算する電卓のような処理はプログラムで簡単に書くことができます。

2つの整数の基本的な演算に使う記号と、使った例
記号意味使い方例結果
+足し算5 + 100105
引き算10 – 500-490
*掛け算7 * 321
/割り算の商11 / 33
%割り算の余り11 % 32

数値を 1 足す、1 引く

14行目で、今までにない演算が登場しています。
変数名++
という書き方です。これは変数の中身を 1 プラスするという意味で、インクリメントと呼ばれます。++変数名」という書き方でも同じ結果になります。

 level++;

変数 level は数値「5」から「6」にインクリメントされることになります。
逆に 変数の中身を1 マイナスするという演算
変数名–
のように「–」の記号を使います。これはデクリメントと呼ばれます。
「–変数名」という書き方でも同じ結果になります。

さて、14行目の結果、無事に15行目でレベルが 6 になった文章が表示されているかとおもいます。

1つの整数の演算によく使う記号と使った例
記号意味使い方例結果
++1プラスint level = 5;
++level;
6
1マイナスint hitpoint = 100;
hitpoint–;
99

今回は非常によく使われる変数と計算について、例を使ってお話しました。

あとがき

今回はここまで。お疲れ様です。

イチからゲーム作りで覚えるC言語
連載ページ一覧へ
2章03 変数を使ったレベルや体力など表示する
NEXT : 2章03 変数を使ったレベルや体力など表示する
2章01 レベルから体力を計算する : PREV

非常に参考になったサイトさまや、参考文献など

ページの更新履歴

更新日更新内容
更新なし