亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? world.java

?? 采用jibu實現的Java并行編程的一個例子。 演示的是生命游戲。
?? JAVA
字號:
package gameoflife;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import com.axon7.jibu.CancelException;
import com.axon7.jibu.IForTask;
import com.axon7.jibu.Parallel;


enum CellAction { NONE, KILL, GIVE_LIFE }
enum CellState { DEAD, ALIVE }

class Cell
{
	private CellAction action = CellAction.NONE;
	private CellState state = CellState.DEAD;

	public CellAction getCellAction()
	{
		return action;
	}

	public void setCellAction(CellAction action)
	{
		this.action = action;
	}

	public CellState getState()
	{
		return state;
	}

	public void setState(CellState state)
	{
		this.state = state;
	}
}

public class World
{
	private Cell[][] grid;
	private int width, height;
	private static final Color GRIDCOLOR = Color.WHITE;
	private static final Color ALIVECOLOR = Color.ORANGE;
	private static final Color DEADCOLOR = Color.GRAY;

	public World(int width, int height)
	{	
		this.width = width;
		this.height = height;

		grid = new Cell[width][height];

		for(int x = 0; x < width; x++)
		{
			for(int y = 0; y < height; y++)
			{
				grid[x][y] = new Cell();
			}
		}		
	}

	/**************************************
	 * Finds the state that a given cell
	 * will be in in the next generation.
	 **************************************/	
	private void findNextState(int x, int y)
	{
		int alive = 0;// (x,y)周圍8個格子存活的數目

		int xBegin = (x == 0 ? x : x - 1);
		int xEnd = (x == width-1 ? x : x + 1);

		int yBegin = (y == 0 ? y : y - 1);
		int yEnd = (y == height-1 ? y : y + 1);

		for(int xLook = xBegin ; xLook <= xEnd ; xLook++)
		{
			for(int yLook = yBegin; yLook <= yEnd; yLook++)
			{				
				if((x != xLook || y != yLook) && grid[xLook][yLook].getState() == CellState.ALIVE)
					alive++;
			}
		}


		Cell c = grid[x][y];

		switch(c.getState())
		{
		case ALIVE:
			if(alive == 2 || alive == 3)
				c.setCellAction(CellAction.NONE);
			else
				c.setCellAction(CellAction.KILL);
			break;
		case DEAD:
			if(alive == 3)
				c.setCellAction(CellAction.GIVE_LIFE);
			else
				c.setCellAction(CellAction.NONE);
			break;
		}
	}

	/**************************************
	 * Changes the state for a cell.
	 **************************************/	
	private void changeState(int x, int y)
	{
		Cell c = grid[x][y];

		switch(c.getCellAction())
		{
		case KILL:
			c.setState(CellState.DEAD);
			break;
		case GIVE_LIFE:
			c.setState(CellState.ALIVE);
			break;
		case NONE:
			break;
		}
	}

	/*********************************************
	 * Sets the state of a single cell to ALIVE.
	 *********************************************/
	public void setAlive(int x, int y)
	{
		if((x >= 0 && x < width) && (y >= 0 && y < height))
			grid[x][y].setState(CellState.ALIVE);
	}

	/**************************************
	 * Transitions to the next iteration
	 * of life.
	 * Sequential version.
	 **************************************/	
	public void sequentialTransition()
	{				
		for(int x = 0;  x < width; x++)
		{
			for(int y = 0; y < height; y++)
			{						
				findNextState(x, y);				
			}
		}

		for(int x = 0;  x < width; x++)
		{
			for(int y = 0; y < height; y++)
			{						
				changeState(x, y);			
			}			

		}
	}

	/**************************************
	 * Transitions to the next iteration of life.
	 * Parallel version.
	 **************************************/	 
	public void parallelTransition() throws CancelException
	{				
		Parallel.forLoop(0, width, 10, new IForTask()
		{
			public void loopBody(int x)
			{
				for(int y = 0; y < height; y++)
				{						
					findNextState(x, y);				
				}
			}
		});

		Parallel.forLoop(0, width, 10, new IForTask()
		{
			public void loopBody(int x)
			{
				for(int y = 0; y < height; y++)
				{						
					changeState(x, y);			
				}			
			}
		});

	}

	
	/**************************************
	 * Draws the world to a BufferedImage instance.
	 * Parallel version.
	 **************************************/	
	public void parallelImageDraw(final BufferedImage img, final int cellSize) throws CancelException	
	{
		
		Graphics2D g2d = img.createGraphics();
		g2d.setColor(GRIDCOLOR);
		g2d.fillRect(0, 0, width * cellSize, height * cellSize);
		
		Parallel.forLoop(0, width, 10, new IForTask()
		{					
			public void loopBody(int x)
			{
				Graphics2D g2d = img.createGraphics();
				for(int y = 0; y < height; y++)
				{						
					if(grid[x][y].getState() == CellState.ALIVE)
					{
						g2d.setColor(ALIVECOLOR);
						g2d.fillRect(x * cellSize, y * cellSize, cellSize, cellSize);
					}
					else					
					{
						g2d.setColor(DEADCOLOR);
						g2d.drawRect(x * cellSize, y * cellSize, cellSize, cellSize);
					}
				}			
			}
		});
	}

