OldComp.cz
https://oldcomp.cz/

Srandičky s BASICem 1Z013B
https://oldcomp.cz/viewtopic.php?f=134&t=11212
Stránka 11

Autor:  vaclavpe [ 09.09.2022, 19:25 ]
Předmět příspěvku:  Srandičky s BASICem 1Z013B

Ahoj,

V rámci prokrastinace si pročítám japonské BASIC Magaziny a zkouším přepisovat některé hry, abych dokázal (sám sobě i některým zdejším členům), že i v BASICu se dá napsat hratelná hra - pravda, v modu MZ-700.

Jak jistě všichni víme, tak GET A$ neumí autorepeat. Nicméně takhle
Kód:
GET A$:A$=CHR$(PEEK(95))
autorepeat už funguje. Ani není potřeba používat stroják, což jsem řešil už kdysi.

A přichází vtípek. Pro logické výrazy v IF se používá * a +. Logický výraz se ovšem vyhodnotí jako 0 při FALSE, ale -1 při TRUE.
Takže
Kód:
(AX=1)*(AY=1)+(TX<>0)
při AX=1,BX=1 a TX=1 vyhodnotí jako (-1)*(-1)+(-1) = 0 - což je blbě

Druhá znaková sada se dá v S-BASICu použít takto:
Kód:
POKE 93,PEEK(93)+128:PRINT[0,1]CHR$(164,150,17,20,20,165,171)

Autor:  mop [ 16.09.2022, 09:32 ]
Předmět příspěvku:  Re: Srandičky s BASICem 1Z013B

Tenhle Basic nemá ani ELSE a složené podmínky se musí řešit přeskakováním řádků.

Naopak docela šikovné je to, že si pamatuje dvě obrazovky textu, přes které lze libovolně skrolovat pomocí Shift + nahoru/dolů.

Autor:  vaclavpe [ 16.09.2022, 10:48 ]
Předmět příspěvku:  Re: Srandičky s BASICem 1Z013B

mop píše:
Tenhle Basic nemá ani ELSE a složené podmínky se musí řešit přeskakováním řádků.

Je to tak, ten BASIC je takový poloviční assembler. Složené podmínky ovšem fungují pomocí * a + jen je potřeba dát pozor na to, že výsledek porovnání je -1. Například, když chceš udělat sekvenci 0,-1,0,-1,..., tak stačí tohle bez IFování:
Kód:
A=(A=0)

V sokobanovi mám třeba takové podmínky a fungují dobře a rychle:
Kód:
240 IF (A$="A")*(PEEK(MEM-40)=$6D)*(PEEK(MEM-80)=$2E) GOTO 370

Víc mi vadí, že to neumí načíst přímo znak z obrazovky, jako např. MZ-80B BASIC má CHARACTER$(X,Y) - musíš použít PEEK a pamatovat na to, že ten znak není v ASCII ale DISPLAY kódu. To je trochu otrava. I tak je ten BASIC rychlý a jsi schopen udělat hratelnou hru.

Autor:  Milsa [ 17.09.2022, 19:54 ]
Předmět příspěvku:  Re: Srandičky s BASICem 1Z013B

vaclavpe píše:
mop píše:
Víc mi vadí, že to neumí načíst přímo znak z obrazovky, jako např. MZ-80B BASIC má CHARACTER$(X,Y) - musíš použít PEEK a pamatovat na to, že ten znak není v ASCII ale DISPLAY kódu. To je trochu otrava. I tak je ten BASIC rychlý a jsi schopen udělat hratelnou hru.

O ničom takom neviem, ale dalo by sa to riešiť takto (MZ-800):
PEEK($2000+40*Y+X), prípadne PEEK($2000+80*Y+X)

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/