I give you BigBang (class) and World (interface).

You need to write a Game. Start with this:

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Game implements World { 

  public Game() {

  }

  // define your methods here 

  public static void main(String[] args) {
    BigBang b = new BigBang(new Game()); 
    b.start( 50, // delay 
            400  // size 
           ); 
  }

}


Here's my first game: 

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Game implements World { 

  public Game() {

  }

  // define your methods here 

  public static void main(String[] args) {
    BigBang b = new BigBang(new Game()); 
    b.start( 50, // delay 
            400  // size 
           ); 
  }
  
  public void draw(Graphics g) { } 
  public void teh() { }
  public void meh(MouseEvent e) { } 
  public void keh(KeyEvent e) { }   
  public boolean hasEnded() { return false; } 
  public void sayBye() { }
  
}

Here's a slightly more complex game:

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Game implements World { 
  public Game() {

  }
  public static void main(String[] args) {
    BigBang b = new BigBang(new Game()); 
    b.start( 50, // delay 
            400  // size 
           ); 
  }
  public void draw(Graphics g) { } 
  int count = 0; 
  public void teh() { 
    this.count += 1;
    System.out.println( "Hi: " + this.count); 
  }
  public void meh(MouseEvent e) { } 
  public void keh(KeyEvent e) { }   
  public boolean hasEnded() { return false; } 
  public void sayBye() { }  
}

What should I do for my world to have circles (position, radius)
that grow in diameter by 2 pixels every tick and such that a circle
is added every time I click with the mouse somewhere at that position
(the new circle has radius 1 always)?

Here's a possible answer:

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Game implements World { 
  ArrayList<Circle> circles; 
  public Game() {
    this.circles = new ArrayList<Circle>(); 
    this.circles.add( new Circle(  30,  20, 10 ) ) ;
    this.circles.add( new Circle( 230, 320, 30 ) ) ;
    this.circles.add( new Circle( 130, 120, 50 ) ) ;
  }
  public static void main(String[] args) {
    BigBang b = new BigBang(new Game()); 
    b.start( 50, // delay 
            400  // size 
           ); 
  }
  public void draw(Graphics g) { 
    for (Circle c : this.circles) 
      c.draw( g );
  } 
  int count = 0; 
  public void teh() { 
    for (Circle c : this.circles)
      c.r += 2;
    // this.count += 1;
    // System.out.println( "Hi: " + this.count); 
  }
  public void meh(MouseEvent e) { 
    this.circles.add( new Circle( e.getX(), e.getY(), 1 ) ); 
  } 
  public void keh(KeyEvent e) { }   
  public boolean hasEnded() { return false; } 
  public void sayBye() { }  
}

--