۱۳ - ۹داربازی
حالا آمادهایم که یه بازی بسازیم. از دستور new از Stack برای ساخت این پروژه استفاده میکنیم:
$ stack new hangman simpleبا این کار یه پوشه به اسمِ hangman براتون درست میشه و چندتا فایلِ پیشفرض هم داخلش گذاشته میشه.
یه فایلِ words لازم دارین که لغات رو ازش بگیرین. بیشترِ سیستم عاملهای برپایهی یونیکس، در یه آدرسی مشابه زیر، یه لیستِ لغات دارن:
$ ls /usr/share/dict/
American-english british-english
cracklib-smal README.select-wordlist
words words.pre-dictionaries-commonاینجا از لیستِ لغاتِ words استفاده میکنیم، که احتمالاً همون لیستیه که سیستم عامل ِتون به طورِ پیشفرض استفاده میکنه. ممکنه برای شما جای دیگهای باشه، شاید هم مجبور شین دانلودش کنین. میذاریمش تو یه پوشه در آدرس پروژهمون:
$ tree .
.
├── LICENSE
├── Setup.hs
├── data
| └── dict.txt
├── hangman.cabal
├── src
| └── Main.hs
└── stack.yamlلغات در اون فایل با خط جدید از هم جدا شدن، یعنی اینطوری:
$ head data/dict.txt
A
a
aa
aal
aalii
aam
Aani
aardvark
aardwolf
Aaronحالا فایلِ .cabal رو مثل زیر تغییر بدین:
name: hangman
version: 0.1.0.0
synopsis: Playing Hangman
homepage: Chris N Julie
license: BSD3
license-file: LICENSE
author: Chris Allen and Julie Moronuki
maintainer: haskellbook.com
category: Game
build-type: Simple
extra-source-files: data/dict.txt
cabal-version: >=1.10
executable hangman
main-is Main.hs
hs-source-dirs: src
build-depends: base >=4.7 && <5
, random
, split
default-language: Haskell2010تیکهی مهمش اینه که اینجا از دو تا کتابخونه استفاده کردیم: random و split. بطور معمول یه بازه از نسخههای وابستگیها نوشته میشن (مثل base در این مثال)، اما ما نسخههای random و split رو تعیین نکردیم چون خیلی تغییر نمیکنن. تنها فایل منبع ِ اصلی، src/Main.hs هست.