Forum Życie Wieczne Strona Główna Życie Wieczne

 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Gra w QuickBasic-u
Idź do strony Poprzedni  1, 2, 3, 4, 5  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Życie Wieczne Strona Główna -> Offtopic
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pią 17:44, 08 Sty 2021    Temat postu:

SCREEN 13

DEF SEG = 0: REM to dla pomiarow predkosci

REM ************************* wspolrzedne startowe

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow

FOR i = 1 TO 40: mur$ = mur$ + CHR$(177): NEXT i
murl$ = CHR$(177): FOR i = 1 TO 39: murl$ = murl$ + CHR$(32): NEXT i
FOR i = 1 TO 39: murp$ = murp$ + CHR$(32): NEXT i: murp$ = murp$ + CHR$(177)
FOR i = 1 TO 40: puste$ = puste$ + CHR$(32): NEXT i

FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i:
FOR i = 1 TO 4: dziura$ = dziura$ + CHR$(32): NEXT i:
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i

dwiesciany$ = CHR$(177)
FOR i = 1 TO 38: dwiesciany$ = dwiesciany$ + CHR$(32): NEXT i
dwiesciany$ = dwiesciany$ + CHR$(177)

FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 22: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i

trzyscianyl$ = CHR$(177)
FOR i = 1 TO 12: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
FOR i = 1 TO 25: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)

trzyscianyp$ = CHR$(177)
FOR i = 1 TO 25: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
FOR i = 1 TO 12: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)


REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia

CLS
COLOR 100
t0 = PEEK(1132): REM pomiar czasu
FOR i = 1 TO 23
a$ = MID$(kod$, i, 1)
IF a$ = "#" THEN PRINT mur$
IF a$ = "." THEN PRINT puste$
IF a$ = "L" THEN PRINT murl$
IF a$ = "P" THEN PRINT murp$
IF a$ = "H" THEN PRINT dwiesciany$
IF a$ = "U" THEN PRINT dziura$
IF a$ = "W" THEN PRINT dwiedziury$
IF a$ = "3" THEN PRINT trzyscianyl$
IF a$ = "4" THEN PRINT trzyscianyp$

NEXT i
REM pomiar czasu rysowanie
t1 = PEEK(1132): REM PRINT t0, t1
LOCATE y, x: COLOR 14: PRINT CHR$(2);
REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

LOCATE y, x: PRINT CHR$(2)

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pią 19:53, 08 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow

FOR i = 1 TO 40: mur$ = mur$ + CHR$(177): NEXT i
murl$ = CHR$(177): FOR i = 1 TO 39: murl$ = murl$ + CHR$(32): NEXT i
FOR i = 1 TO 39: murp$ = murp$ + CHR$(32): NEXT i: murp$ = murp$ + CHR$(177)
FOR i = 1 TO 40: puste$ = puste$ + CHR$(32): NEXT i

FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i:
FOR i = 1 TO 4: dziura$ = dziura$ + CHR$(32): NEXT i:
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i

dwiesciany$ = CHR$(177)
FOR i = 1 TO 38: dwiesciany$ = dwiesciany$ + CHR$(32): NEXT i
dwiesciany$ = dwiesciany$ + CHR$(177)

FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 22: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i

trzyscianyl$ = CHR$(177)
FOR i = 1 TO 12: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
FOR i = 1 TO 25: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)

trzyscianyp$ = CHR$(177)
FOR i = 1 TO 25: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
FOR i = 1 TO 12: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)


REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia

CLS
COLOR 100
t0 = PEEK(1132): REM pomiar czasu
FOR i = 1 TO 23
a$ = MID$(kod$, i, 1)
SELECT CASE a$
CASE "#"
PRINT mur$
CASE "."
PRINT puste$
CASE "L"
PRINT murl$
CASE "P"
PRINT murp$
CASE "H"
PRINT dwiesciany$
CASE "U"
PRINT dziura$
CASE "W"
PRINT dwiedziury$
CASE "3"
PRINT trzyscianyl$
CASE "4"
PRINT trzyscianyp$
END SELECT


NEXT i
REM pomiar czasu rysowanie
t1 = PEEK(1132): REM PRINT t0, t1
LOCATE y, x: COLOR 14: PRINT CHR$(2);
REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

LOCATE y, x: PRINT CHR$(2)

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pią 22:53, 08 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow

REM kod elementu "#" - mur na cal szerokosc ekranu
FOR i = 1 TO 40: mur$ = mur$ + CHR$(177): NEXT i
wiersz$(35) = mur$:

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
murl$ = CHR$(177): FOR i = 1 TO 39: murl$ = murl$ + CHR$(32): NEXT i
wiersz$(76) = murl$

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
FOR i = 1 TO 39: murp$ = murp$ + CHR$(32): NEXT i: murp$ = murp$ + CHR$(177)
wiersz$(80) = murp$

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
FOR i = 1 TO 40: puste$ = puste$ + CHR$(32): NEXT i
wiersz$(46) = puste$

REM kod elementu "U" - dziura na srodku muru
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i:
FOR i = 1 TO 4: dziura$ = dziura$ + CHR$(32): NEXT i:
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i
wiersz$(85) = dziura$

REM kod elenetu "H" - dwie sciany na obu krawedziach
dwiesciany$ = CHR$(177)
FOR i = 1 TO 38: dwiesciany$ = dwiesciany$ + CHR$(32): NEXT i
dwiesciany$ = dwiesciany$ + CHR$(177)
wiersz$(72) = dwiesciany$

REM kod elementu "W" - dwie dziury w murze
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 22: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
wiersz$(87) = dwiedziury$

REM kod elementu "3" - trzy sciany w tym jedna po lewej
trzyscianyl$ = CHR$(177)
FOR i = 1 TO 12: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
FOR i = 1 TO 25: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
wiersz$(51) = trzyscianyl$

REM kod elementu "4" - trzy sciany w tym jedna po prawej
trzyscianyp$ = CHR$(177)
FOR i = 1 TO 25: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
FOR i = 1 TO 12: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
wiersz$(52) = trzyscianyp$

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia

CLS
COLOR 100
t0 = PEEK(1132): REM pomiar czasu rysowania

FOR i = 1 TO 23
a$ = MID$(kod$, i, 1)
ascii = ASC(a$)
PRINT wiersz$(ascii)
NEXT i

REM pomiar czasu rysowania
t1 = PEEK(1132): REM LOCATE 24, 10: PRINT t0; t1;
LOCATE y, x: COLOR 14: PRINT CHR$(2);
REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

LOCATE y, x: PRINT CHR$(2)

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pią 23:21, 08 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow

REM kod elementu "#" - mur na cal szerokosc ekranu
FOR i = 1 TO 40: mur$ = mur$ + CHR$(177): NEXT i
wiersz$(35) = mur$:

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
murl$ = CHR$(177): FOR i = 1 TO 39: murl$ = murl$ + CHR$(32): NEXT i
wiersz$(76) = murl$

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
FOR i = 1 TO 39: murp$ = murp$ + CHR$(32): NEXT i: murp$ = murp$ + CHR$(177)
wiersz$(80) = murp$

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
FOR i = 1 TO 40: puste$ = puste$ + CHR$(32): NEXT i
wiersz$(46) = puste$

REM kod elementu "U" - dziura na srodku muru
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i:
FOR i = 1 TO 4: dziura$ = dziura$ + CHR$(32): NEXT i:
FOR i = 1 TO 18: dziura$ = dziura$ + CHR$(177): NEXT i
wiersz$(85) = dziura$

REM kod elenetu "H" - dwie sciany na obu krawedziach
dwiesciany$ = CHR$(177)
FOR i = 1 TO 38: dwiesciany$ = dwiesciany$ + CHR$(32): NEXT i
dwiesciany$ = dwiesciany$ + CHR$(177)
wiersz$(72) = dwiesciany$

REM kod elementu "W" - dwie dziury w murze
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 22: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
FOR i = 1 TO 4: dwiedziury$ = dwiedziury$ + CHR$(32): NEXT i
FOR i = 1 TO 5: dwiedziury$ = dwiedziury$ + CHR$(177): NEXT i
wiersz$(87) = dwiedziury$

REM kod elementu "3" - trzy sciany w tym jedna po lewej
trzyscianyl$ = CHR$(177)
FOR i = 1 TO 12: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
FOR i = 1 TO 25: trzyscianyl$ = trzyscianyl$ + CHR$(32): NEXT i
trzyscianyl$ = trzyscianyl$ + CHR$(177)
wiersz$(51) = trzyscianyl$

REM kod elementu "4" - trzy sciany w tym jedna po prawej
trzyscianyp$ = CHR$(177)
FOR i = 1 TO 25: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
FOR i = 1 TO 12: trzyscianyp$ = trzyscianyp$ + CHR$(32): NEXT i
trzyscianyp$ = trzyscianyp$ + CHR$(177)
wiersz$(52) = trzyscianyp$

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
LOCATE y, x: COLOR 14: PRINT CHR$(2);

REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

LOCATE y, x: PRINT CHR$(2)

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Nie 12:36, 10 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
LOCATE y, x: COLOR 14: PRINT CHR$(2);

REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

LOCATE y, x: PRINT CHR$(2)

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Nie 14:16, 10 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM znak(0 TO 16) AS LONG

znak(0) = 524352: znak(1) = 235798528: znak(2) = 14: znak(3) = 235798528
znak(4) = 14: znak(5) = 234881024: znak(6) = 0: znak(7) = 235802112
znak(8) = 3598: znak(9) = 234881038: znak(10) = 917504: znak(11) = 235798528
znak(12) = 14: znak(13) = 917504: znak(14) = 14: znak(15) = 921088:
znak(16) = 3598
REM PUT (x, y), znak - jego wyswietlenie


REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), znak
REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

REM LOCATE y, x: PRINT CHR$(2)
PUT ((x - 1) * 8, (y - 1) * 8), znak

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Nie 16:23, 10 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM znak(0 TO 16) AS LONG

znak(0) = &H80040
znak(1) = &H7070000: znak(2) = &H7
znak(3) = &HF0F0000: znak(4) = &HF
znak(5) = &HF000000: znak(6) = &H0
znak(7) = &HC0C0C00: znak(8) = &HC0C
znak(9) = &HC00000F: znak(10) = &HF0000
znak(11) = &HB0B0000: znak(12) = &HB
znak(13) = &HB0000: znak(14) = &HB
znak(15) = &HE0E00: znak(16) = &HE0E



REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), znak
REM *************************** petla glowna

petla:

REM czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy przejscie do innej planszy

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 24 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy cos mozna wziac

pobrany = SCREEN(y, x)
IF pobrany = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM ********** kropka tez umozliwia ruch

IF pobrany = 46 THEN GOTO ruch

IF pobrany <> 32 THEN x = xs: y = ys: GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: COLOR 14: PRINT " ";

REM ************* rysowanie nowej postaci

REM LOCATE y, x: PRINT CHR$(2)
PUT ((x - 1) * 8, (y - 1) * 8), znak

xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Nie 18:35, 10 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM ZNAK(0 TO 32) AS LONG

ZNAK(0) = &H100040

ZNAK(1) = &H8080000: ZNAK(2) = &H8
ZNAK(3) = &HF0F0000: ZNAK(4) = &HF
ZNAK(5) = &HF0F0000: ZNAK(6) = &HF
ZNAK(7) = &HF000000: ZNAK(8) = &H0
ZNAK(9) = &HC0C0C00: ZNAK(10) = &HC0C
ZNAK(11) = &HC0C0C0C: ZNAK(12) = &HC0C0C
ZNAK(13) = &HC0C0C0C: ZNAK(14) = &HC0C0C
ZNAK(15) = &HC0C000C: ZNAK(16) = &HC000C
ZNAK(17) = &H808000F: ZNAK(18) = &HF0008
ZNAK(19) = &HB0B0000: ZNAK(20) = &HB
ZNAK(21) = &HB0000: ZNAK(22) = &HB
ZNAK(23) = &HB0000: ZNAK(24) = &HB
ZNAK(25) = &HB0000: ZNAK(26) = &HB
ZNAK(27) = &HB0000: ZNAK(28) = &HB
ZNAK(29) = &HB0000: ZNAK(30) = &HB
ZNAK(31) = &H70700: ZNAK(32) = &H707



REM kody elementow planszy beda wywolane przez numer kodu ascii
DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* skok do danych pomieszczenia

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), ZNAK


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1
IF k$ = CHR$(0) + "K" THEN x = x - 1
IF k$ = CHR$(0) + "H" THEN y = y - 1
IF k$ = CHR$(0) + "P" THEN y = y + 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";
REM ************* rysowanie nowej postaci

PUT ((x - 1) * 8, (y - 1) * 8), ZNAK
xs = x: ys = y

GOTO petla

REM *************************dane pomieszczen

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Nie 19:39, 10 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM ZNAK(0 TO 32) AS LONG

ZNAK(0) = &H100040

