Har precis börjat med implementering i klasser och skulle behöva lite hjälp. Till att börja med är klassen till för beskrivning av hur saker ska läsas och det som finns under main är det som körs.?
Ska skriva ett program där en tänkt sköldpadda tar 100 steg och börja sin vandring mitt i fönstret. Steglängden ska lumpas i intervallet [1 ,10]. Efter varje steg ska sköldpaddan vridas ett slumpmässigt antal grader i intervallet [-180, 180].
Nästa steg är att göra ett program där två sköldpaddor ritar. Steglängd och vridning ska väljas slumpmässigt precis som i innan. Vandringen ska avslutas när avståndet mellan dem är mindre än 50 pixlar. Den ena ska starta i punkten (250, 250) och den andra i (350, 350). Paddorna ska turas om att rita var annan gång.
Jag skulle göra ungefär så här:
En klass Sköldpadda om ärver från någon lämplig grafikklass. Klassen implementerar Runnable. Konstruktorn tar nödvändig geometri som parametrar. Varje sköldpadda motsvarar ett objekt. Ungefär så.
Själv skulle jag göra en sköldpaddsklass som har koll på koordinater (coord), steglängd (stepLength), och riktning (angle).
I konstruktorn slumpas steglängd fram. Ev. kan man även låta den ta emot begränsningar på hur stort området den kan visas på är så att den inte vandrar utanför detta område.
Ta-ett-steg-metoden gör i princip bara följande:
Räkna ut på vilka koordinater man hamnar om man tar ett stepLength långt steg från punkten coord med riktningen angle.
coord := resultatet från (1)
angle := slumptal i intervallet [-180, 180]
Skölpaddorna känner således inte till sin egen grafik. Sen gör du en sköldpaddsrenderarklass som använder skölpaddans koordinater för att rita ut lämplig grafik på en lämplig yta.
Första programmet gör bara nåt i stil med:
Skapa en skölpadda
Placera skölpaddan mitt i fönstret
Upprepa 100 gånger:
Låt sköldpaddan ta ett steg
Rendera sköldpaddan
Vänta en liten stund så att det mänskliga ögat hinner uppfatta förflyttningen
Andra programmet gör något i stil med:
Skapa två sköldpaddor, a och b
Placera ut a och b på lämpliga koordinater
Så länge avstånd(a.coords, b.coords) > 50:
Om ingen sköldpadda flyttat sig, eller om den senaste som flyttade sig var b: Låt a ta ett steg
Annars (d.v.s. om vi senast flyttade a): Låt b ta ett steg
Rendera a och b
Vänta en liten stund så att det mänskliga ögat hinner uppfatta förflyttningen
Med lite list och klurande går det att generalisera så att de båda programmen använder merparten gemensam kod.
282 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e