Skip to content
Newer
Older
100644 105 lines (85 sloc) 2.15 KB
2a0ddc5 Change comment to englist
mokehehe authored Nov 3, 2008
1 -- Field
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
2 {-
2a0ddc5 Change comment to englist
mokehehe authored Nov 3, 2008
3 ' ' Space
4 '*' Invisible wall (Temporal char when player punch a wall)
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
5 -}
6
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
7 module Field (
8 Field,
f505b42 落下チェックで床を2点見るように
mokehehe authored Sep 29, 2008
9 Cell,
593a5fd マップ情報をファイルから読み込むよう変更
mokehehe authored Sep 27, 2008
10 loadField,
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
11 fieldRef,
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
12 fieldSet,
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
13 isBlock,
a080f0f ファイヤーナリオのときにショットを撃てるように
mokehehe authored Oct 9, 2008
14 hardBlock,
b6406da ブロックを叩いたときのアニメをマシにした
mokehehe authored Oct 3, 2008
15 renderField,
a080f0f ファイヤーナリオのときにショットを撃てるように
mokehehe authored Oct 9, 2008
16 chr2img
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
17 ) where
18
9672a7a @mokehehe Remove warnings
authored Apr 23, 2009
19 import Graphics.UI.SDL (Surface)
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
20
21 import Const
a3904e8 画像定義ファイルを自動に作成するように
mokehehe authored Oct 1, 2008
22 import Images
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
23 import Util
a3904e8 画像定義ファイルを自動に作成するように
mokehehe authored Oct 1, 2008
24 import AppUtil
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
25
26 type Cell = Char
27 type Field = [[Cell]]
28
29
2a0ddc5 Change comment to englist
mokehehe authored Nov 3, 2008
30 -- Map
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
31
2a0ddc5 Change comment to englist
mokehehe authored Nov 3, 2008
32 -- Load map
593a5fd マップ情報をファイルから読み込むよう変更
mokehehe authored Sep 27, 2008
33 loadField :: Int -> IO Field
34 loadField stage = readFile fn >>= return . lines
35 where
36 fn = "data/stage" ++ (show stage) ++ ".map"
37
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
38
9672a7a @mokehehe Remove warnings
authored Apr 22, 2009
39 chr2img :: Char -> ImageType
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
40 chr2img '@' = ImgBlock1
41 chr2img 'O' = ImgBlock2
17a5c18 1-1のマップ作成
mokehehe authored Sep 27, 2008
42 chr2img 'X' = ImgBlock3
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
43 chr2img '?' = ImgBlock4
b6406da ブロックを叩いたときのアニメをマシにした
mokehehe authored Oct 3, 2008
44 chr2img '#' = ImgBlock5
1249f18 画面をスクロールさせる
mokehehe authored Sep 27, 2008
45 chr2img '_' = ImgMt02
46 chr2img '/' = ImgMt11
47 chr2img ',' = ImgMt12
593a5fd マップ情報をファイルから読み込むよう変更
mokehehe authored Sep 27, 2008
48 chr2img '\\' = ImgMt13
1249f18 画面をスクロールさせる
mokehehe authored Sep 27, 2008
49 chr2img '.' = ImgMt22
50 chr2img '1' = ImgCloud00
51 chr2img '2' = ImgCloud01
52 chr2img '3' = ImgCloud02
53 chr2img '4' = ImgCloud10
54 chr2img '5' = ImgCloud11
55 chr2img '6' = ImgCloud12
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
56 chr2img '7' = ImgGrass0
57 chr2img '8' = ImgGrass1
58 chr2img '9' = ImgGrass2
1249f18 画面をスクロールさせる
mokehehe authored Sep 27, 2008
59 chr2img '[' = ImgDk00
60 chr2img ']' = ImgDk01
61 chr2img 'l' = ImgDk10
62 chr2img '|' = ImgDk11
0c86155 操作感を似せた
mokehehe authored Sep 29, 2008
63 chr2img 'o' = ImgPole0
64 chr2img '!' = ImgPole1
d5f7af9 きのこ追加
mokehehe authored Oct 4, 2008
65 chr2img 'K' = ImgBlock4
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
66
9672a7a @mokehehe Remove warnings
authored Apr 22, 2009
67 chr2img _ = undefined
68
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
69
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
70 isBlock :: Cell -> Bool
d5f7af9 きのこ追加
mokehehe authored Oct 4, 2008
71 isBlock = (`elem` "@OX?#[]l|*K")
b6406da ブロックを叩いたときのアニメをマシにした
mokehehe authored Oct 3, 2008
72
73 hardBlock :: Cell -> Bool
74 hardBlock = (`elem` "#X@*")
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
75
76 inField :: Field -> Int -> Int -> Bool
77 inField fld x y = 0 <= y && y < length fld && 0 <= x && x < length (fld !! y)
78
79 fieldRef :: Field -> Int -> Int -> Cell
80 fieldRef fld x y
81 | inField fld x y = fld !! y !! x
82 | otherwise = ' '
83
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
84 fieldSet :: Field -> Int -> Int -> Cell -> Field
85 fieldSet fld x y c
86 | inField fld x y = replace fld y $ replace (fld !! y) x c
87 | otherwise = fld
88
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
89
9672a7a @mokehehe Remove warnings
authored Apr 22, 2009
90 renderField :: Surface -> ImageResource -> Int -> Field -> IO ()
17a5c18 1-1のマップ作成
mokehehe authored Sep 27, 2008
91 renderField sur imgres scrx fld =
92 sequence_ $ concatMap lineProc $ zip [0..] fld
89cd461 ジャンプの処理
mokehehe authored Sep 27, 2008
93 where
17a5c18 1-1のマップ作成
mokehehe authored Sep 27, 2008
94 lineProc (y, ln) = map (cellProc y) $ zip [0..] $ window ln
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored Sep 29, 2008
95 cellProc y (x, c)
96 | c `elem` " *" = return ()
97 | otherwise = putchr x y c >> return ()
94056ab ソース整理
mokehehe authored Oct 7, 2008
98 putchr x y c = putimg sur imgres (chr2img c) (x*chrSize - rx) (y*chrSize - 8)
17a5c18 1-1のマップ作成
mokehehe authored Sep 27, 2008
99
100 -- 表示される部分だけ取り出す
101 window = take w . drop qx
102 qx = scrx `div` chrSize
103 rx = scrx `mod` chrSize
104 w = 256 `div` chrSize + 1
Something went wrong with that request. Please try again.