javaÖеÄ̰ʳÉßÀý³Ì
	
    
    
	×î½üÒªÖØÐÂѧϰJava£¬ÕÒ¸öÀý×ÓÀ´Êµ¼ù£¬ÔÚÍøÉÏÕÒÁ˺ܶàÀý³ÌÀ´¿´£¬×Ô¼ºÖØÐ±àдÁËÒ»¸ö̰ʳÉßµÄÀý×Ó£¬¼ÇÔÚÕâÀï¡£
1.SnakeModel.java
import java.util.Observable;
import java.util.LinkedList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.*; 
//ObservableÀàÒ»°ã´ú±íÊý¾Ý£¬ÊµÏÖ½Ó¿ÚRunnable±íÃ÷´´½¨Ò»¸ö½ø³Ì
public class SnakeModel extends Observable implements Runnable {
	
	boolean[][] matrix;	//ָʾλÖÃÉÏÊÇ·ñÓÐÉßÌå»òʳÎ
	LinkedList nodeArray = new LinkedList(); //ÉßÌå
	 
	Node food;
	int maxX;	//XÖá±ßÏߣ¬¼´Îª»²¼ÖÐXÖá¸öÊý
	int maxY;	//yÖá±ßÏߣ¬¼´Îª»²¼ÖÐYÖá¸öÊý
	int direction = UP; //ÉßÔËÐеķ½Ïò,³õʼΪÏòÉÏ£¨UP£©
	boolean isRunning = false; //ÔËÐÐ״̬
	
	int timeInterval = 200; //ʱ¼ä¼ä¸ô£¬ºÁÃë¼¶
	double speedChangeRate = 0.75; //ÿ´ÎµÄËٶȱ仯ÂÊ
	boolean isPaused = false ;//ÔÝÍ£±êÖ¾
	
	int score = 0; //µÃ·Ö
	int countMove = 0; //³Ôµ½Ê³ÎïÇ°ÒÆ¶¯µÄ´ÎÊý
	
	public static final int UP = 2;
	public static final int DOWN =4;
	public static final int LEFT= 1;
	public static final int RIGHT =3;
	
	public SnakeModel(int maxX, int maxY){
		
		this.maxX = maxX;
		this.maxY = maxY;		
		reset();
	}
		
	public void reset(){
		
		direction = SnakeModel.UP;	
		timeInterval = 200;
		isPaused = false;
		score = 0;
		countMove = 0;
		
		//³õʼ»¯¾ØÕó
		matrix = new boolean[maxX][];
		for(int i = 0; i < maxX; ++i){
			//¹ØÓÚÊý×éµÄн¨
			matrix[i] = new boolean[maxY];
			Arrays.fill(matrix[i],false);	
		}
		
		//³õʼ»¯ÉßÌå
		//³õʼÉßÌ峤¶È°´ÕÕºáÖáµÄ³¤¶È£¬ÈôºáÖá>20,ÔòÉßÌ峤¶ÈΪ10£¬·ñÔòΪºáÖáÒ»°ë
		int initArrayLength = maxX > 20 ? 10 : maxX / 2;
		nodeArray.clear();
		for(int i = 0; i < initArrayLength; ++i){
			int x = maxX / 2;
			int y = maxY / 2;
			nodeArray.addLast(new Node(x, y));
			matrix[x][y] = true;
		}
		
		//´´½¨Ê³Îï
		food = createFood();
		matrix[food.x][food.y] = true;			
	}
	
	public void changeDirection(int newDirection){
		//¸Ä±ä·½Ïò²»ÄÜÓëÔ·½ÏòͬÏò»ò·´Ïò
		if((direction & 1
    
     
	
	
    
    
	Ïà¹ØÎĵµ£º
        
    
    Á½¸ötomcat Java¶¨Ê±ÈÎÎñµÄÀý×Ó
ÀýÒ»£º
±¾ÀýÒÀ¾ÝJava×ÔÉíÌṩµÄ½Ó¿ÚʵÏÖ£¬Í¨¹ý¼àÌýÆ÷£¨Listener£©ºÍ¶¨Ê±Æ÷£¨Timer£©¶¨Ê±Ö´ÐÐij¸öÈÎÎñ£¨Task£©¡£
רҵµÄ¿ªÔ´¹¤¾ß¿É²Î¿¼Quartz£ºhttp://www.opensymphony.com/quartz/
MyListener£º
import
 java.util.Timer;
import
 javax.servlet.ServletContextEvent;
i ......
	
    
        
    
    javaÏ̳߳صÄÔÀíÓëʵÏÖ
                
  
  
[·ÖÏí]Java Ï̳߳صÄÔÀíÓëʵÏÖ2008-07-18
14:53------------------------------------------------------------------------------------------------
Õ⼸ÌìÖ÷ÒªÊÇ¿ñ¿´Ô´³ÌÐò£¬ÔÚÃÖ²¹ÁËһЩÒÔǰ֪ʶ¿Õ°×µÄͬʱ£¬Ò²Ñ§»áÁ˲»ÉÙеÄ֪ʶ£¨±ÈÈç NIO£©£¬»òÕß³ÆÎªÐ¼¼Êõ°É ......
	
    
        
    
    
ÓÐÁ½ÖÖ·½·¨£º
·½·¨Ò»£ºÓÃjava.util.DateÀàÀ´ÊµÏÖ£¬²¢½áºÏjava.text.DateFormatÀàÀ´ÊµÏÖʱ¼äµÄ¸ñʽ»¯£¬¿´ÏÂÃæ´úÂ룺
import java.util.*; 
import java.text.*;
//ÒÔÏÂĬÈÏʱ¼äÈÕÆÚÏÔʾ·½Ê½¶¼ÊǺºÓïÓïÑÔ·½Ê½
//Ò»°ãÓïÑÔ¾ÍĬÈϺºÓï¾Í¿ÉÒÔÁË£¬Ê±¼äÈÕÆÚµÄ¸ñʽĬÈÏΪMEDIUM·ç¸ñ£¬±ÈÈ磺2008-6-16 20:54:53
//ÒÔÏÂÏÔʾµÄÈ ......
	
    
        
    
    ClassLoaderÒ»¸ö¾³£³öÏÖÓÖÈúܶàÈËÍû¶øÈ´²½µÄ´Ê£¬±¾ÎĽ«ÊÔͼÒÔ×îdzÏÔÒ×¶®µÄ·½Ê½À´½²½â ClassLoader£¬Ï£ÍûÄܶԲ»Á˽â¸Ã»úÖÆµÄÅóÓÑÆðµ½Ò»µãµã×÷Óᣠ
ÒªÉîÈëÁ˽âClassLoader£¬Ê×ÏȾÍÒªÖªµÀClassLoaderÊÇÓÃÀ´¸ÉʲôµÄ£¬¹ËÃû˼Ò壬Ëü¾ÍÊÇÓÃÀ´¼ÓÔØClassÎļþµ½JVM£¬ÒÔ¹©³ÌÐòʹÓõġ£ÎÒÃÇÖªµÀ£¬java³ÌÐò¿ÉÒÔ¶¯Ì¬¼ÓÔØÀඨÒ壬¶øÕâ ......
	
    
        
    
    Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
  
knows its observers. Any number of Observer objects may observe a subject.
  
provides an in ......