Kristoffer Eriksson
<5357>
· Text 2051 · w8 · kommentar
1986-06-17 01:37
Ärende: Adventure
Frågor var det väl inte direkt, men du tog inte upp samtliga punkter,%om
det nu var meningen. Hoppas du tar ut inlägg på skrivare.
Du missade något av poängen med LÄGE, och ersatte det med RUM,HSUB,ESUB,
och MSUB, som jag för övrigt tycker klingar rätt obegripligt. Fram för
klarhet i datorsammanhang!
Som jag beskrev LÄGE, liknade det mest ditt MSUB (enligt den ena av de
två former jag föreslog), men finessen (om man sammanfattar flera av
textstyckena) var att om man betraktar spelaren också som ett föremål
så blir RUM(x), som underförstått syftar på spelaren, en synonym till
LÄGE(SPELARE,x), HSUB(x) en synonym till LÄGE(x,SPELARE), ESUB till
NOT LÄGE(x,SPELARE) eller LÄGE(x,SPELARE)<>... osv.
Det må vara att 253 saker räcker, men värden som 255 och 254 är det ju
bara en riktig hacker som förstår vad det är så speciellt med. 0, -1
och liknande däremot... Dessutom är ju -1=255 om det lagras i en
byte, och då föredrar jag att skriva det som -1. Fast allra hellst skriver
jag det som "GÖMT".
Om du dessutom inser det tilltalande i att numrera både platser och föremål
med samma nummerserie (dvs om nr 1 är en kastrull, så kan inte nr 1 också
vara en plats i skogen), så måste ju talen räcka till både platser och
föremål, och då är det väl lika bra att dra till med två byte på en gång?
Vad beträffar numeriska flaggor, eller m a o "variabler", så måste man
minst kunna öka samt minska dem med ett. Finast blir det förstås om man
kan räkna normalt med dem: ARITM( FLAG(1)=FLAG(1)+FLAG(2)*2 ).
Att använda namn i stället för tal, gör alla slags program mer lättlästa,
och mer lättändrade. Om man får lust (av outgrundlig anledning) att lägga
till en sak mellan sak 5 och 6, så blir man med tal-metoden tvungen att
gå igen hela programmet och justera alla tal, medan man med namn-metoden
inte behöver ändra någonting. (Fast du är väl van vid tal och enbokstaviga
variabelnamn, din ABC80-freak! :-) )
Angående skillnaden mot BASIC:
( ... Initieringar ... )
IF Sub<>1 THEN ;Txt¤(3) : RETURN
IF Läge(1)<>254 THEN ;Txt¤(4) : RETURN
IF Flaglampa THEN ;Txt¤(1) : RETURN
Flaglampa=Sann : ;Txt¤(2)
RETURN
Det här var förstås i BASIC-II, men det är lätt att se hur det blir i
ABC80-BASIC också.
Subrutinerna fick du till bra. Nyttan med sådana, är ju att man kan spara
en massa skrivarbete och minne. Men sätt gärna namn på dem också.
Det nya kommandot STOP avslutar tydligen bearbetningen av aktuellt kommando
och förtsätter med nästa, varför det även skulle kunna heta t ex NEXT,
CONTINUE eller BREAK (de två sista hämtade från C-språket...).
Men nöj dig inte med bara det. Dela även in VBES i grupper för varje
rum och
varje kommando så kan kompilatorn se till att exekveringen hamnar där%på
effektivaste sätt, i stället för via en miljon IF-satser efter varandra.
(Kompilatorn kan för all del vara så smart så den sorterar upp det auto-
matiskt, men uppdelningen kan nog vara bra för strukturen också.)
Vänsterledet om => eller <> skulle kunna göras mer flexibelt om det nu
behövs. I stället för att länka ihop villkoren med + som motsvarar AND,
kan man ju ta med OR, NOT o dyl.
NOTXT och ATXT, verkar på sitt sätt praktiska, även om det går att åstadkom
med vanliga vilkor/flaggor och utskrifter. Men jag kan även tänka mig%en
annan variant, där man redan rumsbeskrvningens text kan hänga på ett
antal villkorliga texter, t ex "FLAG(29) => 'Du ser ett djupt hål i golvet'
NOTXT och ATXT kan förresten gärna klara dels texter knutna till vissa
rum, och dels texter som kommer hela tiden, som 'Du känner dig svårt
sjuk'.