summaryrefslogtreecommitdiff
path: root/piece.f90
blob: 6d48b1c62d484a2bb7f59afe735d214c886e4cc9 (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
52
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
    use bgi
    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) = BLUE
            case (1)
                new_piece%blocks(:,2) = LIGHTGREEN
            case (2)
                new_piece%blocks(2,1:3) = RED
                new_piece%blocks(1,2) = RED
            case (3)
                new_piece%blocks(1,2:3) = MAGENTA
                new_piece%blocks(2,1:2) = MAGENTA
            case (4)
                new_piece%blocks(2,2:3) = CYAN
                new_piece%blocks(1,1:2) = CYAN
            case (5)
                new_piece%blocks(0:2,1) = GREEN
                new_piece%blocks(2,2) = GREEN
            case (6)
                new_piece%blocks(0:2,2) = LIGHTRED
                new_piece%blocks(2,1) = LIGHTRED
        end select
    
    end function

end module m_piece