********************
FUNCTION HapusLayar
********************
* Menghapus Layar dengan pola tertentu
PARAMETERS pola, lama
PRIVATE maxrow, maxcol, midpoint, xx, yy, mrow, buffer
IF PCOUNT() = 0
pola := 1
lama := 100
ELSEIF PCOUNT() = 1
lama := 100
ENDIF
maxrow := 24
maxcol := 79
midpoint := int((maxcol + 1) / 2)
DO CASE
CASE pola = 1 && hapus ke bawah
FOR xx := 0 to maxrow
SCROLL(xx, 0, xx, maxcol, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 2 && Hapus ke atas
FOR xx := maxrow to 0 step -1
SCROLL(xx, 0, xx, maxcol, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 3 && Hapus ke kanan
FOR xx := 0 to maxcol
SCROLL(0, xx, maxrow, xx, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 4 && Hapus ke kiri
FOR xx := maxcol to 0 step -1
SCROLL(0, xx, maxrow, xx, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 5 && Tirai terbuka
FOR xx := midpoint to maxcol
SCROLL(00, maxcol-xx, maxrow, maxcol-xx, 0)
SCROLL(0, xx, maxrow, xx, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 6 && Tirai tertutup
FOR xx := maxcol to midpoint step -1
SCROLL(00, maxcol-xx, maxrow, maxcol-xx, 0)
SCROLL(0, xx, maxrow, xx, 0)
FOR yy := 1 TO lama
NEXT
NEXT
CASE pola = 7 && Lensa tertutup
mrow := 0
FOR xx := 0 to 33 step 3
scroll(mrow, xx, mrow, maxcol - xx, 0)
scroll(maxrow - mrow, xx, maxrow - mrow, maxcol - xx, 0)
scroll(mrow, xx, maxrow - mrow, xx + 3, 0)
SCROLL(mrow, 76 - xx, maxrow - mrow, maxcol - xx, 0)
FOR yy := 1 TO lama
NEXT
mrow := mrow + 1
NEXT
scroll(mrow, 37, mrow, 42, 0)
CASE pola = 8 && terbelah diagonal
FOR xx := 0 to maxcol
scroll(int(xx/3.2), xx, maxrow, xx, 0)
scroll(0, maxcol - xx, maxrow - int(xx/3.2), maxcol - xx, 0)
FOR yy := 1 to lama
NEXT
NEXT
otherwise && terbelah dua, kiri dan kanan
FOR xx := 0 to maxrow
buffer := savescreen(xx, 0, maxrow - 1, MIDPOINT - 1)
scroll(xx, 0, xx, MIDPOINT - 1, 0)
if xx <>
restscreen(xx+1, 0, maxrow, MIDPOINT - 1, buffer)
endif
buffer := savescreen(1, MIDPOINT, maxrow-xx, maxcol)
scroll(maxrow-xx, MIDPOINT, maxrow-xx, maxcol, 0)
if xx <>
restscreen(0, MIDPOINT, maxrow - 1 - xx, maxcol, buffer)
endif
FOR yy := 1 to lama
NEXT
NEXT
ENDCASE
RETURN .T.