advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

AllLights



/*
 *               オールライツ (All Lights)
 *
 * Copyright (c) 1996 Yasunari Hiramatsu. All Rights Reserved.
 *
 * 作者:平松 康成 (ヒラマツ ヤスナリ) yasu@catnet.or.jp
 *
 */

import java.applet.*;
import java.lang.*;
import java.awt.*;
import java.net.*;

public class AllLights extends Applet {

     final int ON  =  1;
     final int OFF = -1;
     final int WIDTH = 200;
     protected int light[][];
     protected int counterOn  = 0;
     protected int counterOff = 0;
     int end = 0;

     public void init() {
          end = 0;
          light = new int[5][5];
          for (int i = 0; i < 5; i++) {
               for (int j = 0; j < 5; j++) {
                    light[i][j] = OFF;
               }
          }
          countLight();
     }

     public void start() {
          setBackground(Color.white);
          init();
     }

     public void paint(Graphics g) {
          g.setColor(Color.blue);
          g.fill3DRect(210, 165, 60, 20, true);
          g.setColor(Color.red);
          g.drawString("RESTART", 214, 180);
          drawBoard(g);
          for (int i = 0; i < 5; i++) {
               for (int j = 0; j < 5; j++) {
                    if (light[i][j]  != 0) {
                         drawLight(i, j, g);
                    }
               }
          }
          drawCountLight(g);
     }

     public void drawBoard(Graphics g) {
          g.setColor(Color.black);
          g.drawLine(0,0, 0,WIDTH);
          g.drawLine(WIDTH,0, WIDTH,WIDTH);
          g.drawLine(0,0, WIDTH,0);
          g.drawLine(0,WIDTH, WIDTH,WIDTH);
          for (int i = 1; i < 5; i++) {
               g.drawLine(WIDTH*i/5,0, WIDTH*i/5,WIDTH);
               g.drawLine(0,WIDTH*i/5, WIDTH,WIDTH*i/5);
          }
     }

     public void drawLight(int column, int row, Graphics g) {
          if (light[column][row] == ON) {
               g.setColor(Color.yellow);
          } else if (light[column][row] == OFF) {
               g.setColor(Color.gray);
          }
          g.fillRect(column * WIDTH / 5 + 2, row * WIDTH / 5 + 2,
                     WIDTH / 5 - 3, WIDTH / 5 - 3);
     }

     void countLight() {
          counterOn = 0;
          counterOff = 0;
          for (int i = 0; i < 5; i++) {
               for (int j = 0; j < 5; j++) {
                    if(light[i][j] == ON) counterOn++;
                    if(light[i][j] == OFF) counterOff++;
               }
          }
          if (counterOn == 25) {
               endGame(getGraphics());
          }
     }

     public void endGame(Graphics g) {
          update(getGraphics());
          for (int i = 0; i < 5; i++) {
               for (int j = 0; j < 5; j++) {
                    light[i][j] = OFF;
                    update(getGraphics());
               }
          }
          for (int i = 0; i < 5; i++) {
               for (int j = 0; j < 5; j++) {
                    light[i][j] = ON;
                    update(getGraphics());
               }
          }
          g.setColor(Color.yellow);
          g.fillRect(65, 98, 80, 10);
          g.setColor(Color.black);
          g.drawString("Congratulations!!", 66, 106);
          g.setColor(Color.red);
          g.drawString("Congratulations!!", 65, 105);
          end = 1;
     }

     void drawCountLight(Graphics g) {
          g.setColor(Color.white);
          g.fill3DRect(WIDTH+15, 50, 30,20, false);
          g.fill3DRect(WIDTH+15, 110, 30,20, false);
          g.setColor(Color.gray);
          g.fill3DRect(WIDTH+5, 85, 20,20, true);
          g.setColor(Color.yellow);
          g.fill3DRect(WIDTH+5, 20, 20,20, true);
          g.setColor(Color.black);
          g.drawString("LightOn", WIDTH+30, 35);
          g.drawString("LightOff", WIDTH+30, 100);
          g.drawString(Integer.toString(counterOn), WIDTH+20, 65);
          g.drawString(Integer.toString(counterOff), WIDTH+20, 125);
     }

     public boolean mouseUp(Event event, int x, int y) {
          if (end == 1) {
               init();
               update(getGraphics());
          } else {
               if (x > 210 && x < 270 && y > 165 && y < 185) {
                    init();
                    update(getGraphics());
               }
               int column = (int)(x / (WIDTH / 5));
               int row    = (int)(y / (WIDTH / 5));
               light[column][row] = -light[column][row];
               try {
                    light[column+1][row] = -light[column+1][row];
               } catch(Exception e) {
               }
               try {
                    light[column-1][row] = -light[column-1][row];
               } catch(Exception e) {
               }
               try {
                    light[column][row+1] = -light[column][row+1];
               } catch(Exception e) {
               }
               try {
                    light[column][row-1] = -light[column][row-1];
               } catch(Exception e) {
               }
               countLight();
               if (end == 0) {
                    update(getGraphics());
               }
          }
          return true;
     }
}


How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 DevX Skillbuilding from IBM developerWorks
 RIA Run Contest: Build Next-Gen Apps in Microsoft Silverlight 2
 Avaya DevConnect Center
 Intel Go Parallel Portal
 Internet.com eBook Library
 Microsoft RIA Development Center
 Destination .NET
XML error: not well-formed (invalid token) at line 53
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

SaaS Tool Offers Custom Database Development
Microsoft’s Automated Agent: Can We Talk?
Borland Finally Sells CodeGear
Red Hat Heads For The JON 2.0
Out with the Old, in with the New at JavaOne
Trolltech Expands WebKit Footprint
Oracle: Eating its Own Open Source Food
Big Money and Open Source May Not Compute
Open Source Embrace Gives Sun New Fans
NetBeans, OpenSolaris Also in Spotlight at JavaOne

Taming Trees: Building Branching Structures
Clean Up Function Syntax Mess with decltype
Sutter Speaks: The Future of Concurrency
INTEL SCAVENGER HUNT, LENOVO X300 AND APPLE IPOD TOUCH GIVEAWAY (the "Giveaway")
Comparing Multi-Core Processors for Server Virtualization
Intelョ Desktop Business Computing Solutions
Intel: What Downturn?
Managing the Evolving Data Center
Implement Drag and Drop in Your Windows Forms Applications
Processing Linked Web Data with XSLT

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Microsoft Article: HyperV-The Killer Feature in WinServer 08
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Win Server 08
HP eBook: Putting the Green into IT
Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
Avaya Article: Setting Up a SIP A/S Development Environment
IBM Article: How Cool Is Your Data Center?
Microsoft Article: Managing Virtual Machines with Microsoft System Center
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Video: Are Multi-core Processors Here to Stay?
On-Demand Webcast: Five Virtualization Trends to Watch
HP Video: Page Cost Calculator
Intel Video: APIs for Parallel Programming
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Sun Download: Solaris 8 Migration Assistant
Sybase Download: SQL Anywhere Developer Edition
Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
Red Gate Download: SQL Compare Pro 6
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
IBM Article: Collaborating in the High-Performance Workplace
HP Demo: StorageWorks EVA4400
Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES