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

第2章03 変数を使ったレベルや体力など表示する

イチからゲーム作りで覚えるC言語
第2章02 変数を使ってレベルから体力などを計算する : PREV
NEXT : 第2章04 char型変数を使って1文字表示して計算する :

この記事でやること

今回はプロジェクト「0025_keisan」で前回作り上げたソースコードを流用して、引き続き変数を使った計算をし、結果を表示するプログラムを作ってみましょう。

前回の変数を使用したプログラム(続き)

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

 
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);
}

前回は 8 行目の、tairyoku 変数に数値を代入するところまで説明しましたが、6行目は飛ばしてました。

浮動小数点数型を使う

6行目で、float という文を使っています。

これは小数を扱う変数を宣言できます。 この float で宣言される変数を float型 と呼びます。

小数といっても、PC上でうまく小数を扱うために、効率が良く、誤差が小さくなるような 浮動小数点数ふどうしょうすうてんすう)とよばれる形式に従って管理&計算されます。長いし読み方むずかしいですね。

 
Keisan2.c
 float kion;

これで kion に小数を代入できるようになりました。 その後、9行目で実際に小数の値を代入します。

 
Keisan2.c
 kion = -60.5f;

気温を表す変数 kion にマイナス 60.5 度を設定しました。極寒です。

ここで、数値の後に「f」という一文字がついていますね。

これは浮動小数点定数(floating-constant)と呼ばれ、「F」や「f」を数値の末尾につけると、それは float の変数に代入できる値(型)の数値であることを示し、浮動小数点値(小数)を表すのに使います。

前回は int(整数)、今回は float(浮動小数点)を扱う例を紹介しました。

この2つ以外にもいくつかの基本となる型(基本型)があるので一覧で記載しておきます。

どの型もコードを読んでると出てきます。自分でプログラムを書いていれば、そのうち自然と覚えちゃうと思います。

C言語で使えるイロイロな基本型の一部

使い方
char 文字を扱う時 値の範囲: -128 ~ 127 chat *message="わたし体力ぜろ。"; ※この↑の書き方とイミは次の記事で。
short int 型より小さな整数を扱える 値の範囲: -32,768 ~ 32,767 short moteruyakusouno_kazu=10;
int 整数を扱える 値の範囲: -2,147,483,648 ~ 2,147,483,647 int hitpoint = 100;
long int 型より大きな整数を扱える 値の範囲: -2,147,483,648 ~ 2,147,483,647 long exp = 12345L;
float 小数を扱える 値の範囲:±10~ ±10 float powerup1 = 1.5F; float powerup2 = 1.125f;
double float 型より大きな小数を扱える 値の範囲:±10~ ±10 double kyori = 200000000.432;
bool いろんなフラグ管理に使える。 値の範囲:0(false) か 1(true) を扱える bool seikai = true; ※この↑の書き方とイミは次の記事で。

上に書いた、それぞれの型がもてる値の範囲については、Windows以外のPCでは違うことがあります。上にかいた値の範囲は標準の Visual Studio 2017 でC言語を使った場合で書いています。

ワンポイント

例えば「AVR」とか「PIC」なんていう有名なマイコンがありますが、そういった低スペック上で動くゲームを作ろう! とおもった場合、上の範囲でもてる値も小さく設定されていたりします。 例:int 型で扱える値の範囲が「-32,768 ~ 32,767」とか。

ゲーム作りでの基本型の使い分け注意点

char、short、int、long はどれも整数を扱うことができます。

じゃあ、どれを使ったらよいのでしょうか。これはケースバイケースとなります。

それぞれの型が取り扱える整数の幅は基本的に char < short ≦ int ≦ long だし、全部いちばん大きな数が扱える long 型でプログラム書けばいいじゃん!って思われた方もいるかもです。

扱える数値が大きければそれでも動くと思いますが、一般には int 型が使える数値の範囲で済む処理は long 型ではなく int 型で書いたほうが早く処理できる、とか、使用するメモリの量も少なく済むなどの利点があります。

通常、同じ整数を扱う型では、扱える値が小さいほうが、使うメモリの量は小さいです。

なのでメモリの使用量も char < short ≦ int ≦ long ってことになります。

ワンポイント

例えば、 0~100 の数値を大量に記憶しておきたい場合どの型でもOKです。 でも「大量に」という目的を考えると、char のほうが long よりもメモリ使用量が少ないため、こちらを使ったほうが良い、という話になります。 でも、ちゃんとメモリ量や数値を意識するなら、より正確に定義されている型を使うほうが良いです。 標準のchar型、int型などはコンパイルする環境によって使うメモリ量や扱える数値の幅が変わってしまう可能性があるからです。 簡単に書くと、0~100の整数を扱うという目的だったら、 char 型よりも uint8_t型(0~255を扱うことのできる型)を使ったほうが良いとのこと。 これを使うと、char と比べて、使うメモリの量がしっかり決まっているということ、 数値の幅が 0~255 で固定(コンパイルする環境によって変わらない)などの利点があります。 特に 3D 系の処理では double 型より float 型での計算が一般的だったり、計算処理の速度が異なることが多いです。(このあたりは対象にするPCとかスマホのGPU(グラフィック演算装置)によって変わってきますけど・・)

とりあえず、プログラムを組みながらそれぞれの型の特徴を覚えつつ、プログラムの速度とか、メモリとかを考えるときに、改めて意識すればよいと思っています。

あとがき

今回はここまで。おつかれさまです。

次回はそれぞれの型を printf で表示する時の変換指定子についてお話したいと思います。 (すでに整数を表示する %d についてはこのシリーズ前の記事でお話しましたー。)

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

ページの更新履歴

更新日 更新内容
更新なし
イチからゲーム作りで覚えるC言語
第2章02 変数を使ってレベルから体力などを計算する : PREV
NEXT : 第2章04 char型変数を使って1文字表示して計算する :
 
 
送信しました!

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

なんかエラーでした

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

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

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

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

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

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

#ツール#ゲームプログラミング✎ 2021-01-24
ゲームなどで使えるループ画像、パターンテクスチャのツール、手動での作り方をまとめ
広告領域
追従 広告領域
目次
第2章03 変数を使ったレベルや体力など表示する
第2章03 変数を使ったレベルや体力など表示する
この記事でやること
この記事でやること
前回の変数を使用したプログラム(続き)
前回の変数を使用したプログラム(続き)
浮動小数点数型を使う
浮動小数点数型を使う
ゲーム作りでの基本型の使い分け注意点
ゲーム作りでの基本型の使い分け注意点
あとがき
あとがき
非常に参考になったサイトさまや、参考文献など
非常に参考になったサイトさまや、参考文献など
ページの更新履歴
ページの更新履歴
Nodachisoft © 2020