Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2018年6月17日に更新

第2章02 変数を使ってレベルから体力などを計算する

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

この記事でやること

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

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

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

 
Keisan.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 をベースにいろんな部分を変数を使って書き直し&追加したものです。

 
Keisan2.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", level);
}

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

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

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

変数の宣言 ぷらんくちゃん 雪の中

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

 
Keisan.c
 int level;

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

int 変数名; という書き方で、以降、変数名に整数を代入することができます。

今後、この変数名に整数を代入したり、取り出したり出来るようにするよ!

ということです。この int で宣言された変数を int型と呼びます。

int とは

Integerの頭3文字をとっていて、日本語で「整数」という意味です。そのまんまですね。

変数は 使う前に上のような書き方でまず宣言する必要がある ので、注意しましょう。

その後、6行目で実際に数値「5」を代入しています。

 
Keisan.c
level = 5;

書き方はこんな感じですね。

変数名 = 変数にいれる値;

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

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

変数の宣言と初期化
 int level;
 level = 100;

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

変数の宣言と初期化
 int level = 100;

int 変数名 = 整数 という書き方ですね。

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

 
Keisan.c
 tairyoku = level * 100;

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

2つの整数の基本的な演算に使う記号と、使った例

記号 意味
+ 足し算
引き算
* 掛け算
/ 割り算の商
% 割り算の余り

数値を 1 足す、1 引く

Keisan2.c の14行目で、今までにない演算が登場しています。

変数名++ という書き方です。 これは変数の中身を 1 プラスするという意味で、 インクリメントと呼ばれます。

++変数名」という書き方でも同じ結果になります。

 
Keisan.c
level++;

変数 level は数値「5」から「6」にインクリメントされることになります。

逆に 変数の中身を1 マイナスするという演算

変数名–- のように「–」の記号を使います。これは デクリメントと呼ばれます。 「-–変数名」という書き方でも同じ結果になります。

1つの整数の演算によく使う記号と使った例

記号 意味 使い方例 結果
++ 1プラス int level = 5; ++level; 6
-— 1マイナス int hitpoint = 100; hitpoint-–; 99

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

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

 
Keisan.c
 printf("村人A:おや、いま寒さに耐えて、経験値が上がって\n");
 printf("      レベル「%d」になったようじゃね。\n", level);

ここで、16行目の「%d」に整数の変数 level の中身が表示されたかとおもいます。

最初 level は 5 で、 level++ が演算されて 6 となっていますので、最終的に下のように表示されていれば想定通りです!

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

あとがき

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

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

ページの更新履歴

更新日 更新内容
2018/8/27 ソースコードが一部誤っていたため、修正(羽田様、ご指摘ありがとうございます!!) あわせて、末尾14行目~の解説を少し追記。

コメント

羽田 哲夫 2018年8月25日 12:30 PM

「第2章02 変数を使ってレベルから体力などを計算する」のプログラムに記載されている最後のprintf文に「level」変数の記載が抜けているようです。
本当に為になり、毎日ワクワクしながらサイトに従いVisual Studio Community 2017 にプログラムを入力しています。

以上

あまじ 2018年8月27日 11:24 PM

羽田様、貴重なコメント&ご指摘ありがとうございます!最後の printf 文の「level」変数記載が抜けている件、修正させていただきました。楽しく読んでいただだけているようで、とてもとてもうれしいです。記事について、後半のイラストや記載が薄いものもある
ので、なるべく充実させるように頑張ろうと思います。また気軽にご指摘、コメントいただけるとうれしく思います。(連載記事の中でリンク切れになっちゃっている箇所がありますが、すぐに修正する予定ですので、少々お待ちいただければと思います。)

イチからゲーム作りで覚えるC言語
第2章01 レベルから体力を計算する : PREV
NEXT : 第2章03 変数を使ったレベルや体力など表示する :
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

ゲーム等で使えるつなぎ目のないループするテクスチャ画像の作り方

#ツール#ゲームプログラミング✎ 2021-01-24
ゲームなどで使えるループ画像、パターンテクスチャのツール、手動での作り方をまとめ
広告領域
追従 広告領域
目次
第2章02 変数を使ってレベルから体力などを計算する
第2章02 変数を使ってレベルから体力などを計算する
この記事でやること
この記事でやること
前回の計算するプログラムで変数を使うことを考える
前回の計算するプログラムで変数を使うことを考える
変数をつかったプログラムを作成する
変数をつかったプログラムを作成する
int とは
int とは
変数の宣言と初期化を一緒に行う
変数の宣言と初期化を一緒に行う
数値を 1 足す、1 引く
数値を 1 足す、1 引く
あとがき
あとがき
非常に参考になったサイトさまや、参考文献など
非常に参考になったサイトさまや、参考文献など
ページの更新履歴
ページの更新履歴
コメント
コメント
Nodachisoft © 2020