`(kakko ,man)

Find a guide into tomorrow by taking lessons from the past

Lisp Game Programming 2 <Stage 2>

参考にさせていただいたサイトのリストを見たところ、キャラクタのidをリストにしていた。

これを参考に、先のプログラムで読み込んだid番号と比べてみたらこんなmap用のプログラムができた。

3面のmapを以下に用意したけど、スクロールの仕方はこんな感じ。

1.スタートの時はマップの一番上は64のライン、一番下は71のライン

2.次は上が63のラインで下が70のラインというように1ラインづつ動いていく

3.64のラインから63のラインに行くとき、64×64の大きさのmapchipのため、1dotずつ移動していく

map-list.lisp ⇒

(defpackage :map-list
  (:use :common-lisp)
  (:export #:*map1 #:*map2* #:*map3*))

(in-package :map-list)

;; step2 <Map>
;; -----------------------------------------------------------------------------------------------

(defparameter *map1* (make-array '(72 5) :initial-contents

'((54 61 61 61 54) ; 0
  (54 61 62 61 54)
  (54 61 61 61 54)
  (54 62 61 62 54)
  (54 61 61 61 54)
  (54 61 62 61 54)
  (54 61 61 61 54)
  (54 62 62 62 54) 
  (54 61 61 61 54)
  (54 63 63 63 54)
  (54 58 60 59 54) ; 10
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 58 60 59 54)
  (54 57 57 57 54)
  (54 58 57 59 54)
  (54 57 57 57 54)
  (54 58 57 59 54)
  (54 57 57 57 54)
  (54 58 57 59 54)
  (54 57 57 57 54) ; 20
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 58 60 59 54)
  (54 57 60 57 54)
  (54 58 60 59 54)
  (54 58 57 59 54)
  (54 58 60 59 54)
  (54 57 60 57 54)
  (54 58 60 59 54)
  (54 58 57 59 54) ; 30
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 58 60 59 54)
  (54 57 60 57 54)
  (54 58 60 59 54)
  (54 57 60 57 54)
  (54 58 60 59 54)
  (54 57 60 57 54)
  (54 58 60 59 54)
  (54 57 60 57 54) ; 40
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 57 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 57 54) ; 50
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 58 57 57 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 58 57 59 54)
  (54 57 57 59 54) ; 60
  (56 58 60 59 56)
  (55 58 60 59 55)
  (54 58 60 59 54)
  (54 58 57 59 54) ; 64 <-- start line
  (54 58 60 59 54)
  (54 58 57 59 54)
  (54 58 60 59 54)
  (54 58 57 59 54)
  (54 58 60 59 54)
  (54 58 57 59 54) ; 70
  (56 58 60 59 56))))

(defparameter *map2* (make-array '(72 5) :initial-contents

'((28 29 28 27 29) ; 0
  (35 36 27 35 36)
  (27 28 27 29 27)
  (35 36 28 35 36)
  (28 27 29 28 27)
  (35 36 28 35 36)
  (27 28 27 29 29)
  (35 36 29 35 36)
  (28 27 29 27 28)
  (27 29 28 28 27)
  (27 28 27 29 27) ; 10
  (29 27 29 28 27)
  (28 29 28 27 29)
  (29 28 27 29 30)
  (28 29 28 29 27)
  (29 28 27 29 28)
  (27 28 29 28 29)
  (28 35 36 29 27)
  (27 29 29 27 28)
  (29 28 27 28 29)
  (28 28 27 29 27) ; 20
  (27 29 32 27 28)
  (29 28 29 27 28)
  (27 28 29 28 29)
  (28 27 29 27 29)
  (27 29 28 31 27)
  (27 28 29 27 29)
  (28 27 29 27 28)
  (29 27 28 28 29)
  (27 28 27 29 35)
  (28 29 27 28 27) ; 30
  (29 27 28 27 29)
  (27 28 29 28 27)
  (28 27 28 27 29)
  (27 29 29 28 27)
  (29 33 34 29 28)
  (28 27 29 28 29)
  (27 29 28 29 27)
  (27 28 29 27 28)
  (29 27 28 35 36)
  (28 27 28 29 27) ; 40
  (29 28 27 28 27)
  (28 29 27 29 28)
  (27 28 29 32 27)
  (28 29 27 28 29)
  (27 29 28 27 28)
  (28 28 29 27 29)
  (27 29 28 29 27)
  (27 28 29 27 28)
  (28 29 28 29 27)
  (36 28 29 28 27) ; 50
  (28 29 27 27 29)
  (29 27 33 34 28)
  (28 29 27 28 27)
  (29 31 28 29 27)
  (27 28 29 28 29)
  (28 29 28 29 27)
  (29 27 28 27 28)
  (27 35 36 28 29)
  (28 27 28 29 27)
  (27 28 27 28 29) ; 60
  (28 29 28 29 27)
  (27 28 29 27 28)
  (28 29 28 27 29)
  (28 27 29 28 27) ; 64 <-- start line
  (29 28 27 30 29)
  (27 29 28 27 28)
  (28 27 29 28 29)
  (29 28 27 29 27)
  (28 27 29 28 27)
  (27 29 28 29 28) ; 70
  (28 27 29 28 27))))

(defparameter *map3* (make-array '(72 5) :initial-contents

'((44 45 44 43 45) ; 0
  (43 44 43 45 44)
  (43 44 43 45 43)
  (45 43 44 43 45)
  (44 43 45 44 43)
  (45 43 44 45 43)
  (43 44 43 45 45)
  (44 43 45 43 44)
  (44 39 45 43 44)
  (43 45 44 44 43)
  (43 44 43 45 43) ; 10
  (45 43 45 44 43)
  (44 45 44 43 45)
  (45 44 43 45 44)
  (44 45 44 45 43)
  (45 44 43 45 44)
  (43 41 45 44 45)
  (44 43 45 43 40)
  (42 45 45 43 44)
  (45 44 43 44 45)
  (44 44 43 38 43) ; 20
  (43 45 44 43 44)
  (45 44 45 43 44)
  (43 44 45 44 45)
  (39 43 45 43 45)
  (43 45 44 46 43)
  (43 44 45 43 45)
  (37 43 45 43 44)
  (45 43 40 44 45)
  (43 44 43 45 43)
  (44 45 43 44 43) ; 30
  (45 43 44 43 41)
  (43 44 45 44 43) 
  (44 43 44 43 45)
  (43 45 37 44 43)
  (45 44 43 45 44)
  (44 43 45 44 45)
  (43 45 44 45 43)
  (43 44 45 43 44)
  (45 43 44 45 43)
  (44 43 44 45 43) ; 40
  (42 44 43 44 43)
  (44 45 43 45 44)
  (43 44 45 44 38)
  (44 39 43 44 45)
  (43 45 44 43 44)
  (44 44 45 43 45)
  (43 45 44 45 43)
  (43 44 41 43 44)
  (37 45 44 45 43)
  (43 44 45 44 43) ; 50
  (44 45 43 43 46)
  (45 43 44 45 44)
  (44 45 43 44 43)
  (45 43 44 41 43)
  (43 44 45 44 45)
  (44 45 44 45 43)
  (45 43 44 43 44)
  (43 44 45 38 45)
  (44 43 44 45 43)
  (43 44 43 44 45) ; 60
  (44 43 44 45 43)
  (39 44 45 43 44)
  (44 45 44 43 45)
  (44 43 45 44 43) ; 64 <-- start line
  (45 44 43 41 45)
  (43 45 44 43 44)
  (42 43 45 44 45)
  (45 44 43 45 43)
  (44 43 45 44 43)
  (43 45 44 45 44) ; 70
  (44 43 45 44 43))))

(5/28)紫の部分の名前をちょっと訂正