忍者ブログ
Profile
HN:gp-hss

職業:高校生

趣味:3DCG

言語:C全般

環境:VC++ 2008 EE

3DCG:Softimage Mod Tool

自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。

Began study since 2009/8/21

Latest CM
[06/28 soulmorning]
Latest TB
(02/25)
1  2  3  4  5  6  7 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

author : gp-hss ×
えぇ~暇なんで昨日のすごし方でも話してみようと思います。

昨日は建国記念日ということで学校は休みだったんで9時ぐらいに起床。
だいたい普通の平日は 23:30 ぐらいに寝てるんですけど、明日が休日・祝日なら深夜 1:30 くらいに寝てる。
起きたならばさっそく眠気覚ましに顔を洗う。
中学のときとか小学生だったときは、どんだけ遅く寝ても平日以外は何故か必ず6時ごろには目が覚めてたのに。
やっぱり自由に遊べる日が休日しかなかったから、遊びたいという気持ちが強かったためだろうか。
ちなみに小3から中3までの間ずっと硬式のテニスをしてました。
「ヒカルの碁」に親が影響されて一瞬囲碁を習わされそうになったが、なんとか回避した。
ならテニスは「テニスの王子様」の影響で?と言われそうだが、今となってはもはや「わからない」としか言えない。
なぜテニスをやめたかというとやはり受験だろうな。

そういえば中2のころは科学に興味があったんだ。
P : S = 2 : 8 ぐらいの割合で(P : S = プログラミング : 科学)
特に宇宙とか物理には関心が強かったなぁ~。
でも、ふと将来科学者になって科学を研究していくほどの興味と探究心があるかと言われると、そうでもなかったわけだ。
そこでとりあえず将来の目標を失ったわけだけど、実は僕は中2のころに Visual Basic をやってたことがあるんだ(親がNTTのプログラマーだった影響で)
僕の科学への興味とプログラミングへの興味を両方活用できることはないかなぁ~と考えていたところ、ゲームにはなになら物理シュミレーションというものがあること知り、何かひらめきというか体がどんどん熱くなってきて「これしかない!」という感じでプログラミングにのめり込むことになったわけです。

ゲームには C , C++ が使われているので今となっては Basic ではなく C を勉強しているのですが、Basic 時代のときは中学で習う公式なんかを利用した電卓を作ってた。
ざっと 2000 行くらいのプログラミングだったし、しかも自分でウィンドウを作って、ボタンも配置して、今つくっているのよりはるかに実用的なものを作ってた。
やるなぁ~オレと思った(自画自賛w)
ちなみに今も物理シュミレーションを作れることを目標にしてるの?と聞かれると、答えは「いいえ」。
今はゲームを作ること自体が楽しい。
ゲームの設定だとかバトルシステムだとかを考えてると時間を忘れる。
シナリオとか音楽の才能は皆無だけど。
だから一瞬ゲームデザイナー(でいいよね?)にも興味がわいたけどすぐにおさまった。
なぜならゲームの設定だとかシステムなんかは興味があればだれでも「考える」ことはできるけど、それを「実現する」(「作る」)ことはできないなと思ったからだ。
やっぱり自分で考えたゲームは自分で作りたかったのだ。
だから今はご存知のとおりゲーム作りに没頭してる(もちろんプログラミングの勉強にも)
でもゲームプログラマーになりたいなら覚えておいたほうがいいものはいっぱいあるらしいからね。
単にプログラミングの勉強だけしててもだめ。
それを軸にしてどんどん枝を生やしていかないと。

ていうか今からでもこの記事のタイトルと主旨を変更しろと言いたいぐらい脱線してしまってるが、ここで本来の路線に戻しておこう。
で、どこまで話したっけ?
「まだ起きたばかりだよ!」
あぁ、まだそこか。
とりあえず起床したら朝ごはん。
ご飯といっても食パンだけど、朝は何か食べないと脳が回らないからね。
んで、昨日の昨日にやけに運動したせいか(「ビリーズ・ブート・キャンプ」を1時間)ものすごく眠かったので、そのまま寝た。
昼の12時ごろに目が覚めて PC を適当にいじってゲームを3時まで付き合わされた。
そしてまた眠かったので4時まで寝た。
これからバイトなんで仕方がなく起きて、軽食をとって準備していざ行こうとしたら外は嵐だった。
もうもうと降る雨に強烈な風。
バイト先は歩いて10分くらいのところだったが、けっこうきつかった。
とりあえず傘が粉砕されないようにするだけでせいいっぱいだった。
風が吹いてくるほうに傘を向けないといけないから、雨の降る角度だとかで読もうとしたが無謀だった。
が、なんとか無事に到着。
飲食店なんで案の定あまり忙しくなかった(祝日なのにね)
4時間半ぐらい勤務して帰路にたったが、クソ寒かった。
行きとはくらべものにならないくらい。
幸い雨は降ってなかったが、気温がものすごく下がっていて、そこにまだ健在の強烈な風が迫ってくるので走って帰った。
22時くらいに家に着いて、お風呂へ直行。
冷えた体に40度のお湯は体感温度がやばかったw
とりあえず35度くらいから徐々に体を温めていくことに。
お風呂をあがった後は今つくっているゲームの開発を進めて深夜の1時半ごろに寝た。
案の定朝は寝坊しかけた。