ZNAK(1) = &H8080000: ZNAK(2) = &H8
ZNAK(3) = &HF0F0000: ZNAK(4) = &HF
ZNAK(5) = &HF0F0000: ZNAK(6) = &HF
ZNAK(7) = &HF000000: ZNAK(8) = &H0
ZNAK(9) = &HC0C0C00: ZNAK(10) = &HC0C
ZNAK(11) = &HC0C0C0C: ZNAK(12) = &HC0C0C
ZNAK(13) = &HC0C0C0C: ZNAK(14) = &HC0C0C
ZNAK(15) = &HC0C000C: ZNAK(16) = &HC000C
ZNAK(17) = &H808000F: ZNAK(18) = &HF0008
ZNAK(19) = &HB0B0000: ZNAK(20) = &HB
ZNAK(21) = &HB0000: ZNAK(22) = &HB
ZNAK(23) = &HB0000: ZNAK(24) = &HB
ZNAK(25) = &HB0000: ZNAK(26) = &HB
ZNAK(27) = &HB0000: ZNAK(28) = &HB
ZNAK(29) = &HB0000: ZNAK(30) = &HB
ZNAK(31) = &H70700: ZNAK(32) = &H707

REM ludzik idacy w prawo

DIM ZNAKP(0 TO 32) AS LONG

ZNAKP(0) = &H100040

ZNAKP(1) = &H8080000: ZNAKP(2) = &H8
ZNAKP(3) = &HF0F0000: ZNAKP(4) = &HF0F
ZNAKP(5) = &HF0F0000: ZNAKP(6) = &HF
ZNAKP(7) = &HF000000: ZNAKP(8) = &H0
ZNAKP(9) = &HC000000: ZNAKP(10) = &HC
ZNAKP(11) = &HC0C0000: ZNAKP(12) = &HC0C
ZNAKP(13) = &HC0C0C00: ZNAKP(14) = &HC0C0C
ZNAKP(15) = &HC0C0C00: ZNAKP(16) = &HC000C
ZNAKP(17) = &H8080F00: ZNAKP(18) = &HF0008
ZNAKP(19) = &HB0B0000: ZNAKP(20) = &HB
ZNAKP(21) = &HB0000: ZNAKP(22) = &HB
ZNAKP(23) = &HB0000: ZNAKP(24) = &HB00
ZNAKP(25) = &HB0000: ZNAKP(26) = &HB00
ZNAKP(27) = &HB00: ZNAKP(28) = &HB
ZNAKP(29) = &HB00: ZNAKP(30) = &HB
ZNAKP(31) = &H70707: ZNAKP(32) = &H707

REM ludzik idacy w lewo

DIM ZNAKL(0 TO 32) AS LONG

ZNAKL(0) = &H100040

ZNAKL(1) = &H8080000: ZNAKL(2) = &H8
ZNAKL(3) = &HF0F0F00: ZNAKL(4) = &HF
ZNAKL(5) = &HF0F0000: ZNAKL(6) = &HF
ZNAKL(7) = &HF000000: ZNAKL(8) = &H0
ZNAKL(9) = &HC000000: ZNAKL(10) = &HC
ZNAKL(11) = &HC0C0000: ZNAKL(12) = &HC0C
ZNAKL(13) = &HC0C0C00: ZNAKL(14) = &HC0C
ZNAKL(15) = &HC0C000C: ZNAKL(16) = &HC0C
ZNAKL(17) = &H808000F: ZNAKL(18) = &HF08
ZNAKL(19) = &HB0B0000: ZNAKL(20) = &HB
ZNAKL(21) = &HB0000: ZNAKL(22) = &HB
ZNAKL(23) = &HB00: ZNAKL(24) = &HB
ZNAKL(25) = &HB00: ZNAKL(26) = &HB
ZNAKL(27) = &HB0000: ZNAKL(28) = &HB00
ZNAKL(29) = &HB0000: ZNAKL(30) = &HB00
ZNAKL(31) = &H70700: ZNAKL(32) = &H70707



REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), ZNAK


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";
REM ************* rysowanie nowej postaci

IF obrot = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAK
IF obrot = -1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL
IF obrot = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP

xs = x: ys = y

GOTO petla

REM ************************* DANE POMIESZCZEN

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pon 0:02, 11 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM ZNAK(0 TO 32) AS LONG

ZNAK(0) = &H100040

ZNAK(1) = &H8080000: ZNAK(2) = &H8
ZNAK(3) = &HF0F0000: ZNAK(4) = &HF
ZNAK(5) = &HF0F0000: ZNAK(6) = &HF
ZNAK(7) = &HF000000: ZNAK(8) = &H0
ZNAK(9) = &HC0C0C00: ZNAK(10) = &HC0C
ZNAK(11) = &HC0C0C0C: ZNAK(12) = &HC0C0C
ZNAK(13) = &HC0C0C0C: ZNAK(14) = &HC0C0C
ZNAK(15) = &HC0C000C: ZNAK(16) = &HC000C
ZNAK(17) = &H808000F: ZNAK(18) = &HF0008
ZNAK(19) = &HB0B0000: ZNAK(20) = &HB
ZNAK(21) = &HB0000: ZNAK(22) = &HB
ZNAK(23) = &HB0000: ZNAK(24) = &HB
ZNAK(25) = &HB0000: ZNAK(26) = &HB
ZNAK(27) = &HB0000: ZNAK(28) = &HB
ZNAK(29) = &HB0000: ZNAK(30) = &HB
ZNAK(31) = &H70700: ZNAK(32) = &H707

REM ludzik idacy w prawo

DIM ZNAKP(0 TO 32) AS LONG

ZNAKP(0) = &H100040

ZNAKP(1) = &H8080000: ZNAKP(2) = &H8
ZNAKP(3) = &HF0F0000: ZNAKP(4) = &HF0F
ZNAKP(5) = &HF0F0000: ZNAKP(6) = &HF
ZNAKP(7) = &HF000000: ZNAKP(8) = &H0
ZNAKP(9) = &HC000000: ZNAKP(10) = &HC
ZNAKP(11) = &HC0C0000: ZNAKP(12) = &HC0C
ZNAKP(13) = &HC0C0C00: ZNAKP(14) = &HC0C0C
ZNAKP(15) = &HC0C0C00: ZNAKP(16) = &HC000C
ZNAKP(17) = &H8080F00: ZNAKP(18) = &HF0008
ZNAKP(19) = &HB0B0000: ZNAKP(20) = &HB
ZNAKP(21) = &HB0000: ZNAKP(22) = &HB
ZNAKP(23) = &HB0000: ZNAKP(24) = &HB00
ZNAKP(25) = &HB0000: ZNAKP(26) = &HB00
ZNAKP(27) = &HB00: ZNAKP(28) = &HB
ZNAKP(29) = &HB00: ZNAKP(30) = &HB
ZNAKP(31) = &H70707: ZNAKP(32) = &H707

REM ludzik idacy w lewo

DIM ZNAKL(0 TO 32) AS LONG

ZNAKL(0) = &H100040

