W przypadku tak skomplikowanego żądania, jak generowanie oprogramowania z SRS, znacznie bardziej prawdopodobne jest uzyskanie akceptowalnych wyników poprzez rozbicie problemu na kroki. Jednak fragmenty wyników z odpowiedzi na monit zerowego strzału mogą być pomocne w ustaleniu, jak rozbić problem na czynniki pierwsze. Ponieważ ChatGPT jest dostrojony do kreatywności (ma wysoką domyślną temperaturę), był idealnym narzędziem do pomocy w pisaniu SRS. Jednak zwykle nie jest to najlepsza opcja do generowania działającego kodu. Przy mojej drugiej próbie zbudowania gry w kółko i krzyżyk zwróciłem się do GitHub Copilot. Zanim poprosiłem Copilot o pomoc w mojej aplikacji, użyłem wbudowanego debugera w przeglądarce Chrome, aby dowiedzieć się, co było nie tak z kodem dostarczonym przez ChatGPT. Okazuje się, że funkcja, która umieszcza X użytkownika na planszy, ma następujący wiersz kodu, aby zamieniać symbol użytkownika między X i O:
currentPlayer = currentPlayer === ‘X’ ? ‘O’ : ‘X’;
W tym stwierdzeniu zmienna currentPlayer przechowuje symbol (X lub O), który zostanie zagrany na planszy, gdy użytkownik wykona ruch. Operator warunkowy (lub trójkowy) w tym stwierdzeniu sprawdza, czy wartość currentPlayer wynosi X i zmienia ją na O, jeśli tak jest. W przeciwnym razie (jeśli currentPlayer nie jest równy X) zmienia jej wartość na O. Problem polega jednak na tym, że wartość currentPlayer jest używana w programie tylko do reprezentowania gracza ludzkiego. W rezultacie zmiana wartości currentPlayer na O powoduje, że człowiek gra co drugi ruch symbolem AI. Po zakomentowaniu tego wiersza mogłem grać w kółko i krzyżyk i wygrywać za każdym razem (ponieważ komputerowy gracz po prostu losowo wybiera z dostępnych pól w tym momencie). Przy mądrzejszym przeciwniku gra powinna być remisowa za każdym razem, więc zdecydowałem się zaimplementować funkcję poziomów trudności z SRS.







