How to Create a Night Sky Animation with Stars and a Moon In Java Netbeans
In this Java Tutorial we will see How To Create a simple animated scene with stars moving across a dark night sky and a moon shining brightly.
The animation gives the impression of a serene night with stars twinkling and a calm moon in the background.
What We Are Gonna Use In This Project:
- Java Programming Language.- NetBeans Editor.
Project Source Code:
package new_tutorials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
*
* @author 1BestCsharp
*/
public class DarkNightSky extends JPanel{
private static final int FRAME_WIDTH = 800;
private static final int FRAME_HEIGHT = 600;
private static final int NUM_STARS = 100;
private static final int STAR_SIZE = 5;
private static final int ANIMATION_DELAY = 50;
private final List<Point> stars; // List to store the positions of stars
private final Moon moon;
public DarkNightSky()
{
stars = new ArrayList<>(); // Initialize the list of stars
generateStars();
moon = new Moon();
Timer timer = new Timer(ANIMATION_DELAY, (e) -> {
moveStars();
repaint();
});
timer.start();
}
// Generate random star positions within the panel bounds
private void generateStars(){
Random rand = new Random();
for(int i = 0; i < NUM_STARS; i++){
int x = rand.nextInt(FRAME_WIDTH);
int y = rand.nextInt(FRAME_HEIGHT);
stars.add(new Point(x, y));
}
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.BLACK);
// Fill the panel with a black background
g.fillRect(0, 0, FRAME_WIDTH, FRAME_HEIGHT);
g.setColor(Color.WHITE);
// Draw stars as rectangles
for(Point star : stars){
g.fillRect(star.x, star.y, STAR_SIZE, STAR_SIZE);
}
// Draw the moon using the Moon class
moon.draw(g);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Dark Night Sky");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.add(new DarkNightSky());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
// Move stars in the animation, wrap around when reaching panel bounds
private void moveStars(){
for(Point star : stars){
star.translate(1, 1);
if(star.x > FRAME_WIDTH)
{
star.x = 0;
}
if(star.y > FRAME_HEIGHT)
{
star.y = 0;
}
}
}
}
// Moon class to draw a white circle representing the moon
class Moon{
private static final int MOON_RADIUS = 100;
private static final int MOON_X = 600;
private static final int MOON_Y = 100;
// Draw the moon
public void draw(Graphics g){
g.setColor(Color.WHITE);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillOval(MOON_X, MOON_Y, MOON_RADIUS, MOON_RADIUS);
}
}
The Final Result:
More Java Projects:
Download Projects Source Code