diff --git a/commands/drawTriangle.ts b/commands/drawTriangle.ts index 652d090..2409aaf 100644 --- a/commands/drawTriangle.ts +++ b/commands/drawTriangle.ts @@ -6,7 +6,7 @@ module.exports = { .setDescription('Draws a design in a codeblock') .addStringOption(option => option.setName('design') - .setDescription("Pick a design. (number 1-3)") + .setDescription("Pick a design. (number 1-4)") .setRequired(true) ) .addStringOption(option => @@ -17,7 +17,7 @@ module.exports = { async execute(interaction, client) { var inputString = interaction.options.getString('string'); var design = parseInt(interaction.options.getString('design')); - if (design < 1 || design > 3) { + if (design < 1 || design > 4) { await interaction.reply('Invalid design choice.'); return; } @@ -32,7 +32,8 @@ module.exports = { case 3: output = design3(inputString); break; - + case 4: + output = design4(inputString); } console.log(codeBlock("", output)); var testLength = "\n" + 'output length was ' + (output.length) + " characters."; @@ -125,4 +126,52 @@ function design3(input) { outputString += "\n"; } return outputString; +} + +function design4(input) { + var outputString = ""; + var radius = input.length +1; + var mid = radius; + if (mid % 2 == 1) { + var spaceOffset = " "; + } else { + var spaceOffset = ""; + } + + // dist represents distance to the center + var dist = parseFloat(0); + var space = "" + for (let i = 0; i < (input.length / 2); ++i) { + space += " "; + } + // for horizontal movement + for (var i = 0; i <= 2 * radius; i++) { + if (i != mid && j != 0) { + // for vertical movement + for (var j = 0; j <= 2 * radius; j++) { + + dist = Math.sqrt( + (i - radius) * (i - radius) + + (j - radius) * (j - radius) + ); + + // dist should be in the range (radius - 0.5) + // and (radius + 0.5) to print stars(*) + + + if (dist > radius - 0.5 && dist < radius + 0.5) { + outputString += "*"; + } else { + outputString += " "; + } + + } + } else { + outputString += "*" + space + input + space + spaceOffset + "*"; + } + + + outputString += "\n"; + } + return outputString; } \ No newline at end of file