summaryrefslogtreecommitdiff
path: root/piece.f90
blob: 66c3b3252049484a1be8d9d11a7b7f7c4c018426 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
module m_piece
implicit none

    type piece
        integer, dimension(0:3, 0:3)::blocks
        integer::r, c
    end type piece

contains

    function new_piece()
    use m_constants
    implicit none
    
    type(piece)::new_piece
    real::r
    integer::rint
        
        new_piece%r = ROWS-1
        new_piece%c = COLUMNS/2-2

        call random_number(r)
        rint = floor(r*7)

        new_piece%blocks = 0

        select case (rint)
            case (0)
                new_piece%blocks(1:2,1:2) = 1
            case (1)
                new_piece%blocks(:,2) = 1
            case (2)
                new_piece%blocks(2,1:3) = 1
                new_piece%blocks(1,2) = 1
            case (3)
                new_piece%blocks(1,2:3) = 1
                new_piece%blocks(2,1:2) = 1
            case (4)
                new_piece%blocks(2,2:3) = 1
                new_piece%blocks(1,1:2) = 1
            case (5)
                new_piece%blocks(0:2,1) = 1
                new_piece%blocks(2,2) = 1
            case (6)
                new_piece%blocks(0:2,2) = 1
                new_piece%blocks(2,1) = 1
        end select
    
    end function

end module m_piece