webForumDet fria alternativet

Behöver hjälp med förståelsen av objekt samt ett exempel.

Java

4 svar · 768 visningar · startad av xtreme

Medlem sedan juli 20002 056 inlägg
Frågan#1

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.

Medlem sedan mars 20034 471 inlägg
#2

Låter som en skoluppgift... Varför frågar du inte din lärare/handledare? :(

Medlem sedan dec. 19992 085 inlägg
#3

En klass är som en mall. Du använder klassen för att skapa objekt som har i stort sett samma egenskaper.

När du väl har skapat din sköldpadds-klass kan du alltså enkelt skapa 100 sköldpaddor.

Synd att du inte kodar Logo, där hade det varit enklare ;)

Medlem sedan aug. 20039 340 inlägg
#4

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å.

Medlem sedan juni 20008 205 inlägg
#5

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:

  1. Räkna ut på vilka koordinater man hamnar om man tar ett stepLength långt steg från punkten coord med riktningen angle.
  2. coord := resultatet från (1)
  3. 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:

  1. Skapa en skölpadda
  2. Placera skölpaddan mitt i fönstret
  3. Upprepa 100 gånger:
  4. Låt sköldpaddan ta ett steg
  5. Rendera sköldpaddan
  6. Vänta en liten stund så att det mänskliga ögat hinner uppfatta förflyttningen

Andra programmet gör något i stil med:

  1. Skapa två sköldpaddor, a och b
  2. Placera ut a och b på lämpliga koordinater
  3. Så länge avstånd(a.coords, b.coords) > 50:
  4. Om ingen sköldpadda flyttat sig, eller om den senaste som flyttade sig var b: Låt a ta ett steg
  5. Annars (d.v.s. om vi senast flyttade a): Låt b ta ett steg
  6. Rendera a och b
  7. 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
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
136 ms — ändringar (db)