Changeset 20233 for lang/haskell

Show
Ignore:
Timestamp:
09/29/08 23:54:04 (5 years ago)
Author:
mokehehe
Message:

操作感を似せた
・歩き、走りの速度
・Aボタン長押し
・最大落下速度
・移動速度によるスクロール開始位置調整
・スリップアニメ
1ドット地面にめり込ませた

Location:
lang/haskell/nario
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/haskell/nario/Const.hs

    r20223 r20233  
    1010-- 重力 
    1111gravity = one `div` 2 
     12gravity2 = one `div` 4 
    1213 
    1314-- 画像 
    1415data ImageType = 
    15           ImgNarioLStand | ImgNarioLWalk1 | ImgNarioLWalk2 | ImgNarioLWalk3 | ImgNarioLJump 
    16         | ImgNarioRStand | ImgNarioRWalk1 | ImgNarioRWalk2 | ImgNarioRWalk3 | ImgNarioRJump 
     16          ImgNarioLStand | ImgNarioLWalk1 | ImgNarioLWalk2 | ImgNarioLWalk3 | ImgNarioLJump | ImgNarioLSlip 
     17        | ImgNarioRStand | ImgNarioRWalk1 | ImgNarioRWalk2 | ImgNarioRWalk3 | ImgNarioRJump | ImgNarioRSlip 
    1718        | ImgBlock1 | ImgBlock2 | ImgBlock3 | ImgBlock4 | ImgBlock5 
    1819        | ImgMt02 | ImgMt11 | ImgMt12 | ImgMt13 | ImgMt22 
     
    2021        | ImgDk00 | ImgDk01 | ImgDk10 | ImgDk11 
    2122        | ImgGrass00 | ImgGrass01 | ImgGrass02 
     23        | ImgPole0 | ImgPole1 
    2224        | ImgFont 
    2325        | ImgTitle 
     
    3032imageFn ImgNarioLWalk3 = "narioLWalk3.bmp" 
    3133imageFn ImgNarioLJump = "narioLJump.bmp" 
     34imageFn ImgNarioLSlip = "narioLSlip.bmp" 
    3235imageFn ImgNarioRStand = "narioRStand.bmp" 
    3336imageFn ImgNarioRWalk1 = "narioRWalk1.bmp" 
     
    3538imageFn ImgNarioRWalk3 = "narioRWalk3.bmp" 
    3639imageFn ImgNarioRJump = "narioRJump.bmp" 
     40imageFn ImgNarioRSlip = "narioRSlip.bmp" 
    3741imageFn ImgBlock1 = "block1.bmp" 
    3842imageFn ImgBlock2 = "block2.bmp" 
     
    5862imageFn ImgGrass01 = "grass01.bmp" 
    5963imageFn ImgGrass02 = "grass02.bmp" 
     64imageFn ImgPole0 = "pole0.bmp" 
     65imageFn ImgPole1 = "pole1.bmp" 
    6066imageFn ImgFont = "font.bmp" 
    6167imageFn ImgTitle = "title.bmp" 
    6268 
    6369images = [ 
    64         ImgNarioLStand, ImgNarioLWalk1, ImgNarioLWalk2, ImgNarioLWalk3, ImgNarioLJump, 
    65         ImgNarioRStand, ImgNarioRWalk1, ImgNarioRWalk2, ImgNarioRWalk3, ImgNarioRJump, 
     70        ImgNarioLStand, ImgNarioLWalk1, ImgNarioLWalk2, ImgNarioLWalk3, ImgNarioLJump, ImgNarioLSlip, 
     71        ImgNarioRStand, ImgNarioRWalk1, ImgNarioRWalk2, ImgNarioRWalk3, ImgNarioRJump, ImgNarioRSlip, 
    6672        ImgBlock1, ImgBlock2, ImgBlock3, ImgBlock4, ImgBlock5, 
    6773        ImgMt02, ImgMt11, ImgMt12, ImgMt13, ImgMt22, 
     
    6975        ImgDk00, ImgDk01, ImgDk10, ImgDk11, 
    7076        ImgGrass00, ImgGrass01, ImgGrass02, 
     77        ImgPole0, ImgPole1, 
    7178        ImgFont, 
    7279        ImgTitle 
  • lang/haskell/nario/Field.hs

    r20223 r20233  
    4848chr2img 'l' = ImgDk10 
    4949chr2img '|' = ImgDk11 
    50  
    51 chr2img '!' = ImgDk11 
    52 chr2img 'o' = ImgDk11 
     50chr2img 'o' = ImgPole0 
     51chr2img '!' = ImgPole1 
    5352 
    5453 
  • lang/haskell/nario/Main.hs

    r20223 r20233  
    2323 
    2424-- 背景色 
    25 backColor = 0x2891ff 
     25backColor = 0x5080FF 
    2626 
    2727-- 描画コマンド 
  • lang/haskell/nario/Player.hs

    r20223 r20233  
    1818 
    1919 
    20 maxVx = one * 3 
    21 maxVy = one * 8 
     20walkVx = one * 3 `div` 2 
     21runVx = one * 3 
     22maxVy = one * 6 
    2223acc = one `div` 6 
    23 jumpVy = -17 * gravity 
    24  
     24jumpVy = -13 * gravity 
     25scrollMinX = 5 * chrSize 
     26scrollMaxX = 8 * chrSize 
    2527 
    2628data Player = Player { 
     
    5557walkPatNum = 3 
    5658patJump = patWalk + walkPatNum 
     59patSlip = patJump + 1 
    5760 
    5861imgTable = [ 
    59         [ImgNarioLStand, ImgNarioLWalk1, ImgNarioLWalk2, ImgNarioLWalk3, ImgNarioLJump], 
    60         [ImgNarioRStand, ImgNarioRWalk1, ImgNarioRWalk2, ImgNarioRWalk3, ImgNarioRJump] 
     62        [ImgNarioLStand, ImgNarioLWalk1, ImgNarioLWalk2, ImgNarioLWalk3, ImgNarioLJump, ImgNarioLSlip], 
     63        [ImgNarioRStand, ImgNarioRWalk1, ImgNarioRWalk2, ImgNarioRWalk3, ImgNarioRJump, ImgNarioRSlip] 
    6164        ] 
    6265 
     
    8083                x' = max xmin $ (x player) + vx' 
    8184                scrx' 
    82                         | vx' > 0 && (x' - (scrx player)) `div` one > 160       = (scrx player) + vx' 
    83                         | otherwise                                                                                     = (scrx player) 
     85                        | vx' > 0 && (x' - (scrx player)) `div` one > scrollPos = (scrx player) + vx' 
     86                        | otherwise                                                                                             = (scrx player) 
     87 
     88                scrollPos = (max vx' 0) * (scrollMaxX - scrollMinX) `div` runVx + scrollMinX 
    8489 
    8590                padl = if isPressed (kp PadL) then 1 else 0 
    8691                padr = if isPressed (kp PadR) then 1 else 0 
    8792                maxspd 
    88                         | not $ stand player    = maxVx `div` 2 
    89                         | isPressed (kp PadB)   = maxVx * 2 
    90                         | otherwise                             = maxVx 
     93                        | not $ stand player    = walkVx `div` 2 
     94                        | isPressed (kp PadB)   = walkVx * 2 
     95                        | otherwise                             = walkVx 
    9196                xmin = (scrx player) + chrSize `div` 2 * one 
    9297 
     
    99104                                1       -> 1 
    100105                pat' 
    101                         | vx' == 0              = patStop 
    102                         | otherwise             = (anm' `div` anmCnt) + patWalk 
     106                        | vx' == 0                              = patStop 
     107                        | vx' > 0 && lr' == 0   = patSlip 
     108                        | vx' < 0 && lr' == 1   = patSlip 
     109                        | otherwise                             = (anm' `div` anmCnt) + patWalk 
    103110                anm' 
    104111                        | vx' == 0              = 0 
    105112                        | otherwise             = ((anm player) + (abs vx')) `mod` (walkPatNum * anmCnt) 
    106                 anmCnt = maxVx * 3 
     113                anmCnt = walkVx * 3 
    107114 
    108115 
     
    123130 
    124131-- 重力による落下 
    125 fall :: Player -> Player 
    126 fall player 
     132fall :: KeyProc -> Player -> Player 
     133fall kp player 
    127134        | stand player  = player 
    128135        | otherwise             = player { y = y', vy = vy' } 
    129136        where 
    130                 vy' = min maxVy $ vy player + gravity 
     137                ay 
     138                        | vy player < 0 && isPressed (kp PadA)  = gravity2 
     139                        | otherwise                                                             = gravity 
     140                vy' = min maxVy $ vy player + ay 
    131141                y' = y player + vy' 
    132142 
     
    168178        moveY $ checkX fld $ moveX kp player 
    169179        where 
    170                 moveY = doJump kp . checkFloor fld . checkCeil fld . fall 
     180                moveY = doJump kp . checkFloor fld . checkCeil fld . fall kp 
    171181 
    172182-- スクロール位置取得 
     
    178188        blitSurface (getImageSurface imgres imgtype) Nothing sur pos 
    179189        where 
    180                 pos = pt ((x player) `div` one - chrSize `div` 2 - scrx) ((y player) `div` one - chrSize - 8) 
     190                pos = pt ((x player) `div` one - chrSize `div` 2 - scrx) ((y player) `div` one - chrSize+1 - 8) 
    181191                imgtype = imgTable !! (lr player) !! (pat player) 
  • lang/haskell/nario/data/stage0.map

    r20223 r20233  
    11 
    2                                                                                                                                                                                                       o          
    3                   123               1223                           123              1223                           123              1223                           123              1223              | 123      
     2                                                                                                                                                                                                                 
     3                  123               1223                           123              1223                           123              1223                           123              1223              o 123      
    44        123       456      12223    4556                123        456     12223    4556                123        456     12223    4556                123        456     12223    4556              ! 456      
    55        456                45556                        456                45556                        456                45556                        456                45556                      !