Buenas compañero,
No es tan difícil... En el trabajo del día a día te puedes llegar a encontrar cosas más complicadas que éste patrón.
Desconozco absolutamente los patrones de desarrollo, pero es algo de lógica, que si tienes una caja de 7x7, vas a necesitar 2 for que vayan desde el 1 hasta el 7, ambos inclusive...
A partir de ahí, deberás calcular CUANDO se pintan los asteriscos... Y cuando NO, pues se pinta un punto.
Además, me da la sensación que has copiado mal el código, porque tienes 2 funciones main.
Te dejo la solución en VB.Net (y en Windows Form) que es con lo que suelo trabajar y lo que me es más cómodo para mi.. Aún así, te recomiendo, que lo intentes pensando en el problema, como si fuese un array de 7x7.
Un saludo y que tengas buen fin de semana..!
Código vb:
Ver originalPublic Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
printar()
End Sub
Private Sub btnRellenar_Click(sender As Object, e As EventArgs) Handles btnRellenar.Click
printar()
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
txtPizarra.Clear()
End Sub
Private Sub printar()
txtPizarra.Clear()
For i As Integer = 1 To 7 Step 1
For j As Integer = 1 To 7 Step 1
If (j <= 7 - (i - 1) OrElse j >= i) AndAlso (j <= i OrElse j > (7 - i)) Then
txtPizarra.Text &= " * "
Else
txtPizarra.Text &= " # "
End If
Next
If i < 7 Then txtPizarra.Text &= vbNewLine
Next
End Sub
End Class