Uwielbiam Codex od OpenAI. Zrobiłem to, czekając na przybycie UberEats.
Codex stworzył również animację postaci z patyków. Oto polecenie: Zbuduj natywną aplikację macOS o nazwie „Stickworld” używając SwiftUI + SpriteKit (Swift Package, macOS 14+), z działającymi poleceniami `swift build` i `swift run`. Wygląd aplikacji: - Tło w stylu białego notatnika. - Subtelne poziome niebieskie linie i czerwona linia marginesu po lewej stronie. - Tytuł tekstu w lewym górnym rogu: „Stickworld”. - Brak tekstu podtytułu/instrukcji pod tytułem. Podstawowa rozgrywka: - Lewy klik na pustą przestrzeń: stwórz postać z patyków. - Lewy klik bezpośrednio na postać z patyków: usuń tę postać. - Lewy klik i przeciągnij: narysuj czarny obiekt linii. - Po zwolnieniu myszy, jeśli kreska kończy się blisko punktu startowego, zamknij ją w pętlę (pułapka); w przeciwnym razie pozostaw jako otwartą ścianę. - Narysowane obiekty stają się statycznymi przeszkodami fizycznymi, z którymi kolidują postacie z patyków. - Prawy klik i przeciągnij: ruch gumki. Jeśli gumka przecina jakąkolwiek część narysowanego obiektu (w tym zygzaki), usuń cały obiekt. Zachowanie postaci z patyków: - Renderuj proste czarne postacie z patyków w wyprostowanej postawie (głowa w górze, ciało pionowe z lekkim przechyleniem). - Autonomiczne chodzenie głównie po poziomych ścieżkach, z tylko lekkimi kątami w górę/w dół. - Poruszaj się z prędkością chodzenia (nie biegnij), z dyskretnymi prostymi segmentami i okazjonalnymi zmianami kierunku. - Pozostań w granicach sceny. - Gdy dwie postacie się zderzą, wywołaj reakcję walki: - Jedna wykonuje `punch_combo` - Druga wykonuje `stagger` - Pokaż krótki tekst uderzenia (np. POW/BAP/etc.) - Uwzględnij okazjonalny stan `idle_look`. Struktura implementacji: - `Sources/StickworldApp.swift` (punkt wejścia aplikacji) - `Sources/ContentView.swift` (kompozycja SwiftUI) - `Sources/StickWarsScene.swift` (scena SpriteKit + stany postaci + obsługa wejścia + logika przeszkód/gumki) - Nazwa produktu/celu w `Package.swift` powinna być `Stickworld`. Ważne: - Nie dodawaj zachowań zapasowych dla niepewnych funkcji, chyba że najpierw poprosisz o pozwolenie.
466