	/************************************************
	 * Draws the world to a BufferedImage instance.
	 * Sequential version.
	 ************************************************/	
	public void sequentialImageDraw(BufferedImage img, final int cellSize)
	{
		final Graphics2D g2d = img.createGraphics();
		
		g2d.setColor(GRIDCOLOR);
		g2d.fillRect(0, 0, width * cellSize, height * cellSize);

		for(int x = 0;  x < width; x++)
		{
			for(int y = 0; y < height; y++)
			{						
				if(grid[x][y].getState() == CellState.ALIVE)
				{
					g2d.setColor(ALIVECOLOR);
					g2d.fillRect(x * cellSize, y * cellSize, cellSize, cellSize);
				}
				else					
				{
					g2d.setColor(DEADCOLOR);
					g2d.drawRect(x * cellSize, y * cellSize, cellSize, cellSize);
				}
			}			
		}
	}

	/**************************************
	 * Draws the world to a the console.
	 **************************************/	
	public void consoleDraw()
	{
		for(int y = 0; y < height; y++)
		{	
			for(int x = 0; x < width; x++)
			{	
				Cell c = grid[x][y];					

				if(c.getState() == CellState.ALIVE)
					System.out.print(" o ");
				else
					System.out.print(" x ");	

			}	
			System.out.println();
		}
		System.out.println();
	}

	/*******************************************
	 * Adds an array of LifeForms to the world.
	 *******************************************/
	public void addLifeForms(LifeForm[] lifeForms)
	{
		for(LifeForm lf : lifeForms)
		{
			int xOffset = lf.getOffset().x;
			int yOffset = lf.getOffset().y;
			
			for(Point p : lf.getPoints())
			{
				setAlive(p.x + xOffset, p.y + yOffset);
			}
		}		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜另类动漫二区| 国产乱码精品一品二品| 黄色日韩三级电影| a级精品国产片在线观看| 9191国产精品| 中文字幕在线不卡视频| 精品在线一区二区三区| 精品视频在线免费| 亚洲精品国久久99热| 激情五月激情综合网| 欧美调教femdomvk| 亚洲男女毛片无遮挡| 成人免费av资源| 久久免费电影网| 久久99精品国产麻豆不卡| 色一情一伦一子一伦一区| 久久精品欧美日韩精品 | 欧美综合在线视频| 国产人成亚洲第一网站在线播放 | 国产精品一级二级三级| 在线播放亚洲一区| 亚洲地区一二三色| 欧美三级视频在线播放| 亚洲人吸女人奶水| 97se亚洲国产综合自在线不卡 | 成人高清免费在线播放| 精品成人一区二区三区| 奇米精品一区二区三区四区 | 色播五月激情综合网| 国产精品久久久久9999吃药| 国产不卡免费视频| 国产精品日产欧美久久久久| 成人性生交大片免费看中文 | 日韩av一级片| 欧美一区二区免费视频| 亚洲a一区二区| 欧美片网站yy| 免费成人在线观看| 日韩一区二区精品在线观看| 蜜臀av一级做a爰片久久| 日韩免费性生活视频播放| 国产一区在线精品| 久久精品一区二区| 99久久免费国产| 亚洲一区二区不卡免费| 欧美性大战久久久| 日本不卡在线视频| 欧美精品一区二区在线播放| 国产精品911| 亚洲欧美精品午睡沙发| 欧美亚洲动漫精品| 美腿丝袜在线亚洲一区 | 亚洲资源中文字幕| 欧美日韩第一区日日骚| 丝袜亚洲精品中文字幕一区| 日韩一级欧美一级| 成人精品小蝌蚪| 亚洲一卡二卡三卡四卡| 欧美v国产在线一区二区三区| 国精产品一区一区三区mba视频| 国产精品网站在线| 欧美日韩你懂得| 国产一级精品在线| 亚洲一区二区在线播放相泽| 亚洲精品在线免费观看视频| av中文字幕不卡| 男女性色大片免费观看一区二区 | 99精品视频在线观看免费| 亚洲一区在线看| 精品毛片乱码1区2区3区| 91麻豆自制传媒国产之光| 奇米色一区二区三区四区| 国产精品久久久久aaaa| 欧美日本在线看| 成人深夜在线观看| 日韩av二区在线播放| 国产精品网站导航| 精品日本一线二线三线不卡| 色婷婷亚洲综合| 国产成人a级片| 日韩高清欧美激情| 亚洲欧美怡红院| 精品国产1区2区3区| 欧美亚洲一区二区三区四区| 国产宾馆实践打屁股91| 久久国产精品72免费观看| 亚洲一区在线观看网站| 中文字幕精品一区二区精品绿巨人 | 国产亚洲精品中文字幕| 欧美精品粉嫩高潮一区二区| 色香色香欲天天天影视综合网| 国产乱对白刺激视频不卡| 亚洲成人黄色小说| 自拍偷拍亚洲激情| 国产亚洲一区二区三区| 日韩一区二区电影网| 欧美在线一区二区三区| 成人av一区二区三区| 国内精品自线一区二区三区视频| 天天操天天综合网| 久久精品99国产精品日本| 亚洲成人av福利| 亚洲精品视频在线观看网站| 中文字幕不卡的av| 久久综合九色综合97_久久久| 日韩一级高清毛片| 日韩一区国产二区欧美三区| 在线91免费看| 88在线观看91蜜桃国自产| 欧美亚洲综合网| 欧美日韩另类国产亚洲欧美一级| 91国内精品野花午夜精品| 94-欧美-setu| 色婷婷香蕉在线一区二区| 在线视频一区二区免费| 欧美亚洲一区二区在线| 欧美日韩情趣电影| 7777精品伊人久久久大香线蕉的| 欧美精品乱码久久久久久按摩| 欧美日韩精品一区二区三区蜜桃| 欧美日韩一区三区| 欧美日韩精品三区| 欧美一区二区在线播放| 欧美大度的电影原声| 精品国产乱码久久久久久蜜臀 | 国产成人午夜视频| 国产精品1区2区| 成人精品视频.| 91美女片黄在线观看| 欧美亚男人的天堂| 91精品中文字幕一区二区三区| 日韩精品中文字幕一区| www国产成人免费观看视频 深夜成人网| 欧美精品一区二区精品网| 国产网红主播福利一区二区| 亚洲欧洲国产日韩| 亚洲国产一区二区三区| 久久99久久99小草精品免视看| 国产精品911| 欧洲国内综合视频| 欧美一区2区视频在线观看| 国产欧美综合在线| 一区二区三区国产| 久久国产人妖系列| 成人av电影在线| 欧美裸体一区二区三区| 欧美成人乱码一区二区三区| 国产精品网站在线播放| 午夜精品国产更新| 国产精品99久久久久久宅男| 色综合久久久久网| 日韩欧美国产高清| 一区二区三区在线观看网站| 日本不卡在线视频| 99久久777色| 欧美videos中文字幕| 亚洲色图视频网| 精品一二三四在线| 欧美性猛片xxxx免费看久爱| 精品av久久707| 一区二区在线观看视频在线观看| 久色婷婷小香蕉久久| 91蜜桃网址入口| 26uuu国产日韩综合| 三级欧美韩日大片在线看| 成人av第一页| 精品va天堂亚洲国产| 亚洲高清三级视频| 粉嫩绯色av一区二区在线观看| 欧美一级片在线看| 一区二区三区欧美久久| 国产成人午夜精品影院观看视频 | 精品国产一区二区三区av性色| 亚洲日本一区二区| 国产一区美女在线| 欧美精品久久久久久久多人混战 | 国产精品一区专区| 欧美日本乱大交xxxxx| 国产精品麻豆欧美日韩ww| 免费成人av资源网| 欧美日韩的一区二区| 一区二区三区日韩在线观看| 成人在线综合网站| 久久综合色综合88| 日韩经典一区二区| 欧美日韩国产影片| 夜夜揉揉日日人人青青一国产精品| 国产麻豆视频精品| 久久亚洲捆绑美女| 久久精品噜噜噜成人av农村| 9191久久久久久久久久久| 亚洲在线视频免费观看| 91蜜桃网址入口| 一个色综合网站| 欧美性猛片aaaaaaa做受| 亚洲一区影音先锋| 91福利视频在线| 一区二区高清免费观看影视大全 | 国产91高潮流白浆在线麻豆| 久久在线观看免费|