ZNAKL(1) = &H8080000: ZNAKL(2) = &H8
ZNAKL(3) = &HF0F0F00: ZNAKL(4) = &HF
ZNAKL(5) = &HF0F0000: ZNAKL(6) = &HF
ZNAKL(7) = &HF000000: ZNAKL(8) = &H0
ZNAKL(9) = &HC000000: ZNAKL(10) = &HC
ZNAKL(11) = &HC0C0000: ZNAKL(12) = &HC0C
ZNAKL(13) = &HC0C0C00: ZNAKL(14) = &HC0C
ZNAKL(15) = &HC0C000C: ZNAKL(16) = &HC0C
ZNAKL(17) = &H808000F: ZNAKL(18) = &HF08
ZNAKL(19) = &HB0B0000: ZNAKL(20) = &HB
ZNAKL(21) = &HB0000: ZNAKL(22) = &HB
ZNAKL(23) = &HB00: ZNAKL(24) = &HB
ZNAKL(25) = &HB00: ZNAKL(26) = &HB
ZNAKL(27) = &HB0000: ZNAKL(28) = &HB00
ZNAKL(29) = &HB0000: ZNAKL(30) = &HB00
ZNAKL(31) = &H70700: ZNAKL(32) = &H70707


REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG
DIM ZNAKP4(0 TO 32) AS LONG
DIM ZNAKL4(0 TO 32) AS LONG

