Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- pune zero intr o casa x
- put0onHouseX x lista = take (x) lista ++ [0] ++ drop (x+1) lista
- -- pune ceva <- dat ca parametru intr o casa x
- putonHouseX x lista ceva = take (x) lista ++ [ceva] ++ drop (x+1) lista
- -- intoarce lista totala , doar ca lista oponentului este inversata
- reverseOpp lista = (take 7 lista) ++ reverse(drop 7 $ take 13 lista ) ++ [last lista]
- -- se apeleaza cu 2 (lista!!2) (put0onHouseX 2 (reverseOpp lista) )
- -- intoarce lista dupa ce s-a adaugat +1 peste tot , dar fara a REinversa lista oponentului
- updateCuUnu x nrSeed lista = if nrSeed == 0 then lista
- else updateCuUnu ((x+1)`mod`13) (nrSeed-1) (putonHouseX ((x+1)`mod`13) lista (1 + (lista!!((x+1)`mod`13))))
- -- se aplezeaza cu 2 (lista!!2) (put0onHouseX 2 (reverseOpp lista) )
- -- intoarce lista totala in urma adaugarii +1 (lista corecta care va fi primita de Board)
- listaPlusUnu x nrSeed lista = reverseOpp (updateCuUnu x (lista!!x) (put0onHouseX x (reverseOpp lista)))
- -- ok pana aici
- capture x lista = let listanoua = (listaPlusUnu x (fromIntegral (lista!!x)) lista)
- nrSeed = (fromIntegral (lista!!(x))) in
- if listanoua !! ((x+nrSeed)`mod`13) == 1 && ((x+nrSeed)`mod`13) /= 6 && ((reverseOpp listanoua)!!(12-((x+nrSeed)`mod`13))) /= 0 then
- reverseOpp(put0onHouseX (12-((x+nrSeed)`mod`13)) (reverseOpp ((put0onHouseX ((x+nrSeed)`mod`13) (putonHouseX 6 listanoua ((listanoua!!6)+1 + ((reverseOpp listanoua)!!(12-((x+nrSeed)`mod` 13)))))))))
- else listanoua
- remake x lista = if x == 1 then
- (reverse $ take 6 $ drop 7 lista)++[last lista] ++ (reverse(take 6 lista)) ++ [lista!!6]
- else
- (drop 7 lista) ++ (take 6 lista) ++ [lista!!6]
- listaDinBoard (Board lista player) = lista
- move :: House -> Board -> Board
- move x (Board lista player)
- | x > 6 || x < 1 || isOver (Board lista player) = (Board lista player)
- | player == You && (lista !! (x-1)) == 0 = (Board lista player)
- | player == Opponent && ((remake 0 (reverseOpp lista ))!!(6-x)) == 0 = (Board lista player)
- | player == You && (x+(fromIntegral(lista!!(x-1)))`mod`13) == 7 = (Board ( capture (x-1) lista ) You)
- | player == You = (Board ( capture (x-1) lista ) Opponent)
- | player == Opponent && ((7-x)+(fromIntegral((remake 0 (reverseOpp lista ))!!(6-x)))`mod`13) == 7
- = (Board (remake 1 (capture (6-x) (reverseOpp(remake 0 (reverseOpp lista ))))) Opponent )
- | player == Opponent = (Board (remake 1 (capture (6-x) (reverseOpp(remake 0 (reverseOpp lista ))))) You )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement