>> ROB BOWDEN: Szia.
Én Rob.
Szeretné tudni, hogyan hajtsák végre ezt a játékot?
Nos, kitörni a személyzet megoldás.
>> Szóval, most először fejjel lefelé, hogy az init funkciókat, hogy azt mondta, hogy
végre először.
Először az egyik akkor vess egy pillantást rajta az init evezni.
Rendben, úgy emlékszem, hogy szeretnénk a evezni, hogy pontosan középre
az x-tengelyen.
Tehát meg kell kitalálni ahol ez kéne.
>> Mivel a szélessége a fórumon -, amely szintén hash határozza up top -
kell kivonni azokat a lapát szélességét és elosztjuk 2-vel, úgy, hogy a
közepén a lapát van a központ a fórumon.
Ne feledje, hogy az x-koordináta utal A bal felső sarokban a lapát,
és így ez pontosan hol azt akarjuk, hogy legyen.
Az y-koordináta nem számít annyira, mert el tudjuk helyezni
, amerre akarunk.
Így példányosítanánk a lapát, mi meg A fekete színű, mi meg kitölteni a True
így ez egy kitöltött téglalapot, és majd adja hozzá az ablakhoz, és visszatérés
a lapát.
És ennyi inicializálása a lapát.
>> Ez lesz hasonló az init eredményjelző.
Így megyünk inicializálni a címkén, megyünk be a színt
világosszürke - akkor vedd amit akar - fogjuk állítani a betűtípust
sans serif 48 -
is vegye, amit akarsz -
mi adjuk hozzá az ablakhoz.
Most ez Hátraküldés nem igazán szükséges, ez csak abban az esetben valami
más nem történik, hogy átfedés a címkét.
Majd ha az általunk használt észlelés Collision, Detect Collision érzékeli a másik
dolog, mielőtt azt érzékeli, a címkét.
De ez tényleg nem érinti bennünket ebben a programban.
>> Végül pedig itt van ez a frissítés eredménytábla funkció, amit írtam.
Szóval vessünk egy pillantást.
Nos, itt van valami, ami majdnem azonos azzal, amit
láttuk az label.c.
Tehát van egy címke -
egy karakter puffer 12 karakter, ami éppen elég ahhoz, hogy kezelni minden
egész, negatív vagy pozitív.
Akkor használjuk sprintf másolni a rámutat a tárolóba.
Szóval, s ez tartalmazza a string a pontok számát.
>> Végül, mi meg a címke az, hogy a húr.
És akkor meg kell középre a címke Abban az esetben, már ment kilenc 10
pontok és már eltolódott azt.
Így számítani az x és y koordináta A címke, amely
kap a szélesség és magasság az ablakon.
Bár, azt is csak használja a állandók szélesség és magasság hash
meghatározott fel tetején.
Azt is kap a szélesség és magasság a címke és a szakadék
hogy a 2-központ.
És akkor használjuk Set hely, hogy ténylegesen tegye az adott helyen.
Szóval ez azt init eredményjelző.
>> OK.
Tehát init golyó lesz nagyon hasonló init lapátok is.
Látjuk, hogy mi használ newgoval annak érdekében, hogy példányosítani egy új labdát.
És itt mi használ 2-szer a sugár mint a szélessége a labdát, és a 2.
alkalommal a sugár, mint a magasságát a labdát.
Most is newgoval, az x és y-koordináta, hogy átadjuk az megy
olvassa el a bal felső sarkában a labda, ami valójában
kívül a labda is.
Így annak érdekében, hogy a labda pontosan középpontjában a fórumon, meg kell, hogy adja át
szélessége osztva 2 a központ, és a majd vonjuk ki a méretét, hogy álljon
A tényleges központja a labdát a központ a fórumon.
És mi pontosan ugyanaz a dolog Az y-tengely, azzal az eltéréssel,
magasság helyett szélességét.
>> Tehát, hogy hozza a labdát a központban.
És ez egy példányt a labdát, állítsa be a színe fekete, töltse ki a labdát,
végül hozzá a ablakot, és vissza.
És ennyi inicializálása a labdát.
>> És most vessünk egy pillantást init téglák ami valamivel több
bonyolult, de ez elég hasonló init evezni.
Nos, először azt kell kitalálni, a szélességét az egyes tégla.
Ne feledje, hogy van egy állandó neve kéri, amely meghatározza a
oszlopainak száma téglák hogy mi van.
Tehát, mi fogja meghatározni a szélességét egyetlen tégla azáltal, hogy a szélesség
az egész testület, kivonva ki a méret a különbség -
amelyet a hash meghatározott fel felső és utal a képpontok számát, hogy
között kell lennie az egyes tégla -
, és így megyünk, hogy összesen rés alkalommal kéri üres pixel a
egysoros.
És az is utal, hogy néhány üres képpont a bal és jobb oldalán a
bal oldali oszlop és a jobb oszlop tégla.
>> Tehát vonjuk ki azokat üresen pixel hagy minket a képpontok számát, hogy
tégla ténylegesen használ.
És akkor osztunk hívásokat kap a képpontok számát egy tégla.
Tehát itt mi határozza meg egy tömböt, hogy csak meghatározza a színeket akarunk minden
sor tégla.
Ha több sor tégla, mint színeket, hogy meghatározott, majd meglátjuk
hogy mi csak loop visszafordult és használjon piros, majd ismét a narancs és a
sárga és így tovább.
>> Úgy, mint a p-be spec tippeket vagyunk fog hurok az egész sort és
oszlopok a tégla.
De mielőtt hurkot az oszlopokat, akkor lásd itt, hogy mi megadásával
y pozícióját minden tégla az adott sorban.
Azt is mozog ez a második a hurok, de akkor leszünk csak
Ennek a számítás újra és újra újra, ha már nem kell.
>> Tehát az Y-pozíció a tégla folyik hogy árrés, ami hash
meghatározott fel tetején, és csak utal a tér között, a tetején a fórumon és a
kezdete az összes téglát.
És fogunk hozzá, hogy a sor hogy mi vagyunk az idő magassága egy
egyes tégla és a rés hogy egymás között tégla.
Tehát ez is egy függőleges különbség az egyes tégla.
Annak érdekében, hogy számunkra az y-koordináta a tégla.
>> Tehát itt fogunk számítani Az x-koordinátája a tégla.
Most már szakadék osztva 2 óta, emlékszem, korábban azt mondta, hogy a
bal oldalon a fórumon, megyünk hagyni egy kis helyet.
Tehát különbség osztva 2, hogy helyet.
És akkor mi hozzátéve, hogy, hogy az oszlop hogy mi vagyunk az idő szélességének plus
rés, ahol a szélesség a tárterületet hogy egyetlen tégla vesz fel, és
akkor rés a tér között minden tégla.
Ahhoz, hogy kiszámítja az x-koordináta a tégla.
>> Most már csak meg kell példányosítani a tégla, tekintettel arra, hogy az x és y-koordináta
segítségével kiszámítottuk, hogy a szélessége az egyes tégla, és a szünet magasságig, amely
hash meghatározott fel tetején.
Mi a szín a tégla.
Figyeljük meg, mi a mi szín tömb mi halad a sorban, amelyek
A mod num színben, ami megy, hogy minket tekerje vissza körül piros, ha
több sorban, mint a szín.
Végül, akkor töltse ki a tégla színes és add hozzá az ablakhoz.
>> És ennyi.
Szóval, ez az egész a mi inicializálás módszereket.
Most meg kell nézni, hogy míg loop, amit kellett, hogy töltse be
Tehát itt azt látjuk, hogy ez a mi, míg hurok, amely folytatódni fog, amíg
játéknak akkor van vége, ami vagy azt jelenti, elfogy a él, vagy
elfogy a tégla.
>> Tehát az első dolog, amit meg egy Várjon Click.
Így a játék vár ránk, hogy ténylegesen kattintson, mielőtt a labda megmozdul.
És akkor mi lesz hogy csökkentse életét.
Tehát, ha már három életet, most vagyunk le a két életet, mi a mi
harmadik életet.
Fogunk középre a labdát.
Tehát most, ez nem igazán fog segíteni minket az első élet játszunk
mivel a labda már fog kerültek középre, amikor azt
példányai is.
De azt látjuk, amikor a végén elveszíti a élet és loop visszafordult, akkor vagyunk
szeretne majd centrikus a labdát az alján a fórumon vissza
a központban.
>> Szóval, most itt meg kell generálni az x sebessége a labdát.
És, mint egy a spec, mi használ d rand 48. generálni véletlen számot
adja meg a sebességet.
Mi eggyel, hogy mivel mi csak akarjuk, hogy a sebesség a tartományban egy
két nulla helyett az egyhez.
Végül, mi használ d rand 48-ben ismét Annak meghatározása érdekében, hogy a labda
fog mozgatni a bal vagy a jobb kezdeni.
>> Tehát d rand 48 visszaad egy véletlen számot nulla és egy között, ezért megkérdezte
ha ez kevesebb, mint 0,5, van egy 50 50 esélye kapcsolási sebessége
a labdát, hogy negatív.
Végül állítsa függőleges sebességét a labdát, hogy csak valami állandó.
Úgy döntünk, három.
És most van egy loop.
>> Tehát ez a belső hurok folytatódni fog.
Figyeljük meg itt, míg a tégla nagyobb, mint nulla -
így ha elfogy a tégla, most már megnyerte a játékot, és mi is
kitörni ennek loop -
és minden Get y Ball kevesebb, mint a magasság mínusz 2-szer a sugár.
Szóval mi ez felismeri, ha a ball történik megy a lapát, a
az esetben már elvesztette egy életet.
>> Keresi belül ez a for ciklus van Az ellenőrzés az egér esemény.
És így, ha van egy egér esemény, hogy azt jelenti, hogy ellenőrizni kívánja, hogy
hogy ha az egér költözött, és ha a egér mozgott, azt akarjuk, hogy a
lapát lépést tartani az egérrel.
Tehát, hogy ezt megtegyük, kiszámítja az új helyzetét a lapát, ami megy
hogy megragad a helyzet az egér - amely megragadja a pozíciót a
Amennyiben már sor került -
majd fogunk kivonni ki lapát szélessége osztva 2, így az
lapát marad középpontjában az egér ahelyett, hogy a bal oldalon a lapát
tartózkodó központú.
>> Akkor most mi is akar lenni abban, hogy nem megy át a bal oldali vagy jobb
oldalán a fórumon.
És itt mi csak ellenőrizni, ha a lapát lenne ki a bal oldalán
fórumon, csak kibír azt a bal oldalon.
És itt vagyunk ellenőrizni, ha a lapát vége lenne a jobb oldalon a
tábla, csak kibír ez a jobb oldalon.
És végül, valóban meg a helyét a lapát.
>> Nos, ha nem volt egér mozgását, ez azt jelenti, megyünk
szeretné helyezni a labdát.
És így már az x és y sebessége a labda
és így mozgatni.
De most szeretnénk kimutatni egy pár dolgot.
Tehát itt vagyunk kimutatására, ha elérünk sem a bal vagy a jobb oldalán
board, azt akarjuk, hogy a labdát, hogy ugrál.
És így, ebben az esetben, mi meg x sebesség a negatív x sebesség.
>> Ha a labda a tetején a fórumon, akkor mi is akarjuk, hogy a labda pattan.
De most meg akarjuk változtatni Az y sebesség.
Figyeljük meg, nincs olyan feltétele a labdát ütő alján a
Bizottság tagja, hogy már elfogták itt ebben a while ciklus.
>> Végül szeretnénk mutatni néhány ütközések, ahol, ha a labda hit
akár a lapát vagy a tégla, azt szeretnénk, hogy néhány speciális eset dolgot.
Tehát ha volt egy ütközés, amelyben esetben az objektum nem lesz nulla, akkor
ha az objektum megüt a lapát, akkor azt csak azt, hogy ugrál a labda.
És itt is, mi meg a helyét a labdát, hogy éppen a lapát.
Figyeljük meg, mi visszük a x helyzetét a labdát, és csak újrafelhasználása ezt.
De itt mi megy az Y-pozíció A lapát, és mozog a labda
felett a lapát.
>> Ez egy különleges eset úgy, hogy a labda nem ütközik a lapát, majd
mielőtt képes mozgatni le a lapát, másik loop megy a környéken, és
azt hiszi, hogy még mindig a panel és a így az y sebesség lesz meg vissza
negatív, majd a labda csak egyfajta botok pattogó a lapát.
Tehát, ha nem érte el a lapát, akkor azt is szeretné ellenőrizni
ha megüt a tégla.
És ez az, hogy hogyan tudjuk ellenőrizni hogy ha megüt egy tégla.
>> Meg kell, hogy ellenőrizze ezt, mert mi is ténylegesen megüt a címkét, és mi
nem akarja, hogy távolítsa el a címkét.
Tehát, ha megüt egy tégla, akkor távolítsa el, hogy tégla az ablakon, csökkentés
a gróf a tégla, növelni a pontok számát, és most meg kell
frissítse az eredménytábla, amely pontosan ugyanaz, mint láttuk korábban, amikor láttuk,
init eredményjelző.
De most már csak frissíti a eredményjelző hiszen már megváltoztatta a
pontok számát.
És meg kell jelennie, hogy elérünk még egy szünetet.
>> És végül, ha elérünk egy tégla mi is szeretnénk, hogy ugrál.
Így végül, mi szüneteltetjük csak azért, hogy a labda nem mozog szuper gyors és
valóban hit, hogy a lapát.
És ez nagyjából azt.
Szóval most mi lenne loop vissza a tetejére ez a while ciklus és folytatni, amíg
vagy elveszítjük az élet, vagy elfogy a tégla.
>> Mi történik, ha elveszítjük az élet?
Majd megyünk kilépéshez, miközben loop, és majd meglátjuk, visszafordul, fel
tetejére a külső while ciklus.
Ebben az esetben, mi lesz végre ez létre újra.
És ez létre fog minket várni egy kattintás, csökkentse a szám
él, centrikus a labdát, újratervezi egy x és y sebesség, és
majd újra a játékot.
>> És így, hogy a jövőben is, amíg vagy téglák végül is kevesebb, mint
vagy a nullával egyenlő -
ebben az esetben úgy nyerte meg a játékot -
vagy él kevesebb, mint nulla, amelyben ha már elvesztette a játékot.
Szóval, ha ez a helyzet, akkor kitör az, hogy míg a hurok, és elérjük itt
, hova megyünk várni a kattintás mielőtt kilép a játék, hogy a
játék nem csak a rögtön csukja ránk.
És végül mi zárja le a ablakot, és ennyi.
A nevem Rob, és ez volt a Breakout.