۱۳ - ۹داربازی
حالا آمادهایم که یه بازی بسازیم. از دستور 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
هست.