2016-04-23 52 views
0

誰もがMac OS Xで一般的なlispゲームを開発していますか?最近、私はMac OS X上でlispゲームの開発をしたいと思っています。しかし、私は立ち往生しています。Mac OS Xでlispbuilder-sdlをインストール

Operating System version: 
    ProductName: Mac OS X 
    ProductVersion: 10.11.4 
    BuildVersion: 15E65 

sbcl version: 
    SBCL 1.3.3 

私はGithubのリポジトリのページを見つける:https://github.com/lispbuilder/lispbuilder/wiki/DownloadInstallationをし、OS Xインストールの一部に従ってください。私は、SDL 1.2のランタイムライブラリとランタイムバイナリとSDL 2.0の開発ライブラリをインストールしようとしました。これは、次のように動作します。

私はlispbuilder-sdlの使用Linux上でも動作しますいくつかの簡単なコードを実行すると:

(defun draw-a-box-in-window() 
(sdl:with-init 
() 
(let ((width 500) 
     (height 500)) 
    (sdl:window width height) 
    (setf (sdl:frame-rate) 60) 
    (sdl:clear-display 
    (sdl:color 
    :r 127 
    :g 127 
    :b 127)) 
    (sdl:draw-box 
    (sdl:rectangle 
    :x (floor (/ width 3)) 
    :y (floor (/ height 3)) 
    :w (floor (/ height 3)) 
    :h (floor (/ height 3))) 
    :color (sdl:color 
      :r 200 
      :g 200 
      :b 200)) 
    (sdl:update-display) 
    (sdl:with-events 
    () 
    (:quit-event() t) 
    (:key-down-event() 
        (when (sdl:key-down-p :sdl-key-q) 
         (sdl:push-quit-event))))))) 
(draw-a-box-in-window) 

何かエラーが起こった:

arithmetic error FLOATING-POINT-INEXACT signalled 
[Condition of type FLOATING-POINT-INEXACT] 

Restarts: 
0: [RETRY] Retry SLIME evaluation request. 
1: [*ABORT] Return to SLIME's top level. 
2: [ABORT] abort thread (#<THREAD "worker" RUNNING {1005D039E3}>) 

Backtrace: 
0: ("bogus stack frame") 
1: ("foreign function: -[NSPlaceholderNumber initWithDouble:]") 
2: ("foreign function: +[CALayer defaultValueForKey:]") 

誰でも解決する方法を知っているがそれ?ありがとう。

答えて

0

こんにちは@aries_liuxueyangm、私はあなたにこの解決策を提案します。

(ql:quickload 'lispbuilder-sdl) 

(asdf:operate 'asdf:load-op :lispbuilder-sdl) 
(asdf:operate 'asdf:load-op :cocoahelper) 

(defparameter *random-color* sdl:*white*) 

(defun draw-a-box-in-window() 
(sdl:with-init 
() 
(let ((width 500) 
     (height 500)) 
    (sdl:window width height) 
    (setf (sdl:frame-rate) 60) 
    (sdl:clear-display 
    (sdl:color 
    :r 127 
    :g 127 
    :b 127)) 
    (sdl:draw-box 
    (sdl:rectangle 
    :x (floor (/ width 3)) 
    :y (floor (/ height 3)) 
    :w (floor (/ height 3)) 
    :h (floor (/ height 3))) 
    :color (sdl:color 
      :r 200 
      :g 200 
      :b 200)) 
    (sdl:update-display) 
    (sdl:with-events 
    () 
    (:quit-event() t) 
    (:key-down-event() 
        (when (sdl:key-down-p :sdl-key-q) 
         (sdl:push-quit-event))))))) 


(defun main (argv &aux (argc (length argv))) 
    (draw-a-box-in-window) 
) 

(sb-int:with-float-traps-masked (:invalid :inexact :overflow) (main *posix-argv*)) 
+0

これは機能します。どうもありがとうございます!ときどき奇妙なことが起こります。 – aries

+0

@aries正しく機能していれば、正しい答えとしてマークする必要があります。これは答えを与えてくれます。彼らには十分に値するカルマ – Baggers

+0

@Baggersあなたの提案に感謝します。今私はそれに印を付けました。 – aries