shapes Module



Contents


Derived Types

type, public, extends(Field) :: Piece

Components

TypeVisibility AttributesNameInitial
real, public :: move_time =0.5
integer(kind=c_int), public :: sleep_incr =50
real, public :: difffact =1.
integer, public :: level =1
real, public :: diffinc =1.2
integer, public :: score =0
integer, public :: Nblock =0
integer, public :: Ncleared =0
integer, public :: lines_per_level =10
integer, public :: bonus(-1:4) =[-100, 0, 40, 100, 300, 1200]
character(len=1), public :: blockseq(10000) =""
integer, public :: toc
integer, public :: tic
integer, public :: H
integer, public :: W
integer, public :: x0
integer, public, allocatable:: screen(:,:)
logical, public :: debug =.false.
integer, public :: udbg
logical, public :: newhit =.false.
logical, public :: cheat =.false.
logical, public :: AI
character, public :: btype
character(len=80), public :: why
character, public :: ch(12)
integer, public :: Nx
integer, public :: Ny
integer, public :: x
integer, public :: y
integer, public, allocatable:: values(:,:)
logical, public :: landed
logical, public :: movereq

Type-Bound Procedures

procedure, public :: clear_lines
procedure, public :: levelup
procedure, public :: setup
procedure, public :: horizflip
procedure, public :: vertflip
procedure, public :: spawn_block
procedure, public :: dissolver
procedure, public :: move_down
procedure, public :: rotate
procedure, public :: move_left
procedure, public :: move_right
procedure, public :: check_collision
procedure, public :: init => init_block
procedure, private :: hit_block
procedure, private :: hit_floor
procedure, private :: hit_horiz
procedure, private :: tell_why
procedure, private :: randomx

Functions

public function gen_type() result(next)

Arguments

None

Return Value character

private function check_collision(self) result(collided)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

Return Value logical

private function hit_floor(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

Return Value logical

private function hit_horiz(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

Return Value logical

private function hit_block(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

Return Value logical

private function randomx(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(in) :: self

Return Value integer


Subroutines

private subroutine init_block(self, F, btype, x, y)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self
class(Field), intent(in) :: F
character, intent(in), optional :: btype
integer, intent(in), optional :: x
integer, intent(in), optional :: y

private subroutine spawn_block(self, F, NP)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self
class(Field), intent(inout) :: F
class(Piece), intent(inout), optional :: NP

private subroutine dissolver(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

private subroutine move_left(self, slam)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self
logical, intent(in), optional :: slam

private subroutine move_right(self, slam)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self
logical, intent(in), optional :: slam

private recursive subroutine move_down(self, slam)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self
logical, intent(in), optional :: slam

private subroutine rotate(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

private subroutine vertflip(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

private subroutine horizflip(self)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(inout) :: self

private subroutine tell_why(self, msg)

Arguments

Type IntentOptional AttributesName
class(Piece), intent(in) :: self
character(len=*), intent(in), optional :: msg