![Forum Życie Wieczne Strona Główna](templates/subSilver/images/logo_phpBB.gif) |
Życie Wieczne
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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 |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
|
|
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
|