2016-04-23 20 views
0

jemand entwickeln Common Lisp-Spiele auf Mac OS X? Vor kurzem möchte ich eine Lisp-Spiele-Entwicklung auf Mac OS X aufbauen. Aber ich bleibe stecken.installieren lispbuilder-sdl auf Mac OS X

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

sbcl version: 
    SBCL 1.3.3 

Ich finde die Github-Repository Seite: https://github.com/lispbuilder/lispbuilder/wiki/DownloadInstallation und die OS X-Installation Teil folgen. Ich habe versucht, Runtime Libraries von SDL 1.2 und Runtime Binaries sowie Development Libraries von SDL 2.0 zu installieren. Es verhält sich wie folgt zusammen:

, wenn ich einige einfache Code ausführen, der auf Linux läuft gut, die lispbuilder-sdl verwendet:

(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) 

etwas Fehler passiert:

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:]") 

Wer weiß, wie zu lösen Das? Vielen Dank.

Antwort

0

Hallo @aries_liuxueyangm, ich schlage dir diese Lösung vor.

(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

Dies funktioniert. Ich danke dir sehr! Manchmal passiert etwas Seltsames. – aries

+0

@aries Wenn es funktioniert, sollten Sie die Antwort als richtig markieren. Dies gibt der Antwort-er ihr wohlverdientes Karma – Baggers

+0

@Baggers danke für Ihren Vorschlag. Ich habe es gerade markiert. – aries