eigan Skrevet 1. februar 2007 Skrevet 1. februar 2007 (endret) 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 EDIT: Har nå endret på den Endret 1. februar 2007 av Mr Chief
Format71 Skrevet 8. februar 2007 Skrevet 8. februar 2007 (endret) 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 8. februar 2007 av Format71
eigan Skrevet 8. februar 2007 Forfatter Skrevet 8. februar 2007 Takk for tilbakemeldign.. Ny versjon her: http://pastie.caboo.se/38832
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå