JAVA之Eclipse实现自动扩散小动画

在这里插入图片描述
在这里插入图片描述

import java.awt.*;
import acm.graphics.*;
import acm.program.*;

public class Beeperline extends  GraphicsProgram {
    
     //扩散动画
	private final int Weigh = 50;
	int [][] a=new int[Weigh][Weigh], b  = new int[Weigh][Weigh];
	GOval[][] r = new GOval[Weigh][Weigh];
	int i,j; 
	//表格
	public void ground() {
    
    
		GRect kuang = new GRect(Weigh*20,Weigh*20);
		kuang.setColor(Color.black);
		add(kuang,20,20);
		
		for(int i=40; i<20*Weigh+20; i+=20){
    
    
			GLine line = new GLine(i,20,i,Weigh*20+20);
			add(line);
			line = new GLine(20,i,Weigh*20+20,i);
			add(line);
		}
		
		for(int i=0; i<Weigh; i++){
    
    
			for(int j=0; j<Weigh; j++){
    
    
				a[i][j]=0;
				r[i][j] = new GOval(20,20);
				FalseGO(i,j);
				add(r[i][j],i*20+20,j*20+20);
			}
		}
	}
	
	public void judge(int n,int m){
    
    
		int num=0;
		for(i=-1; i<=1; i++) {
    
    
			for(j=-1; j<=1; j++) {
    
    
				if((n+i)>=Weigh||(m+j)>=Weigh||(n+i)<0||(m+j)<0||(i==0&&j==0)) 
					continue;
				else if(a[n+i][m+j]==1)  num++;
			}
		}
		b[n][m]=num;
	}
	
	public void CROval(){
    
    
		for(int n=0; n<Weigh; n++)
			for(int m=0; m<Weigh; m++)	judge(n,m);
		for(int i=0; i<Weigh; i++) {
    
    
			for(int j=0; j<Weigh; j++) {
    
    
				if(a[i][j]==0){
    
    
					if(b[i][j]==3) {
    
    
						a[i][j]=1;	
						TrueGO(i,j);
					}
				}
				else {
    
    
					if(b[i][j]<2||b[i][j]>3) {
    
    	
						a[i][j]=0;	
						FalseGO(i,j);
					}
				}
			}
		}
	}
	
	public void First() {
    
    
		for(i=0; i<Weigh; i++)
			for(j=0; j<Weigh; j++) {
    
    
				if(Math.random()<0.02) {
    
    
					TrueGO(i,j);  
					a[i][j]=1;  
					break;
				}
			}
	}
	
	public void TrueGO(int i,int j) {
    
    
		r[i][j].setFilled(true);
		r[i][j].setColor(Color.red);
	}
	
	public void FalseGO(int i,int j) {
    
    
		r[i][j].setFilled(true);
		r[i][j].setColor(Color.yellow);
	}
	
	public void run() {
    
    
		ground();
		while(true) {
    
    
			First();	
			CROval();	
			pause(100);		
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Luoxiaobaia/article/details/115312419