Last update 2001/09/30

プログラミング素材集

私がこれまでに作ったプログラムや、その中から抜き出した使えそうな断片です。
ここに載せた分は「自作した」と詐称する行為以外
商用も含めてすべて許可しますが、
当方では責任は負わないものとさせていただきますので、own riskでどうぞ。

「ここをこうしてほしい」とか「ここをこうしたよ」という意見があれば、
ぜひ掲示板の方へどうぞ。単なる感想でも構いません。
自分でもどんどんバージョンアップ(仕様変更含む)します。

本当はまだここが気に入らないな……というところがいくつもあるのですが、
きりがないのでとりあえず載せてから修正することにします。
五月雨式にアップロードしますので、今のところダウンロードができなかったり
解説がウソだったりするものがありますが、あしからず。

C++のライブラリ

古い環境で作ったものを、ここで載せるためにやっつけで修正したので、他の環境で動くかどうかはちょっと心配です。これも少しずつ修正していくことにします。

各項目のカッコ内は利用可能な環境です。

※以下のものはVAFXに統合されましたので、ドキュメントもその中に移しました。

Vism(本体:標準C++、DLLインターフェイス:Win32)

解説

Vismは、主にゲームなどでスクリプトエンジンとして用いるために制作されたscheme言語の処理系です。詳しくはこちらをどうぞ。

Scheme R5RSにほぼ準拠しています(まだ完全ではありませんが、完全にする意志はあります)。

以下の問題点は近い将来解決される予定です。

以下の問題点は当分やる気がありません。でも代わりにやってくれる人がいたら大歓迎です。

ダウンロード

vsch007.lzh

VAFX(一般部:標準C++、特殊部:Win32)

解説

VAFXは、Windows環境でDirectXなどを使って主にゲームなどを作るためのクラスライブラリです。オブジェクト指向で設計されており、機能ごとにコンポーネント化されているのが特長です。

DirectXのラッパークラスライブラリの一種ですが、他のクラスライブラリと比べて直交性を重視しており、過度に一般化したスマートな設計を目指しているため、ユーザーによる機能の拡張が容易です(C++を使えれば、の話)。また構造のコンポーネント化を計っているため、他のアプリケーションフレームワークとの整合性も割と高いはずです。

C++をそれなりにマスターしている人(テンプレート辺りまで把握している人)を対象に作っていますが、とりあえず解らないところは無視すれば、Cしか把握してない人でも使えると思います。

Ver.013で若干バグを修正しました(内容はアーカイブのHistory.txtを参照してください)。

ダウンロード

vafx013.lzh

VAFXImg(C++)

VAFXImgは環境非依存の2Dイメージ処理ライブラリです。内容はVAFXに含まれるものと同一です。詳しくはこちらをごらんください。

主な機能:

アルゴリズム:

点の描画/全体処理/水平線/垂直線/直線/矩形/楕円/矩形の境界/楕円の境界/連続直線/シードフィル/凹ポリゴン描画/矩形の移動/矩形のコピー/90℃回転/タイリング/拡大縮小/回転拡大縮小/シードフィルのマッピング/楕円のマッピング

描画:

通常描画/点線/半透明描画/高速半透明描画/何もしない/加色描画/通常コピー/α合成/高速α合成/加色合成

おまけ:

高速sqrt/高速hypot/線形補完/ベジェ補完

ダウンロード

vimg009.lzh

TortoiseGraphic(Win32)

vism制作記で使ったタートルグラフィックです。

ここのGIFアニメーションを使わせていただきました。どうもありがとうございます。

ダウンロード

tg001.lzh

Arranger(Win32)

VAFXのサンプルのゲーム(のようなもの)です。もちろんソースつきです。

HQSさん(http://www.aay.mtci.ne.jp/~hqs_/)の音声フリー素材集を一部使わせて頂きました。どうもありがとうございます。

ダウンロード

Arr002.lzh

S3TCのテスト(Win32)

デコーダを実装してみました。

コーディングはべたべたで、高速化処理はなんら施していません。

わかりにくいですが、起動直後は単なるイメージ描画で、画面をクリックする毎にイメージ→S3TC→イメージ→……とトグルで表示方法を切り替えます。S3TCモードのときはリアルタイムで展開しています。

うちの環境だとイメージの方が30FPS、S3TCの方が25FPSくらい出ています。

一応デコーダ部分のソースもつけておきます(そのままでは使えません)。好きに使ってください。

ダウンロード

s3tctest.lzh

rc_ptr(標準C++)

解説

auto_ptr<T>が私のプログラムでは役にたちそうもなかったので作ったリファレンスカウント管理クラスです。まあまあ使いやすくできたと思います。基本的にポインタをこれで置き換えるだけで、オブジェクトのdeleteが不要になります。詳しくはソースを読んで理解してください(短いので)。注意点もソースにコメントとして書いてあります。

これ自体をnew/deleteするのは間抜けな行為です。

ダウンロード

rcptr004.lzh

ギャップベクタ(標準C++)

解説

知る人ぞ知る「ギャップバッファ」方式をインプリメントしたテンプレートクラスです。仕様はSTLに合わせました。

知らない人に説明しますと、「ギャップバッファ」とはEmacsなどのテキストエディタに用いられているシーケンス(データの順序付きリスト……他には連結リスト、配列などがある)の一つで、ランダムアクセスが速く(連結リストは常に遅い)挿入・削除が一定の条件で速い(配列は常に遅い)という特徴を持っています。アルゴリズムの計算量など詳細な情報については、ソースを気合で読むか参考文献を参照するか掲示板で聞いてください。

ダウンロード

gvctr002.lzh

現在準備中

Emacs(Meadow)のマクロ


(C) 1997 Naoyuki Hirayama. All rights reserved.