Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 46 lines (31 sloc) 1.196 kb
a080f0f ファイヤーナリオのときにショットを撃てるように
mokehehe authored
1 {-# LANGUAGE ExistentialQuantification #-}
94056ab ソース整理
mokehehe authored
2
2a0ddc5 Change comment to englist
mokehehe authored
3 -- Object that appear in the game
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
4
43012e9 スクロールで敵を出すように
mokehehe authored
5 module Actor (
d5f7af9 きのこ追加
mokehehe authored
6 Actor(..),
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
7 ActorWrapper(..),
43012e9 スクロールで敵を出すように
mokehehe authored
8 updateActors,
9 filterActors,
10 renderActors
11 ) where
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
12
eae44f8 Change SDL module from HSDL to Graphics.UI.SDL
mokehehe authored
13 import Graphics.UI.SDL (Surface)
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
14
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
15 import AppUtil (ImageResource, Rect)
94056ab ソース整理
mokehehe authored
16 import Event (Event)
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
17 import Field (Field)
a080f0f ファイヤーナリオのときにショットを撃てるように
mokehehe authored
18 import {-# SOURCE #-} Player (Player)
43012e9 スクロールで敵を出すように
mokehehe authored
19
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
20
5972c14 Existence 型を使って書き換え
mokehehe authored
21 class Actor a where
d5f7af9 きのこ追加
mokehehe authored
22 update :: Field -> a -> (a, [Event])
5972c14 Existence 型を使って書き換え
mokehehe authored
23 render :: a -> ImageResource -> Int -> Surface -> IO ()
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
24
5972c14 Existence 型を使って書き換え
mokehehe authored
25 bDead :: a -> Bool
d5f7af9 きのこ追加
mokehehe authored
26 bDead _ = False
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
27
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
28 getHitRect :: a -> Maybe Rect
29 getHitRect _ = Nothing
30
374232a プレーヤー操作性調整
mokehehe authored
31 onHit :: Player -> a -> (Player, Maybe ActorWrapper, [Event])
9672a7a mokehehe Remove warnings
authored
32 onHit pl _ = (pl, Nothing, [])
80060b5 きのこを取って巨大化
mokehehe authored
33
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
34
b6406da ブロックを叩いたときのアニメをマシにした
mokehehe authored
35 ----
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
36 data ActorWrapper = forall a. Actor a => ActorWrapper a -- 存在型aの動く範囲を型クラスに制限
b6406da ブロックを叩いたときのアニメをマシにした
mokehehe authored
37
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
38 updateActors :: Field -> [ActorWrapper] -> [(ActorWrapper, [Event])]
39 updateActors fld = map (\(ActorWrapper x) -> let (x', ev') = update fld x in (ActorWrapper x', ev'))
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
40
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
41 filterActors :: [ActorWrapper] -> [ActorWrapper]
42 filterActors = filter (\(ActorWrapper x) -> not $ bDead x)
1b822dd ブロックを叩けるようにしてみた(仮)
mokehehe authored
43
6befbb3 プレーヤーとの当たり判定追加
mokehehe authored
44 renderActors :: ImageResource -> Int -> Surface -> [ActorWrapper] -> IO ()
45 renderActors imgres ofsx sur = mapM_ (\(ActorWrapper x) -> render x imgres ofsx sur)
Something went wrong with that request. Please try again.