Gå til innhold

Anbefalte innlegg

Hei

 

Jeg leser tutorials for tiden, jeg fikk i oppgave å lage ett program..:

Klikk for å se/fjerne innholdet nedenfor

Make an OrangeTree class. It should have a height method which returns its height, and a oneYearPasses method, which, when called, ages the tree one year. Each year the tree grows taller (however much you think an orange tree should grow in a year), and after some number of years (again, your call) the tree should die. For the first few years, it should not produce fruit, but after a while it should, and I guess that older trees produce more each year than younger trees... whatever you think makes most sense. And, of course, you should be able to countTheOranges (which returns the number of oranges on the tree), and pickAnOrange (which reduces the @orangeCount by one and returns a string telling you how delicious the orange was, or else it just tells you that there are no more oranges to pick this year). Make sure that any oranges you don't pick one year fall off before the next year.

 

Da kom jeg frem til dette:

Klikk for å se/fjerne innholdet nedenfor

class OrangeTree

def initialize

@height = 1

@old = 0

@fruit = 0

 

puts 'One day a three starts to grow in you garden!'

end

 

def height

puts 'The tree is ' + @height.to_s + ' meters big.'

end

 

def oneYear

@height = @height + 1

@old = @old + 1

@fruit = 0

end

 

def gotFruit

fruits = 7

@fruit = @fruit + fruits

puts 'The tree got fruits. The tree have now ' + @fruit.to_s + ' fruits left.'

end

 

def treeDied

puts '---------------'

puts 'The tree died.'

exit

end

 

def oneYearPasses

oneYear

puts '------------------------'

puts @old.to_s + ' years have gone.'

puts 'The tree is now ' + @old.to_s + ' years old.'

case @old.to_i

when 4..5

gotFruit

when 0..3

puts 'The tree can not carry fruits yet.'

else

treeDied

end

end

 

def countTheOranges

puts 'The tree have ' + @fruit.to_s + ' fruits.'

end

 

def pickanOrange

pickanOrange = true

if pickanOrange and not @fruit < 1

@fruit = @fruit - 1

puts ''

puts 'You picked one fruit'

puts 'And the fruit was delicious.'

else

puts 'There are no fruits to pick this year'

end

end

 

def kill

puts ''

puts '---------------'

puts 'You decided to kill the tree, so you took a saw and felled it down!'

treeDied

end

end

 

tree = OrangeTree.new

tree.height

tree.oneYearPasses

tree.height

tree.pickanOrange

 

Kan jeg få respons på den koden?

Er det ting jeg burde forbedre, hva?

 

Takker for svar :thumbup:

 

EDIT: Har nå endret på den

Endret av Mr Chief
Lenke til kommentar
Videoannonse
Annonse

Nå er jeg rimelig fersk på ruby, men har lang erfaring fra programmering sånn generelt. Ser ett par ting som jeg syns er noe snodig.

 

f.eks. i pickanOrange( ) setter du først pickanOrange = true, for så å bruke dette i if-setningen. Hvorfor det?

 

Jeg ville skrevet dette om til f.eks.

def pickanOrange
 if @fruit > 0
   @fruit -= 1
   puts "\nYou picked one fruit\nAnd the fruit was delicious."
 else
   puts "There are no fruis to pick this year"
 end
end

 

gotFruit( ) er også litt snodig. Du setter først den lokale variabelen fruits til 7, for så å øke @fruit med fruits. Hvorfor ikke bare sette @fruit direkte i stede? du har jo allerede satt @fruit til 0 i oneYear( ), så @fruit = @fruit +... er jo unødvendig. Hadde fruits vært en konstant hadde det jo gitt litt mening og sette denne først for så å bruke konstanten i beregningen, men da ville jeg ha flyttet denne ut av metoden og til toppen av fila eller noe lignende.

 

Ellers vil jeg utfordre deg på å lage en noe mer reel vekstkurve. En meter i året virker noe unaturlig. Det samme med antall frukt. Forsøk å la disse to være en funksjon av alder. Bland gjerne inn noe tilfeldighet i det også. Ikke la alle trær dø når de blir syv år men øk sannsynligheten for at treet skal dø for hvert år.

 

Ruby er gøy!

 

-Vegar

Endret av Format71
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...