FORM が XXX するか調べる方法

作業ログっていうかメモっていうか Return Values (expect (+ 2 1) (returns 3)) equal? It is OK to ignore too many values (let ((#1=#:results (multiple-value-list (+ 2 1)))) (equal (list 3) #1#)) => t Condition (expect (+ #\f #\o #\o) (signals…

apply の引数

apply: FUNCTION ARG &rest MORE-ARGS apply は何気に引数を複数に分けて受けられる。でも funcall とは違って、最初見たときは意味がわからん動作をする。 というのは、ARG と MORE-ARGS のうち一番最後の引数は list に突っ込んでおかねばならず、それ以外…

anything について勘違いしてた

というか何に使うのかよくわかってなかった。何かの理由で anything.el について調べてて EmacsWiki: Anything を読んだ。でやっとわかった。anything 自体は何かするものじゃなくって、何をするかを指定するものなんだ。それも今までとは違うやり方で。anyt…

入力乗っ取り+疑似バックグラウンド実行

よい子は真似しちゃダメ ;;; キーボードの入力を乗っ取る ;;; とりあえず乗っ取ってみたかっただけなので、入力されたキーを ;;; そのまま buffer に insert ;;; C-g か RET で終了 (defun read-input () (popup-string "*** キーボード入力 横取り中 ***" (…

define-key で多ストロークを設定

keymap というのは car が editor:keymap とゆー symbol で、cdr が (key . command) の alist らしい。 (setq *keymap* (make-sparse-keymap)) => (keymap) (define-key *keymap* #\C-b 'command) => t *keymap* => (keymap (#\C-b . command)) んで、多ス…

Alcor の Abbreviation Scoring

steps to phantasien: Alcor の Abbreviation Scoring を xyzzy lisp に直訳してみた。ac-mode とかの絞り込みに使えないかと思ったんだけど、そのままだと使いにくそう。将来やっぱ使おうと思ったときのためにメモ。ぐちゃぐちゃ書いてるけど、リンク先の記…

ゲームプログラマになる前に覚えておきたい技術 GameLib/Framework を使う準備

2章から使う GUI 用のライブラリを使う設定。何度もやることになるので。本で言うと P.64-67 あたり。 新しいプロジェクトを作る C-S-n テンプレートから "Win32 プロジェクト" を選んで プロジェクト名を決めて ソリューションはてきとーに設定*1して [OK] …

ゲームプログラマになる前に覚えておきたい技術 Ch.2 - スクロール

大きなステージを読み込んだときにはプレイヤーを中心にした一画面分だけを描画するか、 やってみた。妄想した動作は、ステージが画面に 収まる => 画面の真ん中にステージを表示して動かない 収まらない => 基本的にプレイヤーを中心に表示する ただし、ス…

++ を後置より前置で使う理由

こないだ @rayfillさんに教えてもらったので。 そもそも前置と後置はどう違う 前置はインクリメントした後の状態を返す、後置はインクリメントする前の状態を返す。 int a = 3, b = 3; cout << ++a // 4 << b++ // 3 << endl; 後置は変更前の値を保持する必…

[C/C++] インスタンス返し

未だに荷物君をいぢってあーでもないこーでもないとやってる。ゲーム内でプレイヤーやらの座標を x と y で扱うのだけど、どうせ一緒に使うのだからとまとめるためだけの class を作った。そんで、これの足し算をしたくなった。というのは Coord posPlayer =…

継承したクラスのコンストラクタで引数

サブクラスのインスタンス作るときにスーパークラスの引数付きコンストラクタ使いたい場合は初期化んとこでスーパークラスに渡す*1。 class Sub : public Super { //... public: Sub (int a, int b) : Super(a, b) {} } *1:なんか変な言い方

ゲームプログラマになる前に覚えておきたい技術 Ch.2 - 三角形をクルクルさせてみた

「なんか回せそうだ」と思ったら回してみたくなったので回してみた。こんなことしてるから進まないんだよなぁ。最初 int と float を使って cast しまくってたんだけど、三角関数な関数が double 用みたいだったんで基本 double にした。三角形は Triangle …

ゲームプログラマになる前に覚えておきたい技術 Ch.2 - 三角形

この本のタイトル長すぎる。しかも上手いこと略せない。教材のライブラリで unsigned の配列をウィンドウ内の画素に見立てて、その要素を 0xRRGGBB にすると点を打てるものを使って画面に点を打つ、というような内容。 この章ではこれ以上絵を豪華にすること…

ちょびっと便利なコマンド

息抜きとか思ってちょっとだけ xyzzy lisp。やっぱり「こーゆーことさせたい」から実装するまでのフリクションが低い。慣れの問題だろうか。 行頭とインデントのとこ行ったり来たりする C-a (defun beginning-of-line+ () (interactive) (if (and (bolp) (eq…

文字列が終わってなかった

ロベールのC++教室 - 第13章 関数のすげ替え -「すげ替え」るという言葉を使ってる人ってミギー以外ではじめて見た。fopen に渡す mode の文字列から 'b' を取り除く処理をするメンバ関数。pszDest に修正後の mode 文字列を突っ込むんだけど '\0' が抜…

文字列

char* hello () { return "Hello, world!"; } でいいみたいなんだけど、理解が引っかかった。 char* hello () ってことはこの関数は `char` へのポインタを返すはずだ。そもそも文字列変数の宣言は char hello[] = "Hello, world!"; と書くって話だったけど …

Visual Studio 2008

重い ツール>オプション の 環境>スタートアップ にある [コンテンツをダウンロードする間隔] のチェックを外すとだいぶマシになる。 キーマップで Emacs スキームだと自動インデントしてくれない ツール>オプション の キーボード で Emacs スキームを選ぶ…

微妙に再開。ただし脱線。「ゲームプログラマになる前に覚えておきたい技術」という本を読んでる、というかやってる。別にゲーム作るつもりはないんだけど、C/C++ の勉強するのになんか適当な本ないかなと本屋でウロウロしてたときに見つけて、著者のスタン…

term-title と window-title

screen が別々に管理してる。 term-title # "term-title" という名前は今勝手に決めた。"hardstatus" も "window title" も他と被るんで。 本来は terminal emulator の title-bar に表示される shell からは `echo -ne "\033]0;\007"` で変更可能 hardstatu…

window title がずっと "urxvt"

emerge なんかは勝手に terminal の title に "emerge (33/142): ..." とか表示してくれるんだけど、巷にある「実行中のコマンドを screen の hardstatus に表示」をやると表示されなくなるのでなんとかならんかなぁと思ってて、以前 hardstatus の代わりに …

/etc/make.conf

Gentoo から初カキコ。USE flags はまだ調整中(というか desktop をどういう環境にするか決めてない)。 CFLAGS="-O2 -march=barcelona -pipe -fomit-frame-pointer -funroll-loops -finiline-functions" CXXFLAGS="${CFLAGS}" ### CPU features USE="mmx s…

todos for moving to gentoo

suspend sound card 周りがめんどそう rotate second monitor wine (xyzzy, games) virtual-box/vmware IM (とりあえず uim+anthy なう。atok にしようか迷う。) keyboard layout 単なる us-dvorak に caps->ctrl だけでも使えなくもない gdm のキーマップっ…

やっと X.org が動いた

log みるとまだなんか error でてるけど、なんとか GUI で keyboard も mouse も動いた。 keyboard も mouse も反応しない gentoo では /etc/make.conf で INPUT_DEVICES="keyboard mouse" とか指定しておくと、xorg-server とか emerge するときに適当に dr…

install 駆け足版

Sabayon 試してみたけどふつーに Gentoo インストールすることにして、そのまま Sabayon の Live CD から install してみる。 てきとーな linux で起動 network 繋がる事 あとはごく基本的なコマンド使えれば何とかなる disk 準備 $ fdisk /dev/sd* (中略) $…

inline #6 一旦まとめ

lisp/evalmacs.l::defun を変更 関数定義の lambda expression を(とりあえず symbol-plist に)保存 # defun の定義が2つあるので注意 どっかで function-lambda-expression を定義 どっかで expand-inline を定義 lisp package から inline を export し…

inline #5 元の関数定義が必要な件について

関数定義は si:closure-body で取り出せて、inline でやろうとしてることはこんな感じ。 仮引数と実引数から、てきとーに束縛する let form を作って その中に関数の body を突っ込む (defun foo (&rest args) (apply #'+ args)) => foo (si:closure-body 'f…

condition 一覧

(compile (defun find-all-condition-and-slot-accessors () (do-all-symbols (sym) (let ((it (ignore-errors (make-condition sym)))) (when it (let ((def (si:*structure-definition it))) (format t "- ~S~%" (si:*structure-definition-name def)) (do…

誰だ、宝物をゴミ箱に放り込んだのは

http://xyzzy.s53.xrea.com/wiki/index.php?cmd=read&page=trash%2Fdisassemble こんなものがあったのか。なんで trash にあるんだ。全力で無視してたじゃないか。

inline #4 special-form に展開しちゃダメ?

どうも compiler::optimize-form の関数が返す form は special-form になってはいけないようだ。compile.l の関数が何やってるのかどうにもよくわからん。 macro はとにかく展開するんで、form は最終的に 関数呼び出し special-form のどっちかになるはず…

inline #3 どう展開すりゃいいんだ?

(let ((arg1 value1) (arg2 value2) ...) <body>) 機械的に展開できるのはここまでで、これ以上は手動で定義してやらにゃならんような。理想としては ;;; 関数定義 (defun ev-oddp (obj) (oddp (example-value obj))) ;;; 関数呼び出し (ev-oddp X) ;;; たぶん最も</body>…