とまぁこんな感じなんですけどみんなはどんな感じでしょうか?
まぁお互いがんばりましょう。
ではまた今度。

拍手[1回]

PR
author : gp-hss ×

f1611eca(.zip)

今回はミニマップの追加とマップ下にちょっとした説明を加えておきました。
ちなみによく見ないとわからないかもしれませんがカーソルの可視性をオフにしてます。
(戦闘中のコメント表示ではカーソルをオンにしてます。)

これだけしか追加していないので .5 にしてあります。
今回追加した説明の中にも書いてあるとおり、スペースキーでメニューを開けるようにしたいと思っています。
過去の記事でもいっていますが、このゲームではENTER , スペース , 矢印しか使わないので全てはこれらのキーだけでどうにかできるので、どう操作していいかわからないときは適当に試してみてください。
まぁだいたいわかると思いますが。

そういえば僕のコマンドプロンプトのウィンドウのサイズは 80×25 なのですが、皆さんはどうなんでしょうか?
このサイズを想定してゲームを作っているので、ウィンドウのサイズが大きい人には、ゲームのマップなどのサイズが小さく感じるかもしれません。
あと画面のサイズは必ず 80×25 以上にしてもらっていいでしょうか?
でないとマップなどを描画するときに次の行にも介入してしまう可能性がありますので、どうか上記のサイズ以上でお願いします。
ちなみに実質的な対比は 80×50 です。
縦 1 に対して横は 2 ですので。
過去の記事にも書いてあるのですが、横は 1 バイト分の量ずつカーソルが動かせるのですが、縦には 2 バイト分の量ずつしか動かせません。
というのも、 1 バイト文字じたいのサイズが 1×2 ありますので仕方がないですね。

ではまた今度。

拍手[2回]

author : gp-hss ×

RPG(.zip)

今回は敵の配置と戦闘プログラムとの連結を実現しました。
現在のところは2つのブロックにしか敵は配置していませんが、完成版ではバランスをみながらじゃんじゃん配置していきたいと思っています。

あとはミニマップを追加し、オープニング画面をつくったりその他諸々だけです。
これらはそこまで時間をくわずにつくれると思いますので、あとはマップをどんどんつくっていくだけです。
なんとかで 21 日までには完成できるかな。

ちなみになんで 21 日までなのかといいますと、じつは C を勉強し始めてちょうど半年目なのです。
半年目までにはなにかしら作ってみたいなと思っていたので、間に合いそうでホッとしてます。
(過去の記事では 15 日などといってしまってますが、実際には 21 日までだったんでたぶん間に合いますよね。まぁ 15 日まででもギリで間に合いそうだけど・・・。)

敵の配置などの情報については、専用の配列を使ってブロック毎にデータを読み込み、指定された座標へ配置します。
そして、予め作っておいた MoveEnemy() 関数をつかって敵を動かしています。
ちなみに過去に公開したものとは若干引数だとか関数本体だとかを修正しています。
あと敵が若干障害物を消したりしてますが、どうにも気が荒く猪突猛進的な敵なんで壊してしまうんですよね~。
なんていう環境破壊効果という口実のもとそのままにしてますが、完成版ではちゃんとしますよ。
(たぶん、敵の動きをコントロールしてるあの関数が・・・)

そして敵と主人公が衝突したならば戦闘に入ります。
BattleMain() 関数には、敵の種類と敵の数を渡しています。
勝ったら敵をマップから消します。
その敵に関する情報も削除するのでその情報を詰めてあった部分が空いてしまいますので、情報を格納している配列を消した情報があったところから前方へ詰めます。

今のところは負けても勝っても主人公は死にませんし、逆に敵が消えてなくなります。
逃げても同様の結果となるでしょう。
しかもブロックを移動してまた戻ったら即復活しています。
もちろん完成版ではちゃんとしますので悪しからず。
(こういうのがその他諸々のひとつの要素なわけですね。)

まぁ今回は単純に敵の配置とかしただけなのでたいしたことはありませんでしたが、プログラムが大きくなってくるとひとつ修正するのも大変ですね。
それを修正したことによって連鎖的にたくさんのものを修正しないといけなくなってしまうんです。
まぁそんなことに陥りやすいコーディングをする僕がいけないのですが。
とほほ・・・。

ということでまた今度です。


あっ、ちなみに記事の本文は一応誤字・脱字がないよう気をつけてはいますが、もしそういうのがありましたらあなたの推理力でどうにかしてください。
無責任極まりないですがご勘弁を。

拍手[0回]

author : gp-hss ×

今回は結構このブログのデザイン(ほんの一部だけだけど)を変更しました。
まず一つに、上の「FGP」と書かれている変な隆起しているやつです。

ちょっと意図したとおりの仕上がりにはできなかったのですが(もっとシャープにしたかった・・・)、そのためちょっと邪魔くさく感じるかもしれません。
でも主であるゲーム作りをほっといて作ったくせにこの程度で終われるわけがないのです。