REM ************************* FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(I * 2) = VAL("&H" + a1$)
ZNAKP1(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(I * 2) = VAL("&H" + a3$)
ZNAKL1(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "00000707","00070707","07070700","07070000"

REM ************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(I * 2) = VAL("&H" + a1$)
ZNAKP2(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(I * 2) = VAL("&H" + a3$)
ZNAKL2(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "00000B00","0B000000","0000000B","000B0000"
DATA "00000B0B","0B0B0B00","000B0B0B","0B0B0000"
DATA "0000000B","00000B07","070B0000","0B000000"
DATA "0000000B","00000700","00070000","0B000000"
DATA "00000707","00000000","00000000","07070000"

REM ************************************ FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(I * 2) = VAL("&H" + a1$)
ZNAKP3(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(I * 2) = VAL("&H" + a3$)
ZNAKL3(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ FAZA 4

ZNAKP4(0) = &H100040
ZNAKL4(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP4(I * 2) = VAL("&H" + a1$)
ZNAKP4(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL4(I * 2) = VAL("&H" + a3$)
ZNAKL4(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","07000000","00000007","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"



REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), ZNAK


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1: dx = 1: dy = 0
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1: dx = -1: dy = 0
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0: dx = 0: dy = -1
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0: dy = 0: dx = 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci
wyprost:
LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

IF obrot = 0 THEN PUT ((x - 1) * 8 + d * dx, (y - 1) * 8 + d * dy), ZNAK, PSET

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 4 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
IF PRZEBIERANIE = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL4, PSET
END IF


IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 4 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
IF PRZEBIERANIE = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP4, PSET
END IF
xs = x: ys = y

GOTO petla

REM ************************* DANE POMIESZCZEN

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pon 10:34, 11 Sty 2021    Temat postu:

REM ************************* dane startowe

SCREEN 13

REM ************************ znaczek - glowny bohater
DIM ZNAK(0 TO 32) AS LONG

ZNAK(0) = &H100040

ZNAK(1) = &H8080000: ZNAK(2) = &H8
ZNAK(3) = &HF0F0000: ZNAK(4) = &HF
ZNAK(5) = &HF0F0000: ZNAK(6) = &HF
ZNAK(7) = &HF000000: ZNAK(8) = &H0
ZNAK(9) = &HC0C0C00: ZNAK(10) = &HC0C
ZNAK(11) = &HC0C0C0C: ZNAK(12) = &HC0C0C
ZNAK(13) = &HC0C0C0C: ZNAK(14) = &HC0C0C
ZNAK(15) = &HC0C000C: ZNAK(16) = &HC000C
ZNAK(17) = &H808000F: ZNAK(18) = &HF0008
ZNAK(19) = &HB0B0000: ZNAK(20) = &HB
ZNAK(21) = &HB0000: ZNAK(22) = &HB
ZNAK(23) = &HB0000: ZNAK(24) = &HB
ZNAK(25) = &HB0000: ZNAK(26) = &HB
ZNAK(27) = &HB0000: ZNAK(28) = &HB
ZNAK(29) = &HB0000: ZNAK(30) = &HB
ZNAK(31) = &H70700: ZNAK(32) = &H707

REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG

REM ************************* FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(I * 2) = VAL("&H" + a1$)
ZNAKP1(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(I * 2) = VAL("&H" + a3$)
ZNAKL1(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "00000707","00070707","07070700","07070000"

REM ************************************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(I * 2) = VAL("&H" + a1$)
ZNAKP2(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(I * 2) = VAL("&H" + a3$)
ZNAKL2(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(I * 2) = VAL("&H" + a1$)
ZNAKP3(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(I * 2) = VAL("&H" + a3$)
ZNAKL3(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C0C0C","0C0C0C00","000C0C0C","0C0C0C00"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B000000","0000000B","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"


REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), ZNAK


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

IF obrot = 0 THEN PUT ((x - 1) * 8 + d * dx, (y - 1) * 8 + d * dy), ZNAK, PSET

REM ************************** ruch w lewo

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
END IF

REM ****************** ruch w prawo

IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
END IF

xs = x: ys = y

GOTO petla

REM ************************* DANE POMIESZCZEN

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pon 13:45, 11 Sty 2021    Temat postu:

REM ************************* DANE STARTOWE

SCREEN 13

REM ************************ znaczek - glowny bohater
REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG

REM ************************* ruch poziomy FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(I * 2) = VAL("&H" + a1$)
ZNAKP1(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(I * 2) = VAL("&H" + a3$)
ZNAKL1(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00070707","07070700","0B000000"
DATA "00000707","00000000","00000000","07070000"

REM ************************************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(I * 2) = VAL("&H" + a1$)
ZNAKP2(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(I * 2) = VAL("&H" + a3$)
ZNAKL2(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ ruch poziomy FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(I * 2) = VAL("&H" + a1$)
ZNAKP3(I * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(I * 2) = VAL("&H" + a3$)
ZNAKL3(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B000000","0000000B","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"


REM ************************ fazy ruchu pionowego

DIM vertd1(0 TO 32) AS LONG
DIM vertg1(0 TO 32) AS LONG
DIM vertd2(0 TO 32) AS LONG
DIM vertg2(0 TO 32) AS LONG
DIM vertd3(0 TO 32) AS LONG
DIM vertg3(0 TO 32) AS LONG

REM Ludzik idacy w dol lub w gore faza 1

vertd1(0) = &H100040
vertg1(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd1(I * 2) = VAL("&H" + a1$)
vertd1(I * 2 - 1) = VAL("&H" + a2$)
vertg1(I * 2) = VAL("&H" + a3$)
vertg1(I * 2 - 1) = VAL("&H" + a4$)

NEXT I

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","00070700","00000707","00070700"

REM Ludzik idacy w dol lub w gore faza 2

vertd2(0) = &H100040
vertg2(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd2(I * 2) = VAL("&H" + a1$)
vertd2(I * 2 - 1) = VAL("&H" + a2$)
vertg2(I * 2) = VAL("&H" + a3$)
vertg2(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","000B0000","00000707","000B0000"
DATA "00000000","000B0000","00000000","000B0000"
DATA "00000000","00070700","00000000","00070700"


REM Ludzik idacy w dol lub w gore faza 3

vertd3(0) = &H100040
vertg3(0) = &H100040

FOR I = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd3(I * 2) = VAL("&H" + a1$)
vertd3(I * 2 - 1) = VAL("&H" + a2$)
vertg3(I * 2) = VAL("&H" + a3$)
vertg3(I * 2 - 1) = VAL("&H" + a4$)
NEXT I

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","00070700","0000000B","00070700"
DATA "0000000B","00000000","0000000B","00000000"
DATA "00000707","00000000","00000707","00000000"





REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:
IF roomx = 1 AND roomy = 1 THEN GOSUB roomx1y1
IF roomx = 2 AND roomy = 1 THEN GOSUB roomx2y1
IF roomx = 3 AND roomy = 1 THEN GOSUB roomx3y1

IF roomx = 1 AND roomy = 2 THEN GOSUB roomx1y2
IF roomx = 2 AND roomy = 2 THEN GOSUB roomx2y2

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1: vert = 0
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1: vert = 0
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0: vert = -1
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0: vert = 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

REM ************************** ruch w gore

IF vert = -1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg3, PSET
END IF

REM ************************** ruch w dol

IF vert = 1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd3, PSET

END IF

REM ************************** ruch w lewo

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
END IF

REM ****************** ruch w prawo

IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
END IF

xs = x: ys = y

GOTO petla

REM ************************* DANE POMIESZCZEN

REM ************ plansze wiersza 1

roomx1y1:
kod$ = "#LLHHHHUHHHHHHU3333WLLU"
RETURN

roomx2y1:
kod$ = "#..HHHHU44444WHHHHHUPP#"
RETURN

roomx3y1:
kod$ = "#PPHHHHUHUHHHWHWHHHUHH#"
RETURN

REM ************ plansze wiersza 2

roomx1y2:
kod$ = "UHHHHHHWHHLLHHUHHHHUHH#"
RETURN

roomx2y2:
kod$ = "#HWHWHWHWHPPHWHWHWHWHH#"
RETURN
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Pon 21:34, 11 Sty 2021    Temat postu:

REM ************************* DANE STARTOWE

SCREEN 13
DEF SEG = 0

REM ************************** DANE pomieszczen
REM ***************** obliczane od x=0,y=0 y*5+x

DIM plansza$(0 TO 24)

REM ************ plansze wiersza y=0
REM x=0 y=0
plansza$(0) = "#LLHHHHUHHHHHHU3333WLLU"
REM x=1 y=0
plansza$(1) = "#..HHHHU44444WHHHHHUPP#"
REM x=3 y=0
plansza$(2) = "#PPHHHHUHUHHHWHWHHHUHHU"

REM ************ plansze wiersza y=1
REM x=0 y=1
plansza$(5) = "UHHHHHHWHHLLHHUHHHHUHH#"
REM x=1 y=1
plansza$(6) = "#HHWWWHHHH..HWHWHWHWHH#"
REM x=2 y=1
plansza$(7) = "UHHHUHHHUHPPHHUHHHUHHH#"

REM ************************ znaczek - glowny bohater
REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG

REM ************************* ruch poziomy FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(i * 2) = VAL("&H" + a1$)
ZNAKP1(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(i * 2) = VAL("&H" + a3$)
ZNAKL1(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00070707","07070700","0B000000"
DATA "00000707","00000000","00000000","07070000"

REM ************************************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(i * 2) = VAL("&H" + a1$)
ZNAKP2(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(i * 2) = VAL("&H" + a3$)
ZNAKL2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ ruch poziomy FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(i * 2) = VAL("&H" + a1$)
ZNAKP3(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(i * 2) = VAL("&H" + a3$)
ZNAKL3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B000000","0000000B","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"


REM ************************ fazy ruchu pionowego

DIM vertd1(0 TO 32) AS LONG
DIM vertg1(0 TO 32) AS LONG
DIM vertd2(0 TO 32) AS LONG
DIM vertg2(0 TO 32) AS LONG
DIM vertd3(0 TO 32) AS LONG
DIM vertg3(0 TO 32) AS LONG

REM Ludzik idacy w dol lub w gore faza 1

vertd1(0) = &H100040
vertg1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd1(i * 2) = VAL("&H" + a1$)
vertd1(i * 2 - 1) = VAL("&H" + a2$)
vertg1(i * 2) = VAL("&H" + a3$)
vertg1(i * 2 - 1) = VAL("&H" + a4$)

NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","00070700","00000707","00070700"

REM Ludzik idacy w dol lub w gore faza 2

vertd2(0) = &H100040
vertg2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd2(i * 2) = VAL("&H" + a1$)
vertd2(i * 2 - 1) = VAL("&H" + a2$)
vertg2(i * 2) = VAL("&H" + a3$)
vertg2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","000B0000","00000707","000B0000"
DATA "00000000","000B0000","00000000","000B0000"
DATA "00000000","00070700","00000000","00070700"


REM Ludzik idacy w dol lub w gore faza 3

vertd3(0) = &H100040
vertg3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd3(i * 2) = VAL("&H" + a1$)
vertd3(i * 2 - 1) = VAL("&H" + a2$)
vertg3(i * 2) = VAL("&H" + a3$)
vertg3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","00070700","0000000B","00070700"
DATA "0000000B","00000000","0000000B","00000000"
DATA "00000707","00000000","00000707","00000000"





REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:

kod$ = plansza$(roomx - 1 + (roomy - 1) * 5)

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "----"; t0; t1; "----";

REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

POKE 1050, PEEK(1052): REM czyszczenie bufora klawiatury
REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1: vert = 0
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1: vert = 0
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0: vert = -1
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0: vert = 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

REM ************************** ruch w gore

IF vert = -1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg3, PSET
END IF

REM ************************** ruch w dol

IF vert = 1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd3, PSET

END IF

REM ************************** ruch w lewo

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
END IF

REM ****************** ruch w prawo

IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
END IF

xs = x: ys = y

GOTO petla
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Wto 12:11, 12 Sty 2021    Temat postu:

REM ************************* DANE STARTOWE

SCREEN 13
DEF SEG = 0

REM ************************** DANE pomieszczen
REM ***************** obliczane od x=0,y=0 y*5+x

DIM plansza$(0 TO 24)

REM ************ plansze wiersza roomy=0
plansza$(0) = "#LLHHHHUHHHHHHU3333WLLU"
plansza$(1) = "#..UUUUU44444WHHHHHUPP#"
plansza$(2) = "#PPHHHHUHUHHHWHWHHHUHHU"
plansza$(3) = "#HHHHLLHHHHHHHWWHHHHHH#"
plansza$(4) = "#HHHHPPHHHHHHHHHHHHHHHU"

REM ************ plansze wiersza roomy=1

plansza$(5) = "UHHWWWWWHHLLHHUHHHHUHH#"
plansza$(6) = "#HHHHHHHHH..HWHWHWHWHH#"
plansza$(7) = "U333W3333WPPHHUUUUUHHHU"
plansza$(8) = "###WWWLLHHHWWWWHHHHHWWW"
plansza$(9) = "UHHHHHPPHHHHHHHHHHHHHH#"

REM ************* plansze wiersza y=2
plansza$(10) = "####HHHHHHWHHHHHHHHHHHW"
plansza$(11) = "#HHHHHHHHHHHHLLHHHHHHHW"
plansza$(12) = "UUUUUUUUUUUUU..HHHHHHH#"
plansza$(13) = "WWWWWWWWWWWWWPP########"
plansza$(14) = "#33333333333333HHHHHHHW"

REM ************ plansze wiersza roomy=3
plansza$(15) = "WWWHHHWWWWLL###########"
plansza$(16) = "WHHH33WW33PP33WW44WWHH#"

REM ************************ znaczek - glowny bohater
REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG

REM ************************* ruch poziomy FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(i * 2) = VAL("&H" + a1$)
ZNAKP1(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(i * 2) = VAL("&H" + a3$)
ZNAKL1(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00070707","07070700","0B000000"
DATA "00000707","00000000","00000000","07070000"

REM ************************************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(i * 2) = VAL("&H" + a1$)
ZNAKP2(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(i * 2) = VAL("&H" + a3$)
ZNAKL2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ ruch poziomy FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(i * 2) = VAL("&H" + a1$)
ZNAKP3(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(i * 2) = VAL("&H" + a3$)
ZNAKL3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B000000","0000000B","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"


REM ************************ fazy ruchu pionowego

DIM vertd1(0 TO 32) AS LONG
DIM vertg1(0 TO 32) AS LONG
DIM vertd2(0 TO 32) AS LONG
DIM vertg2(0 TO 32) AS LONG
DIM vertd3(0 TO 32) AS LONG
DIM vertg3(0 TO 32) AS LONG

REM Ludzik idacy w dol lub w gore faza 1

vertd1(0) = &H100040
vertg1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd1(i * 2) = VAL("&H" + a1$)
vertd1(i * 2 - 1) = VAL("&H" + a2$)
vertg1(i * 2) = VAL("&H" + a3$)
vertg1(i * 2 - 1) = VAL("&H" + a4$)

NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","00070700","00000707","00070700"

REM Ludzik idacy w dol lub w gore faza 2

vertd2(0) = &H100040
vertg2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd2(i * 2) = VAL("&H" + a1$)
vertd2(i * 2 - 1) = VAL("&H" + a2$)
vertg2(i * 2) = VAL("&H" + a3$)
vertg2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","000B0000","00000707","000B0000"
DATA "00000000","000B0000","00000000","000B0000"
DATA "00000000","00070700","00000000","00070700"


REM Ludzik idacy w dol lub w gore faza 3

vertd3(0) = &H100040
vertg3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd3(i * 2) = VAL("&H" + a1$)
vertd3(i * 2 - 1) = VAL("&H" + a2$)
vertg3(i * 2) = VAL("&H" + a3$)
vertg3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","00070700","0000000B","00070700"
DATA "0000000B","00000000","0000000B","00000000"
DATA "00000707","00000000","00000707","00000000"





REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:

kod$ = plansza$(roomx - 1 + (roomy - 1) * 5)

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "--"; t0; t1; "--";
PRINT "Room:"; roomx; roomy; "--";
REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

POKE 1050, PEEK(1052): REM czyszczenie bufora klawiatury
REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1: vert = 0
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1: vert = 0
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0: vert = -1
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0: vert = 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

REM ************************** ruch w gore

IF vert = -1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg3, PSET
END IF

REM ************************** ruch w dol

IF vert = 1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd3, PSET

END IF

REM ************************** ruch w lewo

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
END IF

REM ****************** ruch w prawo

IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
END IF

xs = x: ys = y

GOTO petla
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






PostWysłany: Wto 13:55, 12 Sty 2021    Temat postu:

REM ************************* DANE STARTOWE

SCREEN 13
DEF SEG = 0

REM ************************** DANE pomieszczen
REM ***************** obliczane od x=0,y=0 y*5+x

DIM plansza$(0 TO 24)

REM ************ plansze wiersza roomy=0

plansza$(0) = "#LLHHHHUHHHHHHU3333WLLU"
plansza$(1) = "#..UUUUU44444WHHHHHUPP#"
plansza$(2) = "#PPHHHHUHUHHHWHWHHHUHHU"
plansza$(3) = "#HHHHLLHHHHHHHWWHHHHHH#"
plansza$(4) = "#HHHHPPHHHHUUHHHHUUUHHU"

REM ************ plansze wiersza roomy=1

plansza$(5) = "UHHWWWWWHHLLHHUHHHHUHH#"
plansza$(6) = "#HHHHHHHHH..HWHWHWHWHH#"
plansza$(7) = "U333W3333WPPHHUUUUUHHHU"
plansza$(8) = "###WWWLLHHHWWWWHHHHHWWW"
plansza$(9) = "UHHHHHPPHHHHU44WWHHHHH#"

REM ************* plansze wiersza y=2

plansza$(10) = "####HHHHHHWHHHHHHUUHHHW"
plansza$(11) = "#HHHHW444WWHHLLHHHHHHHW"
plansza$(12) = "UUUUUUUUUUUUU..HHHHHHH#"
plansza$(13) = "WWWWWWWWWWWWWPP########"
plansza$(14) = "#3333333333333WWHHHHHHW"

REM ************ plansze wiersza roomy=3
plansza$(15) = "WWWHHHWWWWLLUUUUUUUUUUU"
plansza$(16) = "WHHH33WW33PP33WW44WWHH#"
plansza$(17) = "#HHHHHHLLHH4444HHHWWWWW"
plansza$(18) = "#######PPUUUUUUHHUUUUUU"
plansza$(19) = "#HHWWWW3333WWHHUUUUUUUU"

REM ****************** plansze wiersza roomy=4

plansza$(20) = "UULLHHHHWWWWWHHHHHHLLH#"
plansza$(21) = "##..###############..##"
plansza$(22) = "WHPPHHHHHUUUUUHHHHHPPH#"
plansza$(23) = "UUUHHHHUUHHHLLHWWHHHHH#"
plansza$(24) = "U3333WWHHHHHPP#########"

REM ************************ znaczek - glowny bohater
REM ****************** DANE ANIMACJI

DIM ZNAKP1(0 TO 32) AS LONG
DIM ZNAKL1(0 TO 32) AS LONG
DIM ZNAKP2(0 TO 32) AS LONG
DIM ZNAKL2(0 TO 32) AS LONG
DIM ZNAKP3(0 TO 32) AS LONG
DIM ZNAKL3(0 TO 32) AS LONG

REM ************************* ruch poziomy FAZA 1

ZNAKP1(0) = &H100040
ZNAKL1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP1(i * 2) = VAL("&H" + a1$)
ZNAKP1(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL1(i * 2) = VAL("&H" + a3$)
ZNAKL1(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "00000B00","000B0000","00000B00","000B0000"
DATA "0000000B","00000B00","000B0000","0B000000"
DATA "0000000B","00070707","07070700","0B000000"
DATA "00000707","00000000","00000000","07070000"

REM ************************************ FAZA 2

ZNAKP2(0) = &H100040
ZNAKL2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP2(i * 2) = VAL("&H" + a1$)
ZNAKP2(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL2(i * 2) = VAL("&H" + a3$)
ZNAKL2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B070700","0007070B","0B0B0000"
DATA "00000000","0B000700","0007000B","00000000"
DATA "00000000","0B000000","0000000B","00000000"
DATA "00000007","07070000","00000707","07000000"


REM ************************ ruch poziomy FAZA 3

ZNAKP3(0) = &H100040
ZNAKL3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$:
ZNAKP3(i * 2) = VAL("&H" + a1$)
ZNAKP3(i * 2 - 1) = VAL("&H" + a2$)
ZNAKL3(i * 2) = VAL("&H" + a3$)
ZNAKL3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000808","08000000","00000008","08080000"
DATA "00000F0F","08000000","00000008","0F0F0000"
DATA "00000F0F","0F000000","0000000F","0F0F0000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "0000000C","0C000000","0000000C","0C000000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "00000C0C","0C0C0000","00000C0C","0C0C0000"
DATA "000C000C","0C0C0C00","000C0C0C","0C000C00"
DATA "000F0008","08080F00","000F0808","08000F00"
DATA "0000000B","0B0B0000","00000B0B","0B000000"
DATA "00000B0B","0B0B0000","00000B0B","0B0B0000"
DATA "000B0B00","0B000000","0000000B","000B0B00"
DATA "00000B0B","0B000000","0000000B","0B0B0000"
DATA "00000707","0B000000","0000000B","07070000"
DATA "00000000","000B0000","00000B00","00000000"
DATA "00000000","07070700","00070707","00000000"


REM ************************ fazy ruchu pionowego

DIM vertd1(0 TO 32) AS LONG
DIM vertg1(0 TO 32) AS LONG
DIM vertd2(0 TO 32) AS LONG
DIM vertg2(0 TO 32) AS LONG
DIM vertd3(0 TO 32) AS LONG
DIM vertg3(0 TO 32) AS LONG

REM Ludzik idacy w dol lub w gore faza 1

vertd1(0) = &H100040
vertg1(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd1(i * 2) = VAL("&H" + a1$)
vertd1(i * 2 - 1) = VAL("&H" + a2$)
vertg1(i * 2) = VAL("&H" + a3$)
vertg1(i * 2 - 1) = VAL("&H" + a4$)

NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","00070700","00000707","00070700"

REM Ludzik idacy w dol lub w gore faza 2

vertd2(0) = &H100040
vertg2(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd2(i * 2) = VAL("&H" + a1$)
vertd2(i * 2 - 1) = VAL("&H" + a2$)
vertg2(i * 2) = VAL("&H" + a3$)
vertg2(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "00000707","000B0000","00000707","000B0000"
DATA "00000000","000B0000","00000000","000B0000"
DATA "00000000","00070700","00000000","00070700"


REM Ludzik idacy w dol lub w gore faza 3

vertd3(0) = &H100040
vertg3(0) = &H100040

FOR i = 1 TO 16: READ a1$, a2$, a3$, a4$
vertd3(i * 2) = VAL("&H" + a1$)
vertd3(i * 2 - 1) = VAL("&H" + a2$)
vertg3(i * 2) = VAL("&H" + a3$)
vertg3(i * 2 - 1) = VAL("&H" + a4$)
NEXT i

DATA "00000008","08080000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "0000000F","0F0F0000","00000008","08080000"
DATA "00000000","0F000000","00000000","0F000000"
DATA "00000C0C","0C0C0C00","00000C0C","0C0C0C00"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C0C0C","0C0C0C0C","000C0C0C","0C0C0C0C"
DATA "000C000C","0C0C000C","000C000C","0C0C000C"
DATA "000F0008","0808000F","000F0008","0808000F"
DATA "0000000B","0B0B0000","0000000B","0B0B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","000B0000","0000000B","000B0000"
DATA "0000000B","00070700","0000000B","00070700"
DATA "0000000B","00000000","0000000B","00000000"
DATA "00000707","00000000","00000707","00000000"





REM ********************* kody elementow planszy
REM ********* beda wywolane przez numer kodu ascii

DIM wiersz$(35 TO 90):

DEF SEG = 0: REM to dla pomiarow predkosci

x = 10: y = 10
xs = 10: ys = 10
licz = -1
roomx = 1
roomy = 1

REM Ustawienie wlasnej wartosci barw
REM kolejno, blue green red, kazdy max=63

PALETTE 100, 63 * 65536 + 31 * 256 + 15
PALETTE 101, 63 * 65536 + 15 * 256 + 0

REM ********** dane poszczegolnych elementow
mur2$ = CHR$(177) + CHR$(177):
mur4$ = mur2$ + mur2$: mur8$ = mur4$ + mur4$: mur16$ = mur8$ + mur8$

spc2$ = CHR$(32) + CHR$(32):
spc4$ = spc2$ + spc2$: spc8$ = spc4$ + spc4$: spc16$ = spc8$ + spc8$

REM kod elementu "#" - mur na cal szerokosc ekranu
wiersz$(35) = mur16$ + mur16$ + mur8$

REM kod elementu "L" - mur tylko na lewej krawedzi ekranu
wiersz$(76) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32)

REM kod elementu "P" - mur tylko na prawej krawedzi ekranu
wiersz$(80) = spc16$ + spc16$ + spc4$ + spc2$ + CHR$(32) + CHR$(177)

REM kod elementu "." - pust przestrzen na calej szerokosci ekranu
wiersz$(46) = spc16$ + spc16$ + spc8$

REM kod elementu "U" - dziura na srodku muru
wiersz$(85) = mur16$ + mur2$ + spc4$ + mur2$ + mur16$

REM kod elenetu "H" - dwie sciany na obu krawedziach
wiersz$(72) = CHR$(177) + spc16$ + spc16$ + spc4$ + spc2$ + CHR$(177)

REM kod elementu "W" - dwie dziury w murze
wiersz$(87) = CHR$(177) + mur4$ + spc4$ + mur16$ + mur4$ + mur2$ + spc4$ + mur4$ + CHR$(177)

REM kod elementu "3" - trzy sciany w tym jedna po lewej
wiersz$(51) = CHR$(177) + spc8$ + spc4$ + CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177)

REM kod elementu "4" - trzy sciany w tym jedna po prawej
wiersz$(52) = CHR$(177) + spc16$ + spc8$ + CHR$(32) + CHR$(177) + spc8$ + spc4$ + CHR$(177)

REM ************************* WYBOR POMIESZCZENIA

rysuj:

kod$ = plansza$(roomx - 1 + (roomy - 1) * 5)

REM ******************** rysowanie pomieszczenia
t0 = PEEK(1132): REM pomiar czasu rysowania
REM CLS - wylaczenie CLS zapobiega miganiu ekranu
COLOR 100

LOCATE 1, 1: PRINT wiersz$(ASC(MID$(kod$, 1, 1)))
PRINT wiersz$(ASC(MID$(kod$, 2, 1)))
PRINT wiersz$(ASC(MID$(kod$, 3, 1)))
PRINT wiersz$(ASC(MID$(kod$, 4, 1)))
PRINT wiersz$(ASC(MID$(kod$, 5, 1)))
PRINT wiersz$(ASC(MID$(kod$, 6, 1)))
PRINT wiersz$(ASC(MID$(kod$, 7, 1)))
PRINT wiersz$(ASC(MID$(kod$, 8, 1)))
PRINT wiersz$(ASC(MID$(kod$, 9, 1)))
PRINT wiersz$(ASC(MID$(kod$, 10, 1)))
PRINT wiersz$(ASC(MID$(kod$, 11, 1)))
PRINT wiersz$(ASC(MID$(kod$, 12, 1)))
PRINT wiersz$(ASC(MID$(kod$, 13, 1)))
PRINT wiersz$(ASC(MID$(kod$, 14, 1)))
PRINT wiersz$(ASC(MID$(kod$, 15, 1)))
PRINT wiersz$(ASC(MID$(kod$, 16, 1)))
PRINT wiersz$(ASC(MID$(kod$, 17, 1)))
PRINT wiersz$(ASC(MID$(kod$, 18, 1)))
PRINT wiersz$(ASC(MID$(kod$, 19, 1)))
PRINT wiersz$(ASC(MID$(kod$, 20, 1)))
PRINT wiersz$(ASC(MID$(kod$, 21, 1)))
PRINT wiersz$(ASC(MID$(kod$, 22, 1)))
PRINT wiersz$(ASC(MID$(kod$, 23, 1)))
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;



REM pomiar czasu rysowania
t1 = PEEK(1132): LOCATE 24, 10: PRINT "--"; t0; t1; "--";
PRINT "Room:"; roomx; roomy; "--";
REM ustawienie gracza na planszy
PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET


REM *************************** PETLA GLOWNA

petla:

REM ******************* czas gry w sekundach

se$ = MID$(TIME$, 7, 2)
se = VAL(se$)
IF se <> ses THEN licz = licz + 1
ses = se
LOCATE 24, 2: COLOR 15: PRINT "Czas:"; licz;

REM ************************ petla opozniajaca
FOR delay = 1 TO 300: NEXT delay
REM ************************ sprawdzenie klawiszy

k$ = INKEY$
IF k$ = "" THEN GOTO petla

POKE 1050, PEEK(1052): REM czyszczenie bufora klawiatury
REM PRINT k$; : IF k$ <> "" THEN PRINT ASC(k$);

IF k$ = CHR$(27) THEN END

IF k$ = CHR$(0) + "M" THEN x = x + 1: obrot = 1: vert = 0
IF k$ = CHR$(0) + "K" THEN x = x - 1: obrot = -1: vert = 0
IF k$ = CHR$(0) + "H" THEN y = y - 1: obrot = 0: vert = -1
IF k$ = CHR$(0) + "P" THEN y = y + 1: obrot = 0: vert = 1

REM ************ sprawdzenie czy jest przejscie do innej planszy
REM ************ dla ludzika dwuznakowego!

IF x = 41 THEN x = 1: xs = 1: roomx = roomx + 1: GOTO rysuj
IF x = 0 THEN x = 40: xs = 40: roomx = roomx - 1: GOTO rysuj
IF y = 23 THEN y = 1: ys = 1: roomy = roomy + 1: GOTO rysuj
IF y = 0 THEN y = 23: ys = 23: roomy = roomy - 1: GOTO rysuj

REM *********** sprawdzenie czy ruch jest mozliwy

pobrany1 = SCREEN(y, x)
pobrany2 = SCREEN(y + 1, x)


REM *********** sprawdzenie czy cos mozna wziac

IF pobrany1 = 3 OR pobrany2 = 3 THEN SOUND 250, .5: SOUND 150, .5: GOTO ruch
IF pobrany1 = 4 OR pobrany2 = 4 THEN SOUND 1150, .5: SOUND 550, .5: GOTO ruch

REM sprawdzenie przeszkody

IF pobrany1 = 32 AND pobrany2 = 32 THEN GOTO ruch

x = xs: y = ys
GOTO petla

REM ***************** ruch

ruch:
SOUND 100, .025: SOUND 30000, .025: SOUND 100, .025: SOUND 30000, .025
REM ************* kasowanie starej postaci

LOCATE ys, xs: PRINT " ";
LOCATE ys + 1, xs: PRINT " ";

REM ************* rysowanie nowej postaci WEDLUG FAZY RUCHU

REM ************************** ruch w gore

IF vert = -1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertg3, PSET
END IF

REM ************************** ruch w dol

IF vert = 1 THEN
przebiervert = przebiervert + 1
IF przebiervert = 4 THEN przebiervert = 0
IF przebiervert = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd2, PSET
IF przebiervert = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd1, PSET
IF przebiervert = 3 THEN PUT ((x - 1) * 8, (y - 1) * 8), vertd3, PSET

END IF

REM ************************** ruch w lewo

IF obrot = -1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKL3, PSET
END IF

REM ****************** ruch w prawo

IF obrot = 1 THEN
PRZEBIERANIE = PRZEBIERANIE + 1
IF PRZEBIERANIE = 3 THEN PRZEBIERANIE = 0
IF PRZEBIERANIE = 0 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP1, PSET
IF PRZEBIERANIE = 1 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP2, PSET
IF PRZEBIERANIE = 2 THEN PUT ((x - 1) * 8, (y - 1) * 8), ZNAKP3, PSET
END IF

xs = x: ys = y

GOTO petla
Powrót do góry
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Życie Wieczne Strona Główna -> Offtopic Wszystkie czasy w strefie EET (Europa)
Idź do strony Poprzedni  1, 2, 3, 4, 5  Następny
Strona 2 z 5

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin