忍者ブログ
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
1  2  3  4  5  6  7 
×

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

author : gp-hss ×

RPG_Battle_test(.zip)

やぁ~どうもです。
けっこう今回はがんばりましたね。
まず、コメント枠内にコメントを表示するためにそれ専用の char * 型の配列を用意して、自作関数をもって表示などの作業をするということにしたのですが、大きな穴がありました。
それは printf のように "%d", get_exp みたいな感じで変数のもっている数値を表示できないということです。
用意している配列は文字列へのポインタでしかないので、中に変換指定を記入したところでそれ自体を文字と認識してしまいます。
そこでけっこうがんばったわけですが、例えば

printf("経験値%dを得ました。", get_exp);

とする場合、まず変数の持っている数値などを表示するところを空白にします。

"経験値 を得ました。"

そしてこの空白を目安にして、この文字列を二つの文字列に分割します。

"経験値"
"を得ました。"

次に変数のもっている数値を文字列に変換します。
アスキーコード表によれば、

0 = 48(10進数)
9 = 57

ですので、上の位の数から順に文字列配列に

str[0] = (char)(get_exp % 100 + 48)

のように代入していき、最後に終端文字を代入します。
あとは、 strcat() 関数を用いて文字列を連結していきます。
しかし、ここで注意しなければいけないのが、この文字列は不必要になるまで記憶域に存在している必要があります。
そこで空いている領域から文字列分の記憶域を確保します。
不必要になれば free でその記憶域を開放してやります。


この方法を思いつくのにけっこうがんばりました。
この関数はもちろんポインタ・配列・文字列のところをきちっと理解していないと作れません。
初めて勉強してたときもこの分野が一番きつかったもんなぁ~。
正直ポインタ単体の理解に苦しんでいたらわからなさすぎてストレスが半端ないと思う(笑)
言いすぎか・・・・・。
まぁー僕自身何回か読み返して理解できるまでいろいろと試験プログラムつくったりしてがんばったww
性格からして勉強に関してはちょっと完璧主義なところがあるので、本当に理解できるまで勉強した。
例えば、こうすればこうなるなんていう浅い理解じゃなくて、なんでそうなるのかというしくみをいつも理解しようとしてたな~そういえば。
数学の勉強もそうだけど、公式なんかはしくみを理解したほうが断然いい。
まる暗記なんか役にたちやしないからね。
それにしくみを知ってれば加法定理以外は自分で作れるようになる!!
まぁ経験が命だけど。数学もプログラミングも・・・。
まぁ雑談はこのぐらいにしておいて、他になにかあったかなぁー・・・・あっ、ソースファイルはちゃんと整えたら公開しますので少々お待ちを。
いますごく酷くて・・・とても見せられたもんじゃないww

えぇ~とっ、次はとりあえず防御の項目を完成させて、アイテムの項目もある程度は手をつけたいと思います。
ていうか一般的には小規模なんだろうけど、僕にとってはこんな大規模なプログラミングは初めて。
だってこのプログラムだけで 1600 ぐらいあるから、 RPG.h を加えると軽く 2000 は越す。
まぁもちろん最終的にはヘッダーはわかりやすく分けますけどね。
あとヘッダーの使い方は普通はプロトタイプ宣言とかだけだと思うので真似しないように。
どうもライブラリの作り方がわからないのでとりあえず関数本体もヘッダーにぶち込んでる。
分割コンパイルはめんどくさいので。
exturn とか・・・。
いまさら書き加えるのは無理ww

ということで次回には Battle プログラムは完了させたいと思いますので、ようやくマップ作りに取り掛かれるかと思います。
はたしてどんなダンジョンにしようかな。
ではまた今度。







ていうか、うわっ!
まてまておいおい・・・・・。
またかよ。なんでこんなに難しく作っちゃうんだよ~・・・。
あんな分割とか連結とかしなくていいじゃん。
それ専用の自作関数を用いて、

void OutObj(char *str, int obj)
{
        printf(str, obj);
}

これで文字列の中に変換指定があったとしても普通に問題なく表示されるじゃないか!!
またこのパターンかよ。
はぁ~あ。
しかも無駄に記憶域確保しなくてもいいし、簡潔じゃないか。
まぁーとりあえずこのゲームでは上記で紹介しためんどくさい実現方法でやっていきますが、みなさんは真似しないように。
あれはあれで使えるんだろうけどね・・・。

拍手[0回]

PR
author : gp-hss ×

僕んちは Panasonic のレコーダー(?、録画もDVDも再生できるやつ)を使っているのだが、外部入力からの録画も対応していることに今気がついた。
つまりゲームをするときなんかはだいたい入力切換しますよね。
そうです、僕が言いたいのはゲームのプレイ動画が録画できるということです。
実況はできませんが。まぁするつもりもありませんがね。

 HDMI で入力はできないみたいなので、D端子(D4)はあるのでそれでレコーダーに入力し、レコーダーとテレビは HDMI で接続されているので画質を保ったままテレビにて出力されます。
ある程度(確かD4って 720p とかまでだっけ?)の画質で公開できそうな気が。
ちなみにPCに落とすには一度 DVD にダビングして PC のドライブで読み込まなければいけず、案外めんどくさいうえ時間がかかります。

ていうかそういえば録画された動画ってファイル形式どうなってんだろ。
変換とかが容易にできるようなやつだったらいいけど・・・。

ということでさきほど Wii のスーパーマリオブラザーズでテストしたらうまくいきましたので、今後検討したいと思います。
ではまた今度。



とこのまま終われば最高だったのだが・・・・・。
最大の勘違いに気がついた。
D端子のやつ入力じゃなくて出力だった・・・。
まぁいいか、三色ケーブルで我慢するさ。

拍手[0回]

author : gp-hss ×

今日はなんか気分がいいのでこんな些細なことも書きたいと思います。
さっきコメント表示をどうしようかなと考えていて、イメージとしては任意にどの行に表示させるか、表示する度に文字列を上書きするのではなく1つ下の行に移すなどしてある程度記憶できるようにする感じです。
ポケモンのを想像してください。

1つの案として自作関数に ("文字列", 1) などしてなにをどの行に表示させるかみたいなのを考えましたが、効率的ではありません。
そこで思いついたのが、グローバルな char へのポインタ型の配列を利用するというものです。
例えば、要素 0 に格納された文字列(へのポインタ)をコメント表内の 1 行目に表示させる。
要するに要素 n に格納された文字列を n + 1 行目に表示させるということです。
これである程度文字列は記憶することができますし、自作関数を別途用意すれば容易に取り扱うことができます。
これを使い新たにコメントを表示するときはまず、要素 n にある文字列(の先頭文字)のアドレスを要素 n + 1 に代入し、その後 n に今回表示する文字列へのポインタを格納します。

こんな感じの実現方法を思いつきましたがどうなんでしょうか?
思いつくのにたいして苦労はしませんでしたがこれより良い実現方法を思いつくのは・・・たぶん難しいです。
少なくともすぐには浮かび上がりません。
なんだかこういうのって怖いですよね。
自分は本当はすごく馬鹿なことをしてるんじゃないかと考えてしまうと。

ということでさっそくコーディングしたいと思いますので、また今度。

拍手[0回]

author : gp-hss ×

昨日から明日まで親が出かけているので、今日久々に PS3 をリビングへ持っていって HDMI 接続でプレイしてみた。
プレイしていたゲームが 720p までしか対応していないので最も良い画質ではなかったが、三色ケーブルとは比べ物にならないほど綺麗だった。

ぼやけた感じが一切ないのである。
僕の部屋にあるのはブラウン管なのだが一応 D端子 まで対応しているらしい。
でももうすぐブラウン管なんて使われなくなるし、モニターにも安いのでてきてるしで D 端子を買う気なんてさらさらないのだ。
いつかまた HDMI でプレイしてみたいと思った。

ちなみにプレイしていたのはアサクリ2です。
このゲームは非常に面白い。
ぜひオススメです。

ではまた今度。

拍手[0回]

author : gp-hss ×

音楽に無縁な僕が唯一好きで聞いているのが、ASIAN KUNG-FU GENERATION という方たちの歌です。
なんていうか曲調がすきなのです。
ブラックアウトはお勧めです。
なんで今こんな話をするのかというと・・・・特に理由はなく、ただ書いてみたかっただけ。

この前一年ぶり(?)に発売されたシングルがオリコンチャートで3位(だったかな)をとっていて驚いた。
確か「新世紀のラブソング」だったと思うけど、実はまだ聞いたことがないのだ。
なんていうか別に今を否定するわけではないけど、僕は昔の歌のほうがすきなんです。
曲調がね。
ロックだけど弾けた感じじゃないみたいなやつ。

みんなにも一度は聞いてほしいと思う。
ではまた今度。

拍手[0回]

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