まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
関数の中でローカル変数を宣言すると関数を呼び出す度に初期化されるので
値を保持したい時には使えずに、グローバル変数を使っていました。
例えばこんな感じ
************************************************************************
test(){
int i;
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
コレを実行しても、test関数を呼び出す度にiが初期化されてしまうので変数iはずっと1のままです。
なので、今までだとiをグローバル変数として宣言して対応していました。
************************************************************************
int i;
test(){
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
変数iをグローバル変数とする事で、変数iの値はプラスされつづけます。
しかし、ゲーム作成の事を考えるとグローバル変数を沢山使うのは得策ではありません。
で、何か良い方法は無いものかと思っていたのですが、良い方法がありました^^
静的変数(スタティック変数)を使う方法で、変数の宣言の時にstaticと書くだけ。
こうする事で、ローカル変数として宣言しても値が消える事はありません。
************************************************************************
test(){
static int i;
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
こんな感じでstatic int i;と宣言すれば、関数内で宣言した変数でも値はプラスされ続けます。
この方法を使えばグローバル変数を使う必要がないので、プログラムがわかりやすくなりますね。
ただ、静的変数として宣言すると値は保持されますが、他の関数からは参照出来ないみたいなので
その辺の扱いには注意が必要そうです。
値を保持したい時には使えずに、グローバル変数を使っていました。
例えばこんな感じ
************************************************************************
test(){
int i;
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
コレを実行しても、test関数を呼び出す度にiが初期化されてしまうので変数iはずっと1のままです。
なので、今までだとiをグローバル変数として宣言して対応していました。
************************************************************************
int i;
test(){
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
変数iをグローバル変数とする事で、変数iの値はプラスされつづけます。
しかし、ゲーム作成の事を考えるとグローバル変数を沢山使うのは得策ではありません。
で、何か良い方法は無いものかと思っていたのですが、良い方法がありました^^
静的変数(スタティック変数)を使う方法で、変数の宣言の時にstaticと書くだけ。
こうする事で、ローカル変数として宣言しても値が消える事はありません。
************************************************************************
test(){
static int i;
i++;
printf( "%d\n", i );
}
int main(){
while(1){
test();
}
}
************************************************************************
こんな感じでstatic int i;と宣言すれば、関数内で宣言した変数でも値はプラスされ続けます。
この方法を使えばグローバル変数を使う必要がないので、プログラムがわかりやすくなりますね。
ただ、静的変数として宣言すると値は保持されますが、他の関数からは参照出来ないみたいなので
その辺の扱いには注意が必要そうです。
PR
この記事にコメントする
カレンダー
03 | 2025/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事