明日への断片

ゲーム制作やプログラミング関する記事を中心に更新していこうと思います。

30欠片目:祝!ブログ1か月達成

 こんにちは。部屋に置いてある電波時計がズレて困っているvoidです。

気が付けば、1か月

 このブログを書き始めてからなんと1か月が経過しました!
当初の目標である、「まずは1か月続ける」という目標は無事に達成できました。

この1か月を振り返って

 ほぼブログ初心者の状態でブログを始めたのが1か月前でした。ブログを継続的に書いてみて、毎日ブログを書くのは結構難しいなぁと実感しました。その日に書きたいネタが思い浮かばなかったり、逆に書きたいことが多すぎて書くのに時間がかかってしまう日もありました。



 この1か月で投稿した記事を振り返ってみると、プログラミングの小ネタや、ミッカソン、ただの雑談や、イラストとかを用意して使えそな技術を紹介していたりいろいろやったなぁ思います。

今後に向けて

 今後の目標としては、習慣としてブログを書いていきながら、制作の進捗やイベント参加の感想などを載せていって自己アピールにつなげていけるようなものにしていけたらいいかなぁと思っています。

それでもやっぱり継続力には自信がなく、いつまで続くか不安なところもありますので、続けることを大事にしていこうと思います。


本日は以上です。ではまた!

29欠片目:小学生のプログラミング教室見学してきました

 こんにちは。要らないものでもいつか使うんじゃないかと、取っておいてしまうvoidです。(ゲームでも現実でも)

本日は、小学生にプログラミングを教えている教室のスタッフに応募するため、見学に行ってきたのでその感想を書いていきたいと思います。

小学生すごい...

授業始まる前から何というかもう時代の差を感じました...今どきは小学生低学年の子でもスマホやらタブレットやら普通に使いこなしてるんですね。

授業の内容は、以前このブログでも紹介したMinecraftや、小学生向けのプログラミング向け言語のscratchを使った授業が行われていました。


期待と危機感を感じた

 2020年からは小学校でもプログラミングの授業が必修化されるので、みんながプログラムに興味を持ってくれることは嬉しいのですが、自分より年下の人たちがバリバリプログラムできるようになるんじゃないかという危機感も感じていたりします。

若い世代に負けんように頑張っていきたいなぁと思いました。




本日は短いですが以上で。ではまた!

28欠片目:個人的便利ソフト for Windows

 こんにちは。本日とある面接試験で10分時間を間違えて、一つ前の人の時間に入室してしまうという失態をやらかしたvoidです。緊張しすぎて焦ってました...

本日はオススメの便利系フリーソフト紹介です。

便利なフリーソフト3選

 ゲームを作る時やそれ以外の時でも、快適な作業を提供してくれるフリーソフトを厳選して3つ紹介したいと思います。

EDGE~手軽に画像を用意~

takabosoft.com

 とってもお手軽で使いやすいドット絵ツールです。


ささっと起動、ささっと作って、ささっと保存出来るのでとても使いやすく、
ゲームを作るときに、とりあえず仮の画像を用意したいなーというときによく使っています。

ドット絵上手く打てないので本格的には使っていないですが、アニメーション作成や、レイヤー管理など機能も充実しています。

Everything ~迷子のファイルを瞬時に検索~

forest.watch.impress.co.jp

ファイル名を検索することで、瞬時にそのファイルの場所を見つけ出してくれる優れものです。

たまにフォルダ管理が雑になってしまい、「あのフォルダどこ行ったっけ?」となってしまうことが多々あったのですが、名前さえ覚えていれば一瞬で開くことが出来るので、ファイルやフォルダが迷子になることがなくなりました。

Rapture~画面を一瞬でキャプチャ~

Rapture

友人に教えてもらった、通称:おにぎりと呼ばれる画面キャプチャソフトです。

シンプルで使いやすいながらも、ズーム、透明化、文字を追加するなどの機能もあり、画面上にあるものをいちいち紙にメモする手間を省いてくれるのでとても便利です。

いつもお世話になっています

 これだけ、便利なソフトを無料で使わせてもらっていることに改めて感謝したいと思います。
また便利なソフトを見つけたら、紹介していきたいと思います。

本日は以上。ではまた!

27欠片目:ハンガリアン記法で変数宣言

 こんにちは。本日、咳がうまくできずに息が詰まり、割と身の危険を感じたvoidです。
まだちょっとのどが痛いです...

ハンガリアンて何ガリアン?

 ハンガリアン記法って何ぞ?(この流れ何度目だ)
ハンガーみたいなエイリアンでしょうか?いいえ、違います。

プログラミングで、変数名やクラス名などをを自分で決めるときに、一定のパターンを用いることで、その変数あるいはクラス名を見ただけで、型やスコープを分かりやすくするという書き方です。

