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.

 Microsoft RIA Development Center
 IBM Rational Resource Center
 Destination .NET
XML error: not well-formed (invalid token) at line 33
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%.

Free VMware Server 2.0 Now Release Candidate
Linux Player Xandros Grabs Storied Rival Linspire
Hey Enterprise: Here Comes the 3G iPhone
MySpace Opens Profile Portability API
Microsoft Jumps Into Virtualization Fray
Eclipse Ganymede Makes It Easier for Devs
Open Source Nokia a Threat to Microsoft, Google?
Salesforce, Google Head for 2nd on Apps
HP Open Sources Unix File System for Linux
Red Hat Opens Its Network to Space

Build a Generic Histogram Generator for SQL Server
Beyond XML and JSON: YAML for Java Developers
Mastering the Windows Mobile Emulators
Avaya AE Services Provide Rapid Telephony Integration with Facebook
Featured Algorithm: Intel Threading Building Blocks: parallel_reduce
Getting Started with Windows Live Admin Center
Eight Key Practices for ASP.NET Deployment
Java ME User Interfaces: Do It with LWUIT!
Talking VPro: Transcript
Bringing Semantic Technology to the Enterprise

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
IBM eBook: Planning a Service Oriented Architecture
IBM eBook: Choosing the Right Architecture--What It Means for You and Your Business
Microsoft Article: Will Hyper-V Make VMware This Decade's Netscape?
Avaya Article: Using Intelligent Presence to Create Smarter Business Applications
Intel Go Parallel Article: Getting Started with TBB on Windows
Microsoft Article: 7.0, Microsoft's Lucky Version?
Avaya Article: How to Feed Data into the Avaya Event Processor
IBM Article: Developing a Software Policy for Your Organization
Microsoft Article: Managing Virtual Machines with Microsoft System Center
Intel Go Parallel Article: Intel Threading Tools and OpenMP
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
HP Video: StorageWorks EVA4400 and Oracle
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
Red Gate Download: SQL Toolbelt and free High-Performance SQL Code eBook
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
Silverlight 2 App and Walkthrough: Leverage Silverlight 2 with SQL Server and XML
IBM Article: Enterprise Search--Do You Know What's Out There?
HP Demo: StorageWorks EVA4400
Microsoft Article: The Progress and Promise of Deep Zoom
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES