忍者ブログ
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 
×

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

author : gp-hss ×
「おいぃ~、更新はどうなってんだよ!?」

どうもです。
実はあるものを作っていて更新はまるっきりほったらかしていました。
「ていうことはあんたの作ってるダンジョンゲーも全然進んでないってこと?」
・・・・・そういうことです。
まぁ~15日までというのはあくまで目標であってそんな・・・・・・・。
駄目ですよね。
ちゃんと期日を守れないのは最悪です。
これからはちゃんとしきり直してやっていこうと思います。

しか~し、何もやってなかったわけではないのです。
ちょっと息抜きに興味がわいたのでこんなものを作っていたのです↓
discard_list(.zip)
discard_list(.c)
なんのことならさっぱりだと思いますが順を追って説明しましょう。

あるとき僕はPS3でも何とかFLVを見ることはできないだろうか?と考え、Googleで検索。
一番上にでたサイトを参考にしてみることにした。
このサイトって言うのがここだ↓
まる族
このサイトの企画ものを参考にちゃくちゃくとWEBサーバーをたてたり、WEBプレイヤーをダウンロードしたり、ポート開放したりと苦戦しながらもなんとか実装が完了した。
今回利用したのは「JW FLV Media Player」。
PS3側でもプレイリストが使えるってことなのでこいつに決めた。
サイトの説明どおりに動画を追加していくとちゃんと動作し、
「やった、これでPS3でもFLVが見れるぜぇ~」
と思って、テスト用の flv ファイルを削除したところなんとプレイリストからはその動画への項目は消えず、かといってその項目を選択してもエラーとなるだけです。
つまり動画を削除してもこのようなゴミが不完全に残ってしまうということなのです。

んん~どうしたものかなぁ~。
これだと不要になった動画ファイルを削除しても残ってしまうぞ。
サイトには「バッチファイルは改変自由」・・・。
よし、ここは自分でプレイリストのリストを作成するバッチファイルを編集してみようと思い、バッチファイルについても調べた。
基本的なコマンドは知っていたが、構文などはあまり知らなかったのでいろいろと調べてはみたものの、自分の意図したとおりコーディングできる自信がなかったので諦めることに。

んん?でもちょっと待てよ。
こちら側で別の実行ファイルを用意しておいて、それをこのバッチファイルから呼び出すようにすればうまくいくんじゃないのか。
ということで自分が一番よく知っている C でリストのゴミを消去するプログラムを作ることに。
それが上記で紹介したプログラムだ。
しかし、たったこれだけのプログラムでも思ったより大きくなり、時間もかかってしまった。
でも何とか完成。
うまく動作しているようだ。

せっかく作ったのにこのままにしておくのも勿体無いと思い、参考にしたサイトの管理人にメールをしてこのプログラムについて紹介したり交渉したりしてみた。
そしたらなんとちゃんと返信が返ってきて、ちょっとした変更を加えてくれば自分のサイトで紹介してくださることになったのだ。
早速ワクワクしている気持ちもほったらかしにプログラムを変更し、それを報告した。
それから1、2日たったのち、このプログラムの紹介も含んだ記事が公開準備段階に。
たぶん今日の夜ごろには公開されるだろうとのことだ。
みなさんも興味があれば見て行ってください。

では今回はこれで終わりです。
また今度。


------------サイトへのリンク------------
まる族

拍手[0回]

PR
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 ×

test_create_rand_val(.c)

test_create_rand_val(.exe)

Part.2 のプログラムをさらに改良しています。
論理上不要な部分を無くし、さらに乱数を求める処理を 100 分の 1 にまでスピードアップさせました。
精度は 9 割維持しています。
ですが、指定した乱数を生成する範囲が狭すぎると一定の間隔で同じ数値の乱数が生成されてしまいますし、逆に範囲が広いと同じような数値の乱数ばかりが生成されてしまいますし、
外部ファイルを使わなくても済むようにしたので、一番最初に返される乱数の値がかぶってしまう確立が高くなってしまっています。
まぁこれらの問題はものすごくがんばれば解決できると思うので Part.4 では完成形を披露できたらなと思っています。

このソースの解説を簡単にしておきましょう。
といってもまぁ解説するところなんてほとんどありませんよね・・・。

まずは、自作の乱数を求める関数を header にしたものをインクルードしています。
そして、僕のつくった乱数を生成する関数は、まず最初に必ず乱数をどの範囲から生成するか指定しなければいけません。
それが、

    crv_scope()

です。
第一引数に範囲の始めの値、第二引数に範囲の終わりの値を渡します。
ちなみに、範囲は 0 ~ 1000000 までです。
負の乱数にしたければあとで符号変換してやればいいだけです。
範囲はプログラム中どこででも変えることができます。

次に、その範囲内で乱数を生成する関数である

    CRV()

ですが、こいつは呼び出すごとに指定した範囲内において乱数を返します。
また、範囲を指定する関数である crv_scope() を先に呼び出していない場合は -1 を返します。
あとは、もう一度乱数を生成するかどうかを聞いて、もう一度する場合は do文 によって同じ処理をさせています。

どうでしたか?
乱数を作り出すプログラムはいろいろな作り方があるのでしょうが、簡単な理屈でもいいので自分で作ってみるというのが重要ですよね。

ではまた今度。

拍手[0回]

author : gp-hss ×

rand_val_info(.txt)
rand_test(.exe)
rand_val(.zip)
.txt ファイルを .exe ファイルと同じディレクトリ内に置いてください。
zip はそれらをまとめたものです。
または、 txt ファイルへのリンクをクリックしたあと、実行ファイルを実行してください。


今回は Part.1 でつくったプログラムに加工を加えて、精度を高くしたり範囲を指定できるようにしています。
たとえば、Part.1 の test.exe では小数点第2位から2桁だけ数値を取っていましたが、今回のプログラムではあるアルゴリズムに沿って、ある位から少なくとも6桁以上の数値を取ってきています。
ある位とは、少なくとも小数点第2位以下です。
あとは、取ってきた数値を指定どおりに成形していきます。

まぁこの成形処理はものすごく簡単です。
範囲の終わり値に + 1 したものと取ってきた数値とを割った余りを求めるだけです。
ただし、これは範囲の始め値が 0 の場合のみのことですね。
そこで、まず始め値が 0 でない場合はその始め値で終わり値を引きます。
あとは始め値分引かれた終わり値 + 1 で割った余りを求め、最後に始め値の値を足します。

ただし、ここに関わってくるのが強化した精度の制約です。
この精度の制約をクリアしないと求めた値は乱数として認められず、もう一度乱数を作らせます。
実は精度を高くするために txt ファイルがいるのです。
まぁ無くてもそこまでかわらないのですが、ないよりあったほうがマシなのです。

ちなみにこのプログラムに似たようなものは Part.1 の内容と自分で調べてみる探究心があればつくれるはずです。
ぜひがんばってつくってみてください。

拍手[0回]

author : gp-hss ×
ball_yoke(.exe)
ball_yoke(.c)

ちょっとプレイヤーの球が意図した動作にはならないのですが、上出来です。
あとはこれを一つ一つのボールが降ってくるのではなく、複数のボールが降ってくるようにできればOKなんですが、それはまた改めて。

ではまた今度。
(あっ・・・・説明変えるの忘れてた・・・。)

拍手[0回]

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