Video: Ruby On Rails, by Gabriel Guimaraes 2024
U kunt een methode maken om een driehoek in Ruby te tekenen. Denk eerst na over hoe dit zou kunnen werken. De driehoek die u tekent, ziet er uit als een gelijkbenige driehoek, waarbij twee zijden dezelfde grootte hebben en de basis iets kleiner zal lijken.
Anders dan in de rechthoek, waarbij elke rij gemakkelijk te formatteren is, moet je voor de driehoek elke rij er anders uit laten zien. De eerste rij wordt de bovenkant van de driehoek (het puntige uiteinde). De laatste rij is de basis van de driehoek en heeft de breedte die de gebruiker opgeeft.
Kijk of je kunt achterhalen wat de code hier doet.
-
Start een nieuwe methode met de naam triangle:
# Hierboven ziet u het einde van de rechthoek-methode def triangle (height, outside_letter, inside_letter) # Code voor de driehoek komt hier end
Merk op dat u zult zijn met behulp van de hoogtevariabele voor zowel de hoogte als de breedte binnenin deze methode.
-
Maak een lus die lengtetijden herhaalt. Zet deze code in de driehoeksmethode:
1. tot (hoogte) do | rij | # Tekeningcode gaat hier in de volgende stap einde
-
Voor een driehoek moet u witruimte (lege gebieden) tekenen voor elke rij die niet de volledige breedte beslaat die u tekent. Terwijl u elke rij tekent, tekent u minder witruimte. Voeg deze regel toe als de eerste regel van je lus:
print "* (hoogte - rij)
De wiskunde berekent hier een kleiner aantal spaties naarmate het nummer van de rij groter wordt (onthoud dat je aan het tellen bent) rij 1 bovenaan, en rij is gelijk aan de hoogte onderaan).
-
Vervolgens moet je de hoes behandelen voor de eerste rij, die de bovenkant is van de triangle:
als row == 1 zet "# {outside_letter * 2}" end
De code van stap 4 gaat direct na stap 3.
-
Behandel de laatste rij case vervolgens door een elsif-voorwaarde toe te voegen.
als rij == 1 zet "# {buiten_brief * 2}" elsif rij == hoogte zet buiten_brief * hoogte * 2 einde
-
Voeg nu de code toe voor het iets gecompliceerdere geval van het afhandelen van alle middelste rijen. van de voorwaarde, gebruik je een else-clausule. Zie de volledige voorwaarde hier:
als rij == 1 zet "# {outside_letter * 2}" elsif row == height puts outside_letter * height * 2 else middle = inside_letter * (rij - 2) print "# {outside_letter} # {middle} # {ins ide_letter} "puts" # {inside_letter} # {middle} # {outside_letter} "end
De code ziet er een beetje vreemd uit. Waarom is er zowel een print als een puts-statement?
-
Het is tijd om de driehoek weer te geven. Helemaal onderaan het codebestand, onder de rechthoekmethode aanroepen, voegt u een driehoeksmethode toe:
driehoek (height, outside_letter, inside_letter)
-
Sla uw programmabestand op, schakel over naar uw terminal en voer het programma uit.U zou zoiets moeten zien:
De gebruikte voorbeeldcode bevat een rechthoekmethode voorafgaand aan de driehoeksmethode, dus u ziet een rechthoek in evenwicht op een driehoek.