因みに、考案者の方がハンガリー出身だったことからハンガリアン記法なのだそうです。

どういう書き方をするのか

基本的には、変数の頭に、決まった文字を付けます。
例えば、グローバル変数には『g_』と付けます。

時間を管理する変数を、グローバルで宣言する場合、

int g_time;   // 時間を管理する変数

のようにします。
すると、このプログラムを第三者が見て、g_timeが使われてる処理を見つけた場合、これはグローバル変数だということが一発で分かります。

逆に言うと、グローバル変数でない変数にg_を付けてしまうと、大変混乱を招くでしょう。

どんなものがあるか

 『ハンガリアン記法』で調べれば一覧のようなものはいくらでも出てくるので、普段使っているものや、使うと便利だと思ったものを紹介したいと思います。

頭に付ける文字 意味
m_ クラスのメンバ変数 m_cnt
p ポインタ型 pScene
s 文字列型 sName

この辺りは、割と良く使うかなぁと思います。

自分は最近までポインタ型を『p_』で書いていたので、ポインタ型のメンバ変数の場合に、見にくいなぁと思いながらも『m_p_scene』みたいに使っていました。最近では、『m_pScene』と書くようにしています。こちらの方がポインタ型メンバ変数であることが分かりやすいと思います。

好き嫌いはあるみたい

 プログラムの書き方は基本的に自由なので、「この書き方は嫌い!」という人もいるようです。
ですが、変数を見ただけで、型の情報やスコープを知れるというメリットが存在するので、知っていて損はないと思いました。

本日は以上!ではまた~

26欠片目:100%成功する雨ごいの話

 こんにちは。「雨男」でも「晴れ男」でもなく、「望まざる天気」男のvoidです。

晴れてほしい!→大雨...
雨降って欲しい!→雲一つない快晴...

前世は一体どれだけの悪行を働いたのでしょうかね...

100%

 タイトルの「100%成功する雨ごいの話」、ご存知の方もいるかもしれませんので早速種明かしをすると、雨が降るまで祈り続けるのです

はい、これで100%です。絶対成功です。なぜなら成功するまで祈っているのですから。


これを、近代的かつゲーム的な例で言うと、
ソーシャルゲームのガチャで、欲しいキャラを絶対に引く』と同じです。


出るまで引く。


っていう考え方と同じですね。そこはかとなく危険な香りがします。


しかし、この考え方は何かを成功させたいときに、非常に大切な考え方だと思います。(※注)課金しようっていうお話ではありません。

途中で諦めてしまっては、成功するものもしなくなってしまいます。
していないことを達成させるというのは不可能に近いです。買っていない宝くじを当選させるようなものです。


何が言いたかったというと

 失敗に恐れず色んな事に挑戦して、成功させるまで続ければいいんじゃないかということです。最後に成功させれば勝ちなのです。

とは言え、社会に出るとこうも言っていられません。ただ成功させるだけでなく、期限や手法など様々な制限を満たす必要があり、失敗すれば他者からの信用を失い、自分の不利益へと繋がります。(こういう文章は書いてるだけで気が重くなります...)

しかし、だからこそです。学生としていられる期間だけでも、色んな事に挑戦していきたいです。





今回は、自分に喝を入れるブログでした。


余談

 余談①
今回のタイトル、『ソーシャルゲームのガチャで欲しいキャラを絶対に引く方法』と
ちょっと迷ったのですが、明らかに詐欺臭を放っていたので没にしました。

 余談②
してないことを達成させるのは不可能に近いと言いましたが、あくまで近いだけです。これは小学生の頃、好きでもない人に告白もしていないのに、フラれたことがあるという(どーしようもない)実体験から導き出した結論です。ごく稀に、原因もなく結果が訪れる理不尽な世の中なのです。

短くなってない...

昨日のブログとはなんだったのか...(執筆時間は多少短くなりましたが)
これも、徐々に成功に持っていけるようにします!ではまた!

25欠片目:取り戻せ‼生活リズム

 こんにちは。最近生活リズムが3時間くらい後ろにズレていて、このままじゃまずいと感じているvoidです...
本日は、その改善方法を模索します。

主な原因

 多分、きっと、恐らく、間違いなく、ほぼ確実にこのブログが影響していると思います。

『このブログ1日分制作過程』
*開始*
「今日は何のこと書こうかな...」


~30分経過~

「これは、面白くないしなぁ...」

~1時間経過~

「よし。これにしよう。」

...

~1時間半経過~

「うーん、ここ見にくいなー。」

「あ、あのことも書いておきたいなー」

~2時間後~
「よしゃー。できたー。寝るか―」
*終了*


長い日は大体こんな感じで2時間かかってしまっています...
多分、最近調子が悪いのは生活リズムが崩れているからですね...


ブログ改善計画

 このままじゃまずいです。何とかブログを書く時間を短くしなくては...
かといって、毎日手を抜いてテキトー済ませていてはブログを継続する意味がないように感じてしまいます。

全体量を減らしつつ、中身が薄くならないようにする...
考えるだけでムズカシそうですね。



しかし一番時間がかかってしまう原因は、あれも書こうこれも書こうとしてしまうことだと思います。
ゲーム制作でも同じことを注意されていたのを思い出しました...


というわけで

 明日からは、内容は今まで通りで、文量減らしてやっていこうと思います。
ではまた!
 

24欠片目:C言語の禁忌、goto文

 こんにちは。最近やりたいゲームが多すぎて困っているvoidです!時間とお金がたくさん欲しいです。

ブログのデザインを変更して見ました。(PC表示)
前回のは少し暗かったかなーと思ったので

goto文とは?

 初めに言っておきますが、gotoは「後藤」ではないので気を付けてください。全国の後藤さんファンの皆様、ごめんなさい。

goto(ゴートゥー)とは英語の go to (~へ行く)そのままの意味です。

goto ラベル名;

と書くことで、ラベルのところに一気に処理を飛ばす機能を持ちます。

ラベルとは

LABEL: // ラベル名の後にコロン

このように書くことが出来ます。


実例

/* goto01.c */

#include <stdio.h>

int main(void)
{
	int a = 0;
	int b = 0;
	int c = 0;

	a = 10;

	goto LABEL;  // LABELまで処理を飛ばす!
	b = 20;    // 飛ばされたのでこの文は処理されない‼

LABEL:         
	c = a + b;   // b = 20;が実行されていないのでbは0のまま!

	printf("c = %d\n", c);

        return 0;

}

このプログラムの実行結果は10となります。

まず初めに、変数a,b,cが0で初期化。
次に、a = 10;が処理され、aの値が10になります。(ここまでは普通です。)

次に!(ここがポイントです)goto LABELによってLABEL:まで飛ばします。そのせいで、b = 20は実行されません。
その結果、a(10) とb(0のまま)の和は10ですね。

なぜ嫌われるのか

goto文はC言語界ではかなりの嫌われ者です。goto文をむやみに使うことは禁止されているそうです。では、一体なぜそんなにも嫌われてしまったのでしょう?

goto ラベル名;

と書くだけで、好きな時に、好きな処理に飛ばすことが出来るんですよ?上記の例のように、処理を飛ばすだけでなく、プログラムの先頭まで戻ったり、色んな事が出来てしまう万能な子なんですよ?

はい。だからC言語では嫌われてしまうのです!


C言語構造化プログラミングと言って、簡単に言うと、①上から順番に、②if文等で分岐、③for,whileでの繰り返し、の3つを使ってプログラムを書くことで、分かりやすく処理を書いていこうというよなものです。


goto文を使ってしまうと処理順序や構造が複雑化してしまいます。そのようなプログラムのコードをスパゲッティコードなんて呼んだりもします。スパゲッティコードは可読性(プログラムの読みやすさ)が低下し、メンテナンス性(手直ししやすさ)が悪くなりますので、回避しなくてはならないのです。




結論:gotoはスパゲッティ職人なので、基本的に使うのは避けましょう。

goto NAPOLI;

じゃ存在価値はないのか?

goto「 (´・ω・`)... 」

そうとは、一概に言い切ることは出来ません。

多重ループを一気に抜ける際はgoto文の方がスマートに書けたりするそうです。


goto「 (`・ω・´)! 」

例)

/* gotoなしで2重ループを脱出 */

int main(void)
{

	int i;
	int j;

	for  (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			if (i == 5 && j == 2)	// iが5でjが2の時にループを抜けたい!
			{
				break;		// 内側のfor文を抜け、外側のループに戻る
			}
		}
		if (i == 5 && j == 2)		// iが5でjが2の時にループを抜けたい(2回目...)
		{
			break;			// 外側のfor文を抜ける
		}
	}
        return 0;
}
/* goto文を使ってループを脱出 */

int main(void)
{

	int i;
	int j;

	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			if (i == 5 && j == 2)	// iが5でjが2の時にループを抜けたい!
			{
				goto END;	// ENDラベル(ループの外)へ一気に脱出!
			}
		}
	}

        END:
        return 0;
}

この2つのプログラムでは、恐らく後者のgoto文を使った方が見やすいと言えるでしょう。

goto「 (^ω^) 」

まぁ、とは言っても基本的に多用は避けて方がいいとは思います。


goto「 (´・ω・`) 」

明日に向かってゴーゴーゴー

今日はこんな感じで。ではまた!

goto TOMORROW;