では、ちょっと右にある四角いスイッチをポチッと押してみてください。
どうです。ちょっと驚きましたか?
形式は gif なんで透明か不透明かの画像しか使えないのでちょっと工夫してます。
あとブラウザに Firefox を使っていないと結構始めの画像だとかがちらつくかもしれません。
対応しているブラウザなどについてはページの最下部に記載しておりますのでご確認ください。
背景の画像は今後いくつかつくってランダムに表示させたいと思っています。

しくみとしては、
クリックされたらまずスイッチの画像を切り替えます(へこんでいるやつにね)
その次に、ゲートの画像をゲートが開く gif に切り替えます。
結果、その後ろ(というか奥?)に配置してある背景(ではないけど)画像が見えるわけです。
もう一度スイッチがクリックされたら同様にして画像の切り替えを行っています。
まぁ実際には画像がちらつかないようにいろいろしてるわけですが(効果があるかどうかは知りません)

これらは javascript を使って書いているわけですが、 C から派生した言語である java をベースにして作られたスクリプト言語でしかないので、そこまで困ることはありません。
まぁ実際にはいろいろ調べたわけですが・・・。
ちなみに背景の空も CG ですよ。
昔、結構2DCGにはまってたんですよ。
もちろん Photoshop なんつー効果なソフトなんざ持っていませんが、僕みたいな素人には GIMP で十分すぎるぐらいなのです。
javascript のソースがみたい方はこのページのソースを表示させれば見れると思いますので興味のある方は見てみてください。

二つ目の変更点はいわゆる favicon というものです。
このブログでサイト作りは 5 回目ぐらいなのでこいつの存在は耳に入っていたのですが、初めて作ってみました。
んで、具体的になんなのかといいますと、タブやアドレスバーに表示される画像のことです。
あの小さいやつね。
ギリギリ「FGP」って書いてあるのがわかるかなと思います。
デザイン的にはページ上のゲートのやつとほぼ同じです。
ちなみに「FGP」ってどういう意味ッスか?といわれると、
「Future's Game Programmer (未来のゲームプログラマー)」の略です。
('s をこんな使い方したら違うニュアンスになりそうですが無視する方向で。)
本当に将来は自称ではなくなっているといいですね。

ではまた今度。

拍手[0回]

author : gp-hss ×

イメージ

ConCharIntoCode(.zip)


今回は主のゲーム開発とは別に半角文字のアスキーコードを調べるプログラムを作りました。
これで何が入力されたかを数値的に知ることができます。

ただ特殊なキー(ファンクションキーや矢印キー)が入力された場合、1バイト目の数値(たぶん)と2バイト目の数値が表示されます。
ただ基本的に2バイト文字には対応していないので表が崩れたりしますが、一応知ることはできます。
プログラム中で使うのであれば2バイト目の数値を使いましょう。
キーボード上の単なる1バイト文字であれば対応しています。

ちなみにコマンドプロンプトでひらがななどの2バイト文字の入力の仕方は知っていますか?
キーボード左上にある「半/全」を押しても切り替わりません。
コマンドプロンプトでは「ALT」 + 「半/全」を押す必要があります。
これで全角文字を入力することができます。
ただ対応はしていません。(なんじゃそれっ。)

プログラムを終了するには「end」と入力すればOKです。
(全部大文字でも一部だけ大文字でもかまいません。)
プログラムは C++ でコーディングしていますので、まだ C しか知らないという人にはあまりよく分からないかも知れません。
ですので、ちょっとだけですが解説しておきます。

まず iostream とは C でいう stdio.h のように C++ では当たり前のようにインクルードするヘッダーです。
 conio は操作子とよばれるものを扱うためにインクルードしています。
(操作子とは C でいう書式指定みたいなもんで、数値なんかを何進数で出力するかなどを指定するためのものです。例えば、 hex で16進数値で出力、dec で10進数値で出力などなど・・・。)

using namespace std;
とはものすごく簡単に言うと、入出力を標準ストリームから行うというものです。

また、 型名& は参照型オブジェクトのことです。
簡単に言えばポインタみたいなものですが、参照型オブジェクトは
1.宣言時に必ず参照先オブジェクトで初期化する
2.宣言以降は全て値としての処理が行われる
3.そのため、参照先を変えることはできない
4.NULLは代入できない
5.間接参照演算子などの演算子を用いずに参照できる
みたいな感じで扱えます。

また、型名の前に inline と宣言されている関数は C でいう関数形式マクロみたいな感じに、コンパイル時に呼び出されたところにインライン展開されます。
解読する上ではただ単なる関数として見ればOKだと思います。

 bool 型とは真理値を扱う型で、基本的には 0 と 1 です。
 0 は偽となり、 1 は真となります。(真理値とは関係なく非 0 は真です。)
また true , false は真理値リテラルとよばれており、それぞれ真と偽を表します。

まぁ~こんなもんで解読できるでしょう。
頑張ってください。
そこまで難しくは無いはずです。
ではまた今度。

拍手[0回]

author : gp-hss ×
忍者ブログ | [PR]
 | PAGE TOP
write | reply | admin