Często zadawane pytania na temat specyfikacji projektu zaliczeniowego na rok 2OO3/2OO4

Yyy... Od czego zacząć?

Najpierw napisać pisemny projekt (przede wszystkim hierarchii klas) i oddać go prowadzącemu około 8 grudnia.
A jeśli chodzi o implementację:

Ściśle pisząc, na wykładzie nie ma mowy o surowym prototypie interfejsu użytkownika. Poprawka bierze się stąd, że nie wszyscy z Państwa są doświadczonymi programistami, którzy od razu testują wszystko co piszą. Taki prototypowy interfejs ma służyć właśnie testowaniu modelu, a nie uczeniu się jak robić interfejs użytkownika :-)...

Czy zwykli studenci lub Profesor Snape losują również długość swojego ruchu?
Ten i wiele innych szczegółów nie jest wyspecyfikowana, lecz pozostawiona to rozsądkowi studentów...
Czy można opróżnić kociołek wylewając go na podłogę?
Zgodnie ze specyfikacją można przelewać zawartość kociołka tylko do kociołków innych studentów...
Czy Snape patrząc w kierunku X widzi pole Y na planszy Z?
Zgodnie z zasadami fizyki pole widzenia można określić przeprowadzając prosty odcinek między okiem obserwatora, a obiektem i sprawdzając, czy nie przecina żadnej ściany. Dla uproszczenia można sprawdzać tylko odcinek między środkiem pola na którym jest obiekt, a środkiem pola na którym jest obserwator. Nowe: Przez przecięcie ściany rozumie się przecięcie (nie styczność do) pola na którym jest ściana
Czy jeśli Snape każe się uczniowi tłumaczyć to student podchodzi do profesora, czy krzyczą na siebie z końców sali?
Zgodnie ze specyfikacją w sali jest taka cisza, że swobodnie mówią do siebie z końców sali...
W jakiej normie liczymy promień wybuchu?
W specyfikacji jest opisana tylko jedna norma, co sugeruje, że właśnie jej możemy używać.
Czy eliksir wybucha natychmiast po dodaniu składnika, który spowoduje wybuch?
Z treści specyfikacji można wnioskować, że wszystkie opóźnienia (np. przed wybuchem) są podawane jawnie (przy pomocy after:).
Czy uczniowie mogą się nie ruszać?
Zdrowy rozsądek podpowiada, że bezruch nie jest w żadnym razie losowy. Nie, uczniowie (i profesor) muszą się poruszać.
Czy zakrywanie kociołka następuję przed akcją? Czy zakrywanie kociołka jest permanentne? ...
Ze specyfikacji jasno wynika, że zakrywanie kociołka zastępuje ruch i akcję (uczniowie mogą wykonać akcje tylko po ruszeniu się w danej turze), a jego skutki trwają tylko w czasie zakrywania (użycie trybu niedokonanego).
Czy studenci mogą się studenci mogą się przepychać z profesorem Snape'em?
Nie. Specyfikacja nie próbuje nawet sugerować, że można przepychać profesora (odsyłam do własnego rozsądku i książek).
Czy gra kończy się w momencie, gdy wszyscy wyróżnieni uczniowie z jednego domu zostaną odesłani do skrzydła szpitalnego?
Niekoniecznie. Dla wygody można by kończyć symulację, gdy jedna lub obie grupy nie mają już szans na stworzenie eliksiru. Jednak obliczanie, czy ktoś wygrał, jest stosunkowo skomplikowane (ze względu na obecność reagujących lub zepsutych eliksirów w kociołkach wszystkich pozostających studentów) i w ogólności wymaga kontynuowania symulacji.
Poza tym oglądanie zachowania programu po usunięciu postaci kierowanych przez gracza może być bardzo szybkim i pouczającym sposobem jego testowania.
Czy można wylać zepsuty eliksir na podłogę?
Nie. Ta akcja nie jest opisana, ani dozwolona w specyfikację.
Czy w przypadku obliczania zasięgu wybuchu/rozchlapania eliksiru obowiązuje ta sama zasada, co przy obliczaniu zasięgu widzenia profesora?
Tak.
Czy właściwy (wygrywający) eliksir można otrzymać tylko przez kolejne dodawanie pojedyńczych składników, czy też może się zdarzyć, że dla jego uzyskania trzeba wymieszać całe mieszanki?
Zakładamy, że plik konfiguracyjny jest tak skonfigurowany, by Malfoy mógł samodzielnie sporządzić eliksir. Wystarczy dodawanie pojedyńczych składników.
Załóżmy, że eliksir ten należy otrzymać poprzez dodawanie kolejno składników a, b i c. Co się dzieje np. w sytuacji, gdy Harry ma w kociołku składnik a, a ktoś wleje mu mieszankę składającą się z b i c?
Co dzieje się, gdy ma on w kociołku mieszankę a + b, a ktoś wleje mu b + c (w przypadkach, gdy b + c jest "popsuta" i nie jest "popsuta")
Każde wlewanie mieszanek lub składników, które nie jest zdefiniowane w pliku konfiguracyjnym daje "popsutą" mieszankę.
Czy gracze kierowani przez komputer powinni za każdym razem losować długość swojego ruchu z zakresu [0..n]
Czarodzieje kierowani przez komputer mają różne strategie. Nie wszystkie są losowe.
Czy uczniowie sterowani przez komputer mogą się w jakikolwiek sposób komunikować?
Gracze grający po tej samej stronie mogą się komunikować. (Jedną stroną jest na przykład Malfoy i jego kumple.)
Czy każdy "niezepsuty" eliksir ma nazwę?
Czy eliksir, który przereagował "zawiera" te same składniki, co przed reakcją.
Tak.
Czy gracz widzi to co jest w pliku konfiguracyjnym?
Tak, wszystkie te informacje muszą być dla niego dostępne.
Czy jak nasz eliksir jest zły (ale nie wylądowaliśmy w skrzydle szpitalnym) to możemy grac dalej?
Tak, ale nasz kociolek jest pełny.
Czy można zepsuć eliksir zawierający wszystkie składniki i mieszanki? (Poprawione 10 grudnia, poprzednia odpowiedź zawierała mało istotną sprzeczność ze specyfikacją.)
Nie.
Czy składnik jest eliksirem?
Umownie - tak. W szczególności może być zadany na lekcję ((Ingredient new: 'X' mark: '1') wins).
Czy dodanie jakiejś mieszanki z podobnych składników do innej mieszanki nie zmieni jej?
Eliksir x zawiera się w y wtedy i tylko wtedy, gdy:
Co się dzieje, gdy student połknie reagującą mieszankę?
Można (ale nie trzeba) zakładać, że soki żołądkowe studenta ją dezaktywują. Studenci przecież też są magiczni.
Czy jeśli w pliku konfiguracyjnym jakiś eliksir powstaje jako suma jednego eliksiru i drugiego, który się zawiera w pierwszy, to jest to błąd o którym należy informować?
Zakładamy, że plik konfiguracyjny ma zawsze rację i może zawierać wyjątki od ogólnych reguł.
Czym kończy się próba wlania czegoś do zakrytego kociołka - utratą tego, czy po prostu próba kończy się niepowodzeniem i możemy probować dalej?
Oto konserwatywna interpretacja specyfikacji:
Nie można nawet próbować przelać czegoś do zakrytego kociołka. Musielibyśmy to lać po rękach studenta. Mogłoby to przenieść studenta do skrzydła szpitalnego, a nas - do gabinetu dyrektora szkoły.
Czy więcej niż jeden składnik może mieć to samo oznaczenie na planszy?
Byłby to oczywisty błąd w pliku konfiguracyjnym.
Czy metody description:, explodes:, splash: i after: można wywoływać wielokrotnie dla danego obiektu? Co miałoby się wtedy zdarzyć?
Tak. Powinno to spowodować wyświetlenie komunikatu o wielokrotnym definiowaniu tej samej właściwości obiektu.
Czy w x := a+b. y := a+b. zmienne x i y oznaczają tę samą mieszankę, czy różne jak to wynika ze składni Smalltalka?
Z pliku konfiguracyjnego można wnioskować, że intencją autora specyfikacji było jednokrotne, unikalne definiowanie każdej mieszanki. Po napotkaniu takiej dwuznaczności należy zatem zakomunikować błąd.
Czy może być więcej niż jeden wygrywający eliksir?
Nie jest to rozstrzygnięte w specyfikacji.
Czy uczeń wie, czy jest widziany przez profesora?
Zgodnie ze zdrowym rozsądkiem uczeń widzi w którą stronę profesor jest zwrócony.
Czy profesor zatrzymuje się w trakcie tłumaczenia się ucznia?
Nie jest to wyspecyfikowane.
Co się dzieje podczas oddawania eliksiru jeśli są dwa eliksiry wygrywające, jeden trujący, a drugi nie?
Nie jest to wyspecyfikowane.
Czy ruchy postaci mają miejsce w tej samej turze, czy każda z nich ma własną turę?
Każda postać rusza się raz w ciągu tury.
Czy uczeń może w dowolnym momencie z własnej woli wypić zawartość swojego kociołka?
Nie. W specyfikacji wyraźnie są wymienione wszystkie akcje, które uczeń może wykonać z własnej woli.
Czy jeśli uczeń daje profesorowi eliksir do sprawdzenia, a ten każe mu go wypić ("spróbować"), to kociołek będzie po takiej akcji pusty?
Nie jest to wyspecyfikowane. (Oczywiście wszystkie użyte rozszerzenia specyfikacji należy dokumentować.)
Czy wygrywającym eliksirem może być eliksir zepsuty ?
Nie jest możliwe zapisanie takiej możliwości w plik konfiguracyjnym.
Dlaczego podajemy tablicę składników w pliku konfiguracyjnym? Przecież i tak wiemy, gdzie na planszy są składniki dzięki atrybutom "mark" przy definiowaniu ingredientów.
Tylko dopóki nie wykorzystujemy tego samego oznaczenia eliksiru na różnych poziomach gry...
Nie zauważyłem w opisie miejsca w którym stoją kociołki uczniów, czy mogą one stać poza planszą ?
Uczniowie noszą kociołki ze sobą.