Att skapa en Pixel skärm i Batch (6 / 9 steg)
Steg 6: Förstå koden: programmera mekanik och Spotcheck
: ScreenLoop
CLS
kalla screen.bat
Ställ in skjuta = y
rem start move.vbs
Set/p shove =
om % shove % == () w
uppsättning shove =-% bredd %
gå till flytta
)
om % shove % == () s
Ställ in skjuta = % bredd
gå till flytta
)
om % shove % == () d
Ställ in skjuta = + 1
gå till flytta
)
om % shove % == en (
uppsättning shove =-1
gå till flytta
)
gå till ScreenLoop
: Flytta
Set/a spotcheck = % plats % % skjuta %
Ställ in checker = %% v % spotcheck %%%
ECHO ställa spotcheck = % checker % > spotcheck.bat
kalla spotcheck.bat
om spotcheck % == % barriär % goto ScreenLoop
Ställ in v % plats % = % bakom %
Set/a plats = % plats % % skjuta %
Ställ in v % plats % = % markör %
rem om % bakom % == % % symboluppsättning bakom = % symbolen %
ställa in bakom = % spotcheck %
gå till ScreenLoop
Återigen, det finns två sektioner, den viktigaste ScreenLoop avsnitt och flytta.
ScreenLoop är ganska enkelt. Varje gång den körs, det rensar skärmen och uppdaterar bilden skapad av pixlar, Visar ändringar i variabler. Loopen designerar sedan en ny variabel, skjuta %, för indata. tangenterna 'w', 's', 'a', och hade "används som piltangenterna, och avgöra vilken del av koden i programmet går till.
Fyra bitar av kod som ScreenLoop länkar till används för att ange variabler som används för att bestämma vilken variabel att kontrollera innehållet i, att ändra % utrymme % markören platsen och ändra symbolen i både den pixel som flyttas till och pixel lämnas. Miljövariabeln % skjuta % återställs för att innehålla kod för att ändra variabeln % plats % i avsnittet flytta i koden. Det blir +/-1 om markören flyttas vänster eller höger, och +/-% bredd % (+/-40 för våra 40 x 20 skärm) om markören flyttas uppåt eller nedåt.
Avsnittet flytta är lite kod som gör att programmet att reagera på innehållet i variablerna, och det är där % lag % antalet pixlar spelar in med symboler, samt del av koden som använder sig av den tredje filen, spotcheck.bat.
Flytten har också två delar. Först är det skript som kontrollerar värdet för pixeln som markören försöker gå in på.
: Flytta
Set/a spotcheck = % plats % % skjuta %
Ställ in checker = %% v % spotcheck %%%
ECHO ställa spotcheck = % checker % > spotcheck.bat
kalla spotcheck.bat
om spotcheck % == % barriär % goto ScreenLoop
Det finns flera steg i denna process. För det första programmet uppsättningar % spotcheck % tar % placera %, % lag % antalet pixlar som innehåller markören, och lägger till eller subtraherar % bredd % eller 1, utifrån de värden som angetts för % skjuta % från kommandot anges, för att utse % lag % antalet pixel markören försöker gå in på. Till exempel om vi är på v343 och flytta till v344, kommer att programmet ta plats %, vilket är 343, och lägga till 1 (eftersom vi flyttar till höger) för att få ett % lag % antal 344, som designerar pixel v344.
Nu när programmet vet antalet pixel att kontrollera, måste det kontrollera värdet av pixel v344. Detta är en svår uppgift tekniskt eftersom vi måste veta värdet av pixel v344, som är en batch variabeln % v344%, men datorn bara vet antalet pixel genom spotcheck % men behöver fullständiga namn % v344%. Detta är ett problem eftersom programmet skulle behöva kontrollera innehållet i en variabel som anges av en variabel, och du skulle sluta med
om %v % spotcheck %% == % symbolen %
med % spotcheck % är % lag % antalet pixel vi kollar. Datorn kan inte meningsfullt om detta, så vi måste göra en liten bit av alkemi på koden. Vi gör detta med andra variabeln, % checker %:
Ställ in checker = %% v % spotcheck %%%
Raden anger % checker % lika med texten "%v #%," där "#" är % lag % värdet för pixeln vi flyttar in. Om vi fortfarande kommer från v343 till v344, då checker % innehåller texten "% v344%," som inte är ett värde som kan användas i dagsläget, men som är en bit kod som datorn känner igen: variabeln % v344% är pixel vars värde måste identifiera. Nu behöver vi bara att sätta denna bit av skript i en kodrad som datorn kan använda för att kontrollera pixelns innehåll.
Det är där spotcheck.bat kommer in:
ECHO ställa spotcheck = % checker % > spotcheck.bat
kalla spotcheck.bat
Dessa rader exportera texten "Ange spotcheck = % checker %" till spotcheck.bat. Kom ihåg, checker % nu innehåller texten "% v344%," så textraden som exporteras till den nya .bat arkivera läser
ställa in spotcheck = % v344%
som är en användbar CMD linje. Efter exporterar denna textrad, programmet då kallar spotcheck.bat och driver den linjen av skriptet, och plötsligt spotcheck % innehåller samma symbol som pixel v344, och kan testas med en om/då kod.
Du kan programmera detta att kontrollera alla symboler du vill och skapa något värde som du vill; i spelet senare förlorar om monstret flyttas till en pixel som innehåller en gruva, det ett liv. Det finns bara en sak som skriptet kontrollerar sig för, men, och det är ett hinder:
om spotcheck % == % barriär % goto ScreenLoop
Om pixel v344 innehåller ett hinder, då programmet flytta inte markören men går tillbaka till ScreenLoop att få ett annat kommando.
Om det finns inget hinder för rörligheten, då programmet körs följande rader, andra halvan av flytten, för att flytta markören till den nya pixeln:
Ställ in v % plats % = % tomma %
Set/a plats = % plats % % compasssymbol % compassamount %
Ställ in v % plats % = % markör %
rem om % bakom % == % % symboluppsättning bakom = % symbolen %
ställa in bakom = % spotcheck %
gå till ScreenLoop
Den första raden återställer symbolen för den pixel du befinner dig på. Det gör detta genom att v % plats %, din aktuella pixel variabeln, lika med % bakom %, vilket var innehållet i den pixeln innan du flyttade in på den (när starterna, % bakom % är lika % utrymme, eller någon annan symbol du vill finns i Start pixel). Nu nästa gång ScreenLoop körningar och skärmuppdateringarna, den pixel du kvar visar innehållet som var där innan i stället för symbolen markören.
Därefter kommer själva flytten. Programmet tar plats %, den variabel som innehåller numret på den pixel som markören, och lägger till eller drar ifrån 1 eller % bredd % baserat på värdet för % belopp %. Nu är plats % numret på en pixel ovan, nedan, höger eller vänster om den som vi just lämnat. plats % var lika med 343; nu är det lika med 344. Markören har en ny plats.
Det sista steget är att göra denna nya pixel Visa markören symbol. Detta är enkel:
Ställ in v % plats % = % markör %
Nu den pixel v # eller v344 i vårt exempel, innehåller symbolen för markören, och kommer att visa det när ekade på skärmen.
Det finns en sista sak som måste göras: vi behöver en ny % bakom % värde så att denna nya pixel kan återställa när vi går på det.. Det gör ange vi bara % bakom % motsvara % spotcheck %, som är fortfarande inställd på symbolen för pixeln innan vi flyttade in på den. Säga pixel v344 var lika med bokstaven "F": när programmet kontrollerade v344's innehållet att se om det kunde flytta dit, det % spotcheck % lika med F för att köra om/så uttalanden, och nu % bakom % ställer sig lika med F. Nu, när vi lämnar v344 pixel kommer ställas in att Visa symbolen för det visade innan vi flyttade in på den. Det finns också en rad kod som gör att du kan ändra pixeln som du lämnar den. Ta bort "rem" från linjen och skriptet kommer att återställa pixel till en ny symbol utifrån en om/då uttalande (om pixel var F, lämnar det som G). Du kan också länka till ett kommando i ScreenLoop:
om % shove % == % % kommandouppsättning bakom = % symbolen %
När % bakom % har angetts måste flytten är klar och ScreenLoop upprepas.