Główne przypadki położeń piłki
Należało również rozpatrzeć przypadki, w których piłka współdzieli pola z paletką lub ścianą.
Ogólnie wszystkie przypadki i odpowiadające im funkcje w kodzie można rozpisać następująco:
1) Piłka znajduje się całkowicie w jednym lub obu polach zajmowanych przez paletkę (xp < 4)
współdzieli częściowo lub całkowicie pola z paletką. (DDRAM 0x00 i/lub 0x40)
a)
void xpLT4_ypLT5()
- piłka znajduje się całkowicie w skrajnym górnym lewym polu
wyświetlacza (yp<5)
b)
void xpLT4_yp5_7()
- piłka częściowo znajduje się w skrajnym górnym lewym, częściowo
w skrajnym dolnym lewym polu wyświetlacza (yp = {5,6,7})
c)
void xpLT4_ypGT7()
- piłka całkowicie znajduje się w skrajnym lewym dolnym polu
wyświetlacza (yp > 7 oraz yp < 13)
2) Piłka częściowo obejmuje pola paletki, częściowo pola bezpośrednio następujące po polach
paletki (adresy DDRAM 0x00, 0x40, 0x01, 0x41), xp={4,5}
a)
void xp4_5_ypLT5()
- piłka obejmuje pola 0x00 i 0x01 pamięci DDRAM, yp < 5
b)
void xp4_5_yp_5_7()
- piłka obejmuje cztery pola: 0x00, 0x01, 0x40, 0x41, yp={5,6,7}
c)
void xp4_5_ypGT7()
- piłka pokrywa dwa pola: 0x40 i 0x41, yp > 7
3) Piłka znajduje się w środkowej części ekranu, pola DDRAM w jakich się znajduje
wyznaczane są przy pomocy wzoru (2). xp < 74
a)
void xpLT74_kpLT4()
- piłki obejmuje jedno pole lub dwa pola znajdujące się jedno nad
drugim. Istotna jest wartość kp (wzór (1)), która dla tego przypadku przyjmuje wartość
kp={1,2,3}.
b)
void xpLT74_kp_4_5_ypLT5()
- piłka obejmuje dwa górne pola położone obok siebie.
Nazwa funkcji jest tu nieco myląca, gdyż kp w rzeczywistości przyjmuje tu wartość 4 lub 0,
a nie 4 lub 5. yp < 5
c)
void xpLT74_kp_4_5_yp5_7()
- piłka obejmuje do cztery pola, każdy podprzypadek
rozpatrzany oddzielnie, kp={4,0}, yp ={5,6,7}
d)
void xpLT74_kp_4_5_ypGT7()
- piłka obejmuje dwa dolne pola położone obok siebie, kp =
{4,0}, yp>7
4) Piłka częściowo znajduje się w polu ściany, częściowo w polu sąsiadującym z polem ściany,
xp < 76
a)
void xpLT76_ypLT5()
- piłka częściowo znajduje się w górnym polu ściany (0x0F),
częściowo w polu sąsiadującym (0x0E), yp < 5
b)
void xpLT76_yp5_7()
- piłka obejmuje cztery pola, dwa ściany (0x0F, 0x4F) oraz dwa
sąsiadujące (0x0E, 0x4E), yp = {5,6,7}
c)
void xpLT76_ypGT7()
- piłka częściowo znajduje się w polu dolnej ściany (0x4F),
częściowo w polu sąsiadującym (0x4E), yp > 7
5) Piłka całkowicie znajduje się w polu zajmowanym przez ścianę, xp > 75
a)
void xpGT75_ypLT5()
- piłka obejmuje tylko pole górnej ściany, yp < 5
b)
void xpGT75_yp5_7()
- piłka obejmuje oba pola ściany, yp = {5,6,7}
c)
void xpGT75_ypGT7()
- piłka obejmuje tylko pole dolnej ściany, yp > 7