Att skapa en Pixel skärm i Batch (5 / 9 steg)
Steg 5: Förstå koden: inställning och LawLoop
utanför
titel skärmen
färg 0a
Set/a bredd = 40
Set/a höjd = 20
Set/a lastlaw = % bredd * höjd %
Set/a bottombarrier = % lastlaw % - % bredd
Set/a lag = 0
Set/a sidea = % bredd % + 1
Set/a sideb = % bredd % * 2
Ställ in markör = O
Ställ in hinder = #
Ange tomma =-
ställa in bakom = % tomma %
Set/a plats = 222
ECHO.
titeln skärmen % bredd %x % höjd
: LawLoop
om % lag % == % lastlaw % goto ObjectPlace
Set/a lag = % lag % + 1
om % lag % LEQ % bredd % ()
Ställ in v % lag % = % barriär %
gå till LawLoop
)
om % lag % GTR % bottombarrier % ()
Ställ in v % lag % = % barriär %
gå till LawLoop
)
om % lag % == % sidea %)
Ställ in v % lag % = % barriär %
Set/a sidea = % sidea % + % bredd
gå till LawLoop
)
om % lag % == % sideb %)
Ställ in v % lag % = % barriär %
Set/a sideb = % sideb % + % bredd
ECHO *
gå till LawLoop
) annat ()
Ställ in v % lag % = % tomma %
gå till LawLoop
)
: ObjectPlace
Ställ in v % plats % = % markör %
Den första delen ansvarar för att utse enligt symbolerna och värdena sidea procent, % sideb %, % plats % och % lag %.
Set/a bredd = 40
Set/a höjd = 20
Set/a lastlaw = % bredd * höjd %
Set/a bottombarrier = % lastlaw % - % bredd
Set/a lag = 0
Set/a sidea = % bredd % + 1
Set/a sideb = % bredd % * 2
Ställ in markör = O
Ställ in hinder = #
Ange tomma =-
ställa in bakom = % tomma %
Set/a plats = 222
ECHO.
I hela skriptet designeras symboler av variabler. Markören är % markör %, och som jag har skrivit det, % markör % = O. Senare i koden när du flyttar från v343 till v344 och programmet har att ställa v344 med för att visa O, markören symbol, gör det så använder
Ange v344 = % markör %
Sedan % markör % = O, % v344% innehåller också O. Jag gör det så att om du vill ändra symbol för en viss funktion, till exempel för att använda Visa markören i stället för O, du bara behöver ändra O till @ i denna övre del av koden i stället för att jaga genom skriptet för varje linje som behandlar markören.
* Obs: programmet kan inte förstå ett mellanslag (blanksteg) som en symbol. Om du använder en, kommer programmet att krascha. Jag använda "-" istället, och det gör skärmen lätt att läsa.
Ett annat viktigt inslag i denna del av koden som används genom hela programmet för att ställa in skärmen och flytta markören är bredd % och % höjd % variabler, som innehåller, derp, bredden och höjden på skärmen.
LawLoop är huvudsakliga installationsfasen. Dess uppgift är att ta varje pixel variabel på skärmen, från % v1 till % v800% för våra 40 x 20 skärm, och Ställ in den med lämplig symbol. Det gör detta baserat på antalet den variabeln, därför alla pixlar namnges "v #." % lag % börjar på 0 och räknas upp, att göra den första variabeln v1. Koden fungerar så här:
Ställ in v % lag % = % symbolen %
Från början, % lag % är lika med 1, så denna linje verkligen säger
ställa in v1 = % symbolen %
med symbolen % som oavsett symbol if/sedan villkor kravet. Efter inställningen v1, koden loopar och lägger till 1% lag %. Nu % lag % = 2 och koden läser
ställa in v2 = % symbolen %
% lag fortsätter att räkna upp tills den når den sista variabeln, v800 för 40 x 20, varvid koden hoppar till ScreenLoop och börjar löpa.
Vad skärmen ser ut som en gång ställa in beror på if/then uttalanden. % Lag % siffrorna används för att avgöra vilken pixel bör innehålla vad. Det finns två avsnitt av detta. de viktigaste LawLoop och ObjectPlace.
: LawLoop
om % lag % == % lastlaw % goto ObjectPlace
Set/a lag = % lag % + 1
om % lag % LEQ % bredd % ()
Ställ in v % lag % = % barriär %
gå till LawLoop
)
om % lag % GTR % bottombarrier % ()
Ställ in v % lag % = % barriär %
gå till LawLoop
)
om % lag % == % sidea %)
Ställ in v % lag % = % barriär %
Set/a sidea = % sidea % + % bredd
gå till LawLoop
)
om % lag % == % sideb %)
Ställ in v % lag % = % barriär %
Set/a sideb = % sideb % + % bredd
ECHO *
gå till LawLoop
) annat ()
Ställ in v % lag % = % tomma %
gå till LawLoop
)
LawLoop syftar till att skapa grunderna för skärmen: en gräns av barriären symboler omgivande tomt utrymme. Den har fyra huvudsakliga delar av koden hålla reda på bygga segmenten barriär runt gränsen med variabeln % lag % och if/then uttalanden. Två första skapa de övre och nedre hinder genom hinder i varje variabel med ett % lag % nummer som placeras på toppen eller botten linje på skärmen. För våra 40 x 20 skärm består den översta raden av pixlar med % lag % nummer 1-40 (40 variabel per linje) och botten av nummer 761-800, så används
om % lag % LEQ % bredd
och
om % lag % GTR % bottombarrier %
att ange en barriär på pixlar i topp och botten linje på skärmen.
Sidan hinder skapas med hjälp av sidea % och % sideb % variabler. sidea % kontrollerar den vänstra sidan och är ursprungligen inställd på % lag % antalet knytnäve variabeln på den andra raden (första raden har varit omhändertagen med uttrycket LEQ). När lagen % motsvarar % sidea %, programmet anger den första pixeln som ett hinder och sedan lägger till 40% sidea % så att när % lag % ökar det kommer att ställa den första pixeln i tredje raden som en barriär, efter vilka en annan 40 läggs till sidea % för den första pixeln av den fjärde raden, och så vidare tills de % lag % antal platserna en variabel i sista raden i skärmen , varvid uttrycket GTR tar över. sideb % fungerar på samma sätt, ange sista pixeln på varje rad som en barriär och skapa högra gränsen.
Den sista delen av installationen är ObjectPlace, som uppsättningar variabler innehåller symboler för markören och övriga ursprungliga villkor.
: ObjectPlace
Ställ in v % plats % = % markör %
Raden anger vilken pixel har % lag % antal lika med värdet % utrymme %, markören, rumsliga placering med symbolen utse markören. Du måste programmera denna del av koden själv, med uttalanden som detta för att skapa en miljö på skärmen, som hinder i mitten av skärmen. För något som spelet senare, kan du skapa flera olika kommandofiler med listor över villkor för att skapa olika nivåer och använda "kallar level1.bat" till setup nivån.