Program rysujący choinkę - potrzebuję pomocy

0

Witam serdecznie,
Potrzebuję pomocy przy jednym kodzie:

package choinka;


import java.util.Scanner; //biblioteka potrzebna do wywołania polecenia Scanner in
public class Choinka {

  
    
 public static void main (String[] args) //główna metoda, tutaj dzieje sie wszystko
 {
     Scanner in = new Scanner(System.in); //tworzenie nowego Scanner'a System.in
     Scanner znak = new Scanner(System.in);
       System.out.println("Podaj wysokość.");
       int h = in.nextInt(); //przypisanie zadeklarowanej zmiennej wartości z klawiatury (wysokość jednej kolumny)
       System.out.println("Podaj ilość poziomów.");
       int p = in.nextInt(); // -||- (ilość poziomów choinki)
       System.out.println("Podaj znak tworzenia choinki.");
       String x;
       x = znak.next();
       
       for (int i=0; i<p; i++) // pętla odpowiadająca za wykonywanie metody trojkat, ile razy
       {
  trojkat (h); //wywolanie metody trojkat w petli for, h odpowiada za ilość wykonań
       }
       int z = (h*p)/2; //deklaracja zmiennej odpowiadającej za wysokość pnia choinki
       for (int i=0; i<z; i++) // pętla for odpowiadająca za wypisanie pnia
       {
           int odstep = 0; //zmienna potrzebna do ustawienia pnia w odpowienim miejscu
           while (odstep<h-1) { // petla która bedzie wykonywała swoje działanie dopóki nie osiągnie wartości wpisane do h
            System.out.print(' '); //odstęp wypisywany od lewej strony - tworzenie pnia 
            odstep++; //inkrementacja 
           }
            System.out.println('*'); //tworzenie pnia 
       }
 }
 public static void patent (int n, char ch) //metoda z petla z podstawa tworzenia jednego segmentu choinki
 {
  for (int i=0; i<n; i++)
      System.out.print(ch);
  c
  
 }
 public static void trojkat (int m) //metoda z głównym mechanizmem tworzenia jednego segmentu choinki
 {
     
     for (int i=0; i<m; i++) //pętla powtarzająca mechanizm 
   {
     
    patent(m-i-1,' '); //mechanizm odpowiadający za wpisywanie odstępów od lewej strony
    patent(2*i+1,'*'); // -||- znaków od lewej strony  
    
    /*while (i<m)
    {
        char f = '*'; 
        System.out.print(f);
    }
    */
    
     System.out.println(); //przejście do następnego wiersza 
     
     
   }
     
  }
}

Przykładowa kompilacja:

  *
 ***
*****
  *
 ***
*****
  *
 ***
*****
  *
  *
  *
  *
(równe)

Chciałbym dodać do tego kodu mechanizm, który pozwalałby na dodawanie do każdego kolejnego segmentu choinki dodatkowych dwóch gwiazdek początkowych. Wzór:

user image

Z góry dziękuje za pomoc :)
Pozdrawiam.

0

Ja bym to zrobił w ten sposób :-)
Pomysł na algorytm masz, wystarczy, że pozmieniasz to pod siebie

package com.practice;

public class App {
	public static void main(String[] args) {
		triangle(5, 10);
	}
	public static void triangle(int height, int depth) {
		int width = 1;
		int level = 1;
		char ch = '*';
		int temp = depth + height;
		while (depth != 0) {
			for (int i = 0; i < height; ++i) {
				for (int j = 0; j < temp; ++j) {
					System.out.print(" ");
				}
				--temp;
				for (int k = 0; k < width; ++k) {
					System.out.print(ch);
				}
				System.out.println();
				width += 2;
			}
			temp += height - 1;
			level += 2;
			width = level;
			--depth;
		}
	}
}
0

Ty musisz rysować trapezy, a nie trójkąty, Wczytanie danych i rysowanie pnia to chyba umiesz.

import java.util.Arrays;
public class Trapezy
{
    public static void main(String[] args)
    {
        trapez('*',4,1,5);
        trapez('*',4,3,4);
        trapez('*',4,5,3);
    }
    private static void trapez(char znak, int height, int width, int margines) //margines, to ilość "pustki" w pierwszym wierszu
    {
        char[] prefix = new char[margines];
        Arrays.fill(prefix,' ');
        char[] line = new char[width];
        Arrays.fill(line,znak);
        String wiersz = new String(line);
        for(int i=0;i<height;i++)
        {
            System.out.println(new String(prefix,0,margines-i) + wiersz);
            wiersz = wiersz + znak + znak;
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1