// This program was written by LFW to serve as a mystery program // for ES 20/CS 14. // Modified by Scot Drysdale and Tom Cormen to use for CS 5. // Later modified by Scot Drysdale for CS 10. (We like to re-use code!) // // Since this is designed to be a mystery program, it has no // constructive comments. Notice that it is very hard to read! // Do not use this as an example of a "good program"!!!! import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Scanner; public class Mystery extends JFrame implements WindowListener { private static final long serialVersionUID = 1L; public static final int WIDTH = 450; public static final int HEIGHT = 350; public static final int OVALWIDTH = 120; public static final int OVALHEIGHT = 60; public static final int HALFOVALWIDTH = OVALWIDTH / 2; public static final int HALFOVALHEIGHT = OVALHEIGHT / 2; public static final int RGBMAX = 255; public static void main(String[] args) { String name; System.out.print("Please enter your name followed by enter or return: "); Scanner input = new Scanner(System.in); name = input.nextLine(); Mystery myWindow = new Mystery(name); myWindow.setVisible(true); } public Mystery(String name) { addWindowListener(this); setTitle("Close this window to exit, " + name); setSize(WIDTH, HEIGHT); setBackground(Color.black); } public void paint(Graphics g) { final int XMOD1 = 17; final int YMOD1 = 28; final int XMOD2 = 40; final int YMOD2 = 45; int baseX, baseY; int baseR, baseG, baseB; Font newFont = new Font("Helvetica", 1, 15); g.setFont(newFont); for (int i = 0; i < 500; i++) { baseX = (int) (Math.random() * WIDTH) - HALFOVALWIDTH; baseY = (int) (Math.random() * HEIGHT) - HALFOVALHEIGHT; baseR = (int) (Math.random() * RGBMAX); baseG = (int) (Math.random() * RGBMAX); baseB = (int) (Math.random() * RGBMAX); g.setColor(new Color(baseR, baseG, baseB)); g.fillOval(baseX, baseY, OVALWIDTH, OVALHEIGHT); g.setColor(new Color(RGBMAX - baseR, RGBMAX - baseG, RGBMAX - baseB)); g.drawString("Welcome to", baseX + XMOD1, baseY + YMOD1); g.drawString("CS 10", baseX + XMOD2, baseY + YMOD2); } g.setColor(Color.red); baseX = WIDTH / 2 - HALFOVALWIDTH; baseY = HEIGHT / 2 - HALFOVALHEIGHT; g.fillOval(baseX, baseY, OVALWIDTH, OVALHEIGHT); g.setColor(Color.white); g.drawString("Welcome to", baseX + XMOD1, baseY + YMOD1); g.drawString("CS 10", baseX + XMOD2, baseY + YMOD2); } public void windowOpened(WindowEvent e) { } public void windowClosing(WindowEvent e) { this.dispose(); System.exit(0); } public void windowClosed(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowActivated(WindowEvent e) { repaint(); } public void windowDeactivated(WindowEvent e) { } }