プログラミング

Standard ML で簡易タイマを書いてみた

Common Lisp の time 関数や time(1) コマンドのようなものを Standard ML で書いてみた

Standard ML のコードをリアルタイムにチェックする (Emacs + Flycheck + MLton)

必要なもの Emacs Flycheck MLton 手順 init.el に以下のように書いておく。 (require 'flycheck) (flycheck-define-checker mlton "Standard ML type and syntax checking with mlton compiler. See URL 'http://mlton.org" :command ("mlton" "-stop" "tc"…

Standard ML で簡易タイマ書いてみた

Standard ML のコードをリアルタイムにチェックする (Emacs + Flycheck + MLton)

という記事を書いた。

プロンプトを Lisp で書きたい 1

とりあえず、こんなのやりたい、というのを書いておきます。 bash のプロンプトは通常 $ だけの簡素なものですが、ここには様々な情報を表示することができます。 hebiyan@localhost.example.com /home/hebiyan:$ この例ではユーザ名、サーバ名、カレントデ…

継続を使ってみたかった

ながい前置き 継続。scheme使う人が一度は使ってみたくなる継続。わかるまでわからない概念だけど、多分使わないとわからないと思う。名前付きletとかもコード書いてみるまでわからなかった。そこで継続を使ってなにか作ってみる。 継続を使って何か作る、と…

clangが親切だった件

サークルに顔を出した。そこで(紆余曲折の末)たらい回し関数の話になった。 もう時間が遅かったので、そこそこで切り上げて家へ帰ってから改めて、ということに。とりあえずCで書いてみる。 #include <stdio.h> long tarai(long x, long y, long z) { return (x <= y)</stdio.h>…

chicken-4.5.0をインストール

早いものでもう4.5.0である。 4.4.0から、LLVMとclangでのコンパイルに対応したというので、それじゃあ、とやってみた。 $ make PLATFORM=linux C_COMPILER=clang コンパイルはうまくいくのだが、インストールする段になって止まる。chicken-install -update…

今日のはまった

condとcaseについて。 (define (make-color r g b a) (lambda (cmd) (cond ((eqv? cmd 'r) r) ((eqv? cmd 'g) g) ((eqv? cmd 'b) b) ((eqv? cmd 'a) a)))) condの部分をcaseで置き換えるにはこうする。 (define (make-color r g b a) (lambda (cmd) (case cm…

GaucheでSchemeスクリプトをコンパイルする

> Gaucheをゲームに組み込んで使いたい。でもゲームを制御するschemeファイルがユーザーに丸見えなのは避けたい。 スクリプトを暗号化するか、バイナリに変換してschemeファイルを隠蔽する方法はないか。調べてみたらコンパイルしてバイナリに変換できそうな…

ぼやき

GuileがWindowsで使えるといいんだけどな…。どうしても使えないんだよな。

CHICKENというSchemeの処理系があって、SchemeコードをCのコードに変換したり、Cコンパイラを使って実行ファイルを生成してくれる。この処理系を使って、CからSchemeを呼ぶコードを書きたい。 (マニュアルを見ながら今日書き始めたばかりなので、あちこち間…

ゲーム組み込みスクリプトは急速に進化中 −IGDA日本SIG-GT12レポート | インサイド コンパイルして、最適化もして、必要とあらばネイティブコードをスクリプト側から呼び出せる。 メモリ管理は意識させないし、コルーチンやマルチスレッドにも対応してマルチ…

今日の作業

yaccファイルをいじって、変数の定義と参照ができるようにした。変数表のためにハッシュテーブルを実装する。ハッシュ関数は適当に決めた。まあ大丈夫でしょう。多分。 yylvalにcharポインタを持たせて、そこに変数名(の文字列)をstrndupしてyytextを保存し…

ふと思いたったので再帰呼び出ししてみる

…このタグつけるの何年ぶりだろう。… なんてことはありません。いくつかの言語を使って、フィボナッチ数を求めるだけです。

Linux上でD2.0+OpenGL

この記事を書くにあたって、以下の文章を参考にさせていただきました。この場を借りて、御礼申し上げます。 2007-10-01 - 御影 功の日記 LinuxはUbuntu7.04、dmdのバージョンは2.003を使っています。 今までコンパイルはできていましたが、リンクさせると、O…

今日のテトリスもどき

NEXTブロックを表示できるようにした。あとゲームオーバーを実装。 画面にも書いてあるけど、タイトルは"T-Z-I-L-O"(ツィーロ)。ブロックが偏るような気がしたので、メルセンヌツイスターを導入してみた。 でも、まだブロックが偏る。どうにかしないと…。

テトロミノテトラミノによるオブジェ

だいぶゲームらしくなってきました。 次はNEXT窓の実装か、効果音でしょうか。

テトリス-Wikipediaより なお、『テトリス』の持つ数学性、動的性、知名度、並びに実装の平易性から、『テトリス』をゲームプログラミングの練習題材として用いられる例がしばしば見られる。 細かな操作性の再現などを除けば、プログラミング難度は『スペー…

今日の作業

(Schemeでいうところの)アトムを生成できるようにした。あとペア(二つ組)を作れるようにもした。 アトムとペアを、Object型の派生クラスとして定義し、オブジェクトの解体はObjectへのポインタを通して行う。 これじゃ誰がどう見てもSchemeを実装したいよう…

ゲーム用のスクリプトについて考えたい

ゲームを作りたい。外部スクリプトの実行エンジンだけCで記述して、ゲーム自体はスクリプトで記述することにしよう。とりあえず、ここまでは決めている。が、ここで悩み出して進めなくなった。自分の考えを整理するためにも、ここに少しメモしておく。

電卓をつくる

小数のカッコ付き四則演算式を読み込んで計算するプログラムを制作中。 実行の流れはこんな感じ。 字句解析->構文解析->仮想マシンコードに変換(ここまで実装)->仮想マシンコード実行 解析器のコードを書いてみたかったので、ツールは使わず両方とも自作。 …

あまりに毎回忘れるのでメモ。 gcc test_lua.o -L/usr/local/lib -llua これはうまくいくが、 gcc -L/usr/local/lib -llua test_lua.o これはだめ。

今日の超途中

先日、「レーザーの作業終り」と書きましたが、どうしてもレーザーの飛び方に納得がいかなかったので、作業を続けていました。 左側のレーザーは右回りだけ、右側は左回りだけするように変更。 レーザーの軌道に関しては、これで本当に作業終り。 次は、、、…

今日の超途中

もうレーザーの作業終了。次行こ次。 毎回似たような画像だし、もう静止画じゃ違いがわからないので今回は画像なし。 ぶっちゃけOpenGLを使う意味があんまりないような気がしてきました…。

犯人はお前か!

OpenGLさえ使わなかったら、非力なマシン*1でも40FPS出せました。使った場合は10FPS。でも60FPSは無理。 *1:以前の日記参照

ドツボにはまる 補足

昨日寝ているときに気づいたのですが、 「引力型」と、「左側のレーザーは右に回る」は両立しませんよね? 回転方向に制限をかけられるのは、引力型ではなくて回頭型のはずですから。昨日は眠かったので書けませんでしたが、「引力型」「回頭型」については以…

ドツボにはまる

自分でホーミングレーザーを飛ばしていて、改めて思うのは「力の解放、本当にきれいだな」ということ。 どうやったらあんなにきれいに飛ぶのか、パラメータをいろいろいじって試してみたんですが、いじる前よりきたなくなってげっそり。なんかイヤになってき…

今日の超途中

きれいに見せるのって難しい…。

今日の超途中