- Debian で實行した
- Stack はインストールしてゐた
- https://www.libsdl.org/download-2.0.php へ行く
- 新しいソースコードをダウンロード
- ダウンロードしたファイル (例えば SDL2-2.0.16.tar.gz とかいふもの)を解凍する
tar -zxvf SDL2-*
- 解凍してできたフォルダに移動
- 次のコマンドを實行する
./configure && make -j4 && sudo make install
- 開発のための適當なディレクトリヘ移動し
stack new myproject
などとする(ここで myproject は仮の名前であるーー實際は 好きな名前にする)
- ここで作成されたディレクトリヘ移動する
cd myproject
package.yaml
といふファイルがある筈だ
これを編集するdependencies:
といふところに- sdl2
を加える
dependencies: - base >= 4.7 && < 5 - sdl2
- イメージの讀み込みを實驗するため
mkdir images
などとして
イメージファイル用のディレクトリを作る - その中に何らかのビットマップファイル(拡張子が
.bmp
のもの)を入れる
私の場合はkagunomi.bmp
といふものを入れた app
といふディレクトリがある筈だ
そこにあるMain.hs
を編集する
vi app/Main.hs
上の例は エディタとしてvimを使った場合だが
編集できれば何でもよい
{-# LANGUAGE OverloadedStrings #-} module Main where --import Lib import SDL import Control.Monad (unless) main :: IO () main = do initializeAll let myWindow = defaultWindow {windowInitialSize = V2 480 600} window <- createWindow "FuncPong" myWindow image <- loadBMP "./images/kagunomi.bmp" renderer <- createRenderer window (-1) defaultRenderer texture <- createTextureFromSurface renderer image appLoop renderer texture destroyWindow window appLoop :: Renderer -> Texture -> IO () appLoop renderer texture = do events <- pollEvents let eventIsQPress event = case eventPayload event of KeyboardEvent keyboardEvent -> keyboardEventKeyMotion keyboardEvent == Pressed && keysymKeycode (keyboardEventKeysym keyboardEvent) == KeycodeQ _ -> False qPressed = any eventIsQPress events rendererDrawColor renderer $= V4 182 100 255 255 clear renderer rendererDrawColor renderer $= V4 0 0 0 255 drawPoint renderer (P (V2 100 100)) drawLine renderer (P (V2 50 50)) (P (V2 80 80)) rendererDrawColor renderer $= V4 100 100 100 255 fillRect renderer (Just (Rectangle (P (V2 200 200)) (V2 100 100))) copy renderer texture Nothing (Just (Rectangle (P (V2 30 300)) (V2 100 100))) present renderer unless qPressed (appLoop renderer texture)
stack exec myproject-exe
などとして實行する(myproject の部分は 最初に stack new
の後に入力した名前だ)
といふ感じで 取り急ぎ 私が實行した手順をまとめてみた
色々言ひたいこともあるが それは順次 書き足していかうと思ふ