Wie kann ich einen Pfeil mit Javascript erstellen?
Ich benötige etwas Hilfe für eine schulische Aufgabe. Die Aufgabe ist, einen Pfeil in Javascript zu erstellen, bei welchem der Benutzer aussuchen kann, welches Zeichen der Rand und welches die Füllung ist und wie viele Zeilen der Pfeil hat. Wenn der Benutzer z.B. eingibt, dass der Pfeil 5 Zeilen haben soll, dass das Zeichen für die Füllung + istund das Zeichen für den Rand # ist, dann würde der Pfeil in etwa so aussehen:
#
##
#+#
#++#
#+++#
natürlich soll der benutzer auch eine sehr hohe reihenzahl aussuchen können, so wie andere Zeichen.
natürlich brauche ich nicht den ganzen code... Die Abfrage und die checks kann ich selbst machen... Ich brauche nur hilfe bei der Erstellung des pfeils. Für die erstellung des pfeils soll die folgende function verwendet werden:
function createRow (border, fill, rowNumber) {
// create one row as a STRING of border and fill for the arrow
// return this string!
)
ich habe schon längere zeit Überlegt, wie man mit verschiedenen Schleifen alle reihen generieren kann, bin aber noch nicht darauf gekommen. ich habe z.B. versucht, mit einer for-schleife so viele Zeilen zu generieren, das hat aber nicht geklappt... wenn mir also jemand sagen könnte, wie man den Pfeil mit dem vom Nutzer via prompt eingegebenen daten generieren kann, wäre ich sehr dankbar.
1 Antwort
Jede Zeile besteht aus
- 1 * Border
- (Zeilennummer - 2) * Fill (bzw. -1 wenn man bei 0 zu zählen beginnt)
- 1 * Border (außer in der ersten Zeile, da gibt es nur eine Border)
Genau so kannst du es auch umsetzen.
Pseudocode:
für i von 0 bis zeilen:
print border
print (i-1) * fill
if i > 0:
print border
Um einen String, in dem Fall fill, x mal zu wiederholen, kannst du folgende Funktion verwenden:
fill.repeat(x)
Wobei darauf zu achten ist, dass darin keine negativen Zahlen verwendet werden dürfen.
Da die Funktion "createRow" heißt soll darin wohl nur eine einzige Reihe erstellt werden. Die Funktion wird dann wohl in einer Schleife aufgerufen. Die Schleife vom Pseudocode brauchst du also garnicht, sondern nur das was drinnensteht, das kommt in die Funktion.
Spoiler, versuch es bitte zuerst selbst:
Meine Lösung wäre folgende:
function createRow(border, fill, rowNumber) {
return border + fill.repeat(Math.max(0, rowNumber-1)) + (rowNumber > 0 ? border : "");
}