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

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

?? sliding block.txt

?? 用java編寫的puzzle游戲
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
//================================================================
//	Sliding Block Program
//================================================================

//================================================================
import java.awt.*;
import java.applet.*;
import java.lang.*;
import java.io.*;
import java.util.*;
import java.net.*;

//================================================================
//	Sliding Applet
//================================================================
public class Slide extends Applet {
	final	int	BUTTON_H 	=  35;
	final	int	MSG_H		=  35;
	final	int	COPY_H	=  30;

	public	Dimension  app_size;
		Board		board;
		AudioClip	sound = null;
		String	filename;
		String	nextfile;
	private
		Label			stepCounter;
		Label			doneMsg;
		ControlButton	nextButton;
		ControlButton	backButton;
		ControlButton	redoButton;
		ControlButton	replayButton;

	final	Color	backcolor  = new Color(180,180,180);	// background - grey
	final Color pagecolor = new Color(222,222,222);
//	final Color pagecolor = Color.white;		 	// for white background	
	final	Color	shadowLight = Color.white;			// top, light shadow
	final	Color	shadowDark  = Color.black;			// bottom, dark shadow
	final	Color	piececolor = new Color(0.40f,0.40f,1.0f);	// default piece color
	final Color limitcolor = Color.green;
	final	Color	hintcolor  = Color.black;			// goal line color
	final Color msgcolor	= Color.red;

	//----------------------------------------------------------------
	public void init() {
		String crMessage = "Slide Puzzle V3.5  " + 
				"Copyright(c)1996-1999 Hirofumi Fujiwara, Nick Baxter";
		System.out.println(crMessage);
		System.out.println("Version 3.5.1 - Netscape 4.5 fix part 1");

		sound = getAudioClip(getCodeBase(),"tick.au");
		filename = getParameter( "problemfile" );
		app_size = this.size();

		Rectangle r = new Rectangle(0,BUTTON_H + MSG_H,
				app_size.width, 
				app_size.height - 2*BUTTON_H - MSG_H - COPY_H);

		board = new Board(this,r);

		Font	f10 = new java.awt.Font( "Helvetica", 0, 10 );
		Font	f14 = new java.awt.Font( "Helvetica", 0, 14 );
		Font	bf16 = new java.awt.Font( "Helvetica", 1, 16 );
		Font	f20 = new java.awt.Font( "Helvetica", 0, 20 );

		setBackground( pagecolor );

		setLayout( new BorderLayout() );
		{
			Panel p1 = new Panel();
			add("North",p1);
			p1.setLayout(new FlowLayout());
			backButton = new ControlButton(this,"Back"," Back ");
			backButton.setFont( f14 );
			redoButton = new ControlButton(this,"Forward"," Forward ");
			redoButton.setFont( f14 );
			p1.add(backButton);
			p1.add(redoButton);

			stepCounter = new Label();
			stepCounter.setFont( f20 );
			showcounter();
			p1.add( stepCounter );
			replayButton = new ControlButton(this,"Replay"," Restart ");
			replayButton.setFont( f14 );
			p1.add(replayButton);

			p1.reshape(0,0,app_size.width,BUTTON_H);

		}

		setLayout(new BorderLayout());
		{
			Panel p4 = new Panel();
			add("North",p4);
			p4.setLayout(new FlowLayout());

			doneMsg = new Label();
			doneMsg.setFont(bf16);
			doneMsg.setForeground(msgcolor);
			doneMsg.setAlignment(Label.CENTER);
			doneMsg.setText("                                    "+
						"                                    ");
			p4.add(doneMsg);

			p4.reshape(0, BUTTON_H, app_size.width, MSG_H);
		}

		setLayout(new BorderLayout());
		{
			Panel p3 = new Panel();
			add("South", p3 );
			p3.setLayout( new FlowLayout());

			nextButton = new ControlButton(this,"Next"," Go to next problem ");
			nextButton.setFont(f14);
			p3.add(nextButton);

			p3.reshape( 0, app_size.height - BUTTON_H - COPY_H,
					app_size.width, BUTTON_H);

		}

		setLayout(new BorderLayout());
		{
			Panel p2 = new Panel();
			p2.setLayout( new FlowLayout());
			add("South", p2 );

			Label copyright = new Label( crMessage, Label.CENTER );
			copyright.setFont( f10 );
			p2.add( copyright );

			p2.reshape( 0, app_size.height - COPY_H,
					app_size.width, COPY_H);
		}
		replay();
	}

	//----------------------------------------------------------------
	public	void showcounter() {
		if(board.minStep==0)
			stepCounter.setText( "   Step  "+board.step+"   " );
		else stepCounter.setText( "   Step  "+board.step+"/"+
							board.minStep+"   " );
	}

	//----------------------------------------------------------------
	public	void showMsg(String msg) {
		doneMsg.setText( msg );
	}

	//----------------------------------------------------------------
	public void replay() {
		board.setup(filename);
		showcounter();
		backButton.disable();
		redoButton.disable();
		if(nextfile == null) nextButton.disable();
		else enable();
		paint( getGraphics() );
	}

	//----------------------------------------------------------------
	public void next() {
		if(nextfile != null) filename = nextfile;
		replay();
	}

	//----------------------------------------------------------------
	public boolean mouseDown( Event evt, int x, int y ) {
		board.mouseDown(x,y);
		return	true;
	}

	public boolean mouseDrag( Event evt, int x, int y ) {
		board.mouseDrag(x,y);
		return	true;
	}

	public boolean mouseUp( Event evt, int x, int y ) {
		board.mouseUp(x,y);
		return	true;
	}

	//----------------------------------------------------------------
	public void paint( Graphics g ) {

//		boolean flg = g.drawImage(backImage,0,CTRLPANEL_H*2,
//						app_size.width,app_size.height-CTRLPANEL_H*2-COPY_H,
//						shadowLight, null);

		board.paintHint(g);
		board.paint(g);
	}
	public void repaint() {
		paint(getGraphics());
	}
}




//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	ControlButton
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

class  ControlButton extends Button {
	Slide		slide;
	String		name;

	ControlButton( Slide s, String str, String label ) {
		super();
		slide = s;
		name = str;
		setLabel( label );
	}

	//----------------------------------------------------------------
	public boolean action( Event evt, Object obj ) {
		if(name.equals("Replay")) slide.replay();
		if(name.equals("Back")) slide.board.backHistory();
		if(name.equals("Forward")) slide.board.forwardHistory();
		if(name.equals("Next")) slide.next();
		return true;
	}
}







//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//	Board
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

class Board extends Rectangle {
	final	int	maxPiece = 32;
	final	int	maxHistory = 512;

	public
		Block	blocks[][];
		String	targetBlocks[][];
		char	hintBlocks[][];
		int	ax,ay;
		Slide	slide;
		int	unit;
		int	minStep;
		int	step;
	private
		Rectangle req;
		Piece	pieces[];
		int	piecen;
		Piece	currentPiece;
		Point	dragPoint;
		Point	dPoint;	
		boolean	dragFlag;
		String	boardType = "none";
		boolean	painting;
		Piece	pieceHistory[];
		Point	pointHistory[];
		int	historyCount;
		int	redoLimit;
		int	originalRedoLimit;
		int	originalX;
		int	originalY;
		boolean	adjusting;

	//----------------------------------------------------------------
	Board(Slide s,Rectangle r){
		pieces = new Piece[maxPiece];
		slide = s;
		unit = 16;
		x = y = 0;
		req = r;
		step = 0;
		pieceHistory = new Piece[maxHistory];
		pointHistory = new Point[maxHistory];
	}

	//----------------------------------------------------------------
	public void setup(String filename){
		minStep = step = 0;
		targetBlocks = null;
		hintBlocks = null;
		currentPiece = null;
		painting = false;
		ax = ay = 0;
		piecen = 0;
		dragFlag = false;
		loadData(filename);

		if(ax==0 || ay==0){
			ax = ay = 1;
			System.out.println("File read error!");
		}
		int u1 = (int)(req.width*0.92)/ax;
		int u2 = (int)(req.height*0.92)/ay;
		unit = (u1<u2)? u1 : u2;
		width = ax*unit;
		height = ay*unit;
		x = (req.width-width)/2+req.x;
		y = (req.height-height)/2+req.y;
		setBlockShape();
		dragPoint = new Point(0,0);
		dPoint = new Point(0,0);
		historyCount = redoLimit = 0;
		originalRedoLimit = originalX = originalY = 0;
		adjusting= false;
		slide.showMsg("                                    "+
					"                                    ");
	}

	//----------------------------------------------------------------
	public void mouseDown(int v, int w){
		if(dragFlag) return;
		if(!this.inside(v,w)) return;
		v-=x; w-=y;
		painting = true;
		dragPoint.move(v,w);
		v/=unit; w/=unit;
		if(blocks[v][w]!=null && blocks[v][w].outside)
			return;
		if(blocks[v][w]!=null){
			currentPiece = blocks[v][w].piece;
			currentPiece.resetAdjust();
			dragFlag = true;
		}
		dPoint.move(0,0);
		painting = false;
	}

	//----------------------------------------------------------------
	public void mouseDrag(int v, int w){
		int radius = 5;		// radius of pieces corner 
		if(!dragFlag || painting) return;
		painting = true;
		v-=x; w-=y;
		dragFlag = false;
		int dx = v - dragPoint.x;
		int dy = w - dragPoint.y;
		boolean f = false;

		int dx2 = currentPiece.moveX(dPoint.x,dPoint.y,dx);

//		if (dx!=0 && dx2==0) {
//			for (int d=-radius;d<=radius;d++) {
//				dx2 = currentPiece.moveX(dPoint.x,dPoint.y-d,dx);
//				if (dx2 != 0) {
//					System.out.println("ADJUST-y: "+ -d);
//					dPoint.y-=d;
//					dy+=d;
//
//					int ddx;
//					if(dx>0) ddx=2*radius-dx; else ddx=dx-2*radius;
//					dPoint.x-=ddx;
//					dx+=ddx;
//					System.out.println("BOOST-x: "+dx);
//					dx2 = currentPiece.moveX(dPoint.x,dPoint.y,dx);
//					break;
//				}
//			}
//		}

		dPoint.x += dx2;
		if(dx2!=dx && dx2!=0 && 
			currentPiece.moveX(dPoint.x,dPoint.y,dx)==0) {
			f = true;
		}

		int dy2 = currentPiece.moveY(dPoint.x,dPoint.y,dy);

//		if (dy!=0 && dy2==0) {
//			for (int d=-radius;d<=radius;d++) {
//				dy2 = currentPiece.moveY(dPoint.x-d,dPoint.y,dy);
//				if (dy2 != 0) {
//					System.out.println("ADJUST-x: "+ -d);
//					dPoint.x-=d;
//					dx+=d;
//
//					int ddy;
//					if(dy>0) ddy=2*radius-dy; else ddy=dy-2*radius;
//					dPoint.y-=ddy;
//					dy+=ddy;
//					System.out.println("BOOST-y: "+dy);
//					dy2 = currentPiece.moveY(dPoint.x,dPoint.y,dy);
//					break;
//				}
//			}
//		}
				
		dPoint.y += dy2;
		if(dy2!=dx && dy2!=0 && 
			currentPiece.moveY(dPoint.x,dPoint.y,dy)==0){
			f = true;
		}

		dragPoint.move(v,w);
		currentPiece.update(slide.getGraphics(),dPoint.x,dPoint.y);

		if(f) slide.sound.play();
		dragFlag = true;
		painting = false;
	}

	//----------------------------------------------------------------
	public void mouseUp(int v, int w){
		v-=x; w-=y;
		if(!dragFlag) return;
		dragFlag = false;
		int offx = (dPoint.x+unit/2+unit*1024)/unit-1024;
		int offy = (dPoint.y+unit/2+unit*1024)/unit-1024;

		// see if this move is really same as Back
		if (historyCount>0) 
			if (pieceHistory[historyCount-1].cid==currentPiece.cid &&
				pointHistory[historyCount-1].x == -offx &&
				pointHistory[historyCount-1].y == -offy) {
				backHistory();
				return;
			}
		// see if this move is really same as Forward
		if (historyCount<redoLimit) 
			if (pieceHistory[historyCount].cid==currentPiece.cid)
				if (pointHistory[historyCount].x == offx &&
						pointHistory[historyCount].y == offy) {
					forwardHistory();
					return;
				}

		currentPiece.update(slide.getGraphics(),offx*unit,offy*unit);
		currentPiece.move(offx,offy);

		// check to see if this is same piece as previous move
		// know it can't be a "back", but maybe a "forward"
		if ( (historyCount>0) &&
			 (pieceHistory[historyCount-1].cid==currentPiece.cid) ) {
			int offxx = pointHistory[historyCount-1].x + offx;
			int offyy = pointHistory[historyCount-1].y + offy;
			System.out.println("Replace " + String.valueOf(step) + ": " +
					currentPiece.cid + ", "+String.valueOf(offxx)+","+
					String.valueOf(offyy));

			// check to see if Forward should be enabled or disabled
			if ((originalRedoLimit>0) && (offxx==originalX) && 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
福利电影一区二区| 欧美一级欧美一级在线播放| 日本精品视频一区二区| 欧美一区二区三区四区五区 | 日韩电影在线免费| 国产91丝袜在线播放0| 777午夜精品视频在线播放| 国产精品久久久久桃色tv| 美脚の诱脚舐め脚责91| 欧美性生交片4| 亚洲老妇xxxxxx| 精品在线观看免费| 欧美日韩精品福利| 国产精品久久久久久久第一福利 | 国产一区欧美二区| 欧美日韩二区三区| 亚洲四区在线观看| 北条麻妃国产九九精品视频| 精品福利一区二区三区免费视频| 亚洲成人激情综合网| 91香蕉视频污| 欧美激情在线看| 久久se精品一区精品二区| 91精品国产品国语在线不卡| 亚洲精品成人少妇| 91在线你懂得| 亚洲乱码国产乱码精品精的特点 | 日韩欧美另类在线| 午夜久久福利影院| 欧美中文字幕一二三区视频| 国产精品久久久久久久裸模| 粉嫩av亚洲一区二区图片| 久久免费电影网| 国产一区二区主播在线| 精品国产免费久久| 国产露脸91国语对白| 久久美女艺术照精彩视频福利播放| 成人激情免费电影网址| 国产色婷婷亚洲99精品小说| 国产精品一区2区| 国产性色一区二区| 成人丝袜18视频在线观看| 国产精品网曝门| 91亚洲精华国产精华精华液| 亚洲婷婷国产精品电影人久久| eeuss鲁一区二区三区| 中文字幕一区二区三区在线不卡| 成人视屏免费看| 亚洲欧美色图小说| 欧美三级一区二区| 免费欧美高清视频| 久久久久亚洲蜜桃| av一区二区不卡| 亚洲高清三级视频| 欧美成人a∨高清免费观看| 国产精品综合在线视频| 国产精品久久久久影院亚瑟| 在线中文字幕一区| 日本女人一区二区三区| 久久女同性恋中文字幕| 91麻豆免费看| 日韩成人精品视频| 中文无字幕一区二区三区| 色噜噜狠狠一区二区三区果冻| 午夜成人在线视频| 久久女同精品一区二区| 色婷婷精品大在线视频| 全国精品久久少妇| 欧美精彩视频一区二区三区| 欧美午夜电影网| 韩国三级中文字幕hd久久精品| 国产精品福利一区| 91精品欧美福利在线观看| 国产激情精品久久久第一区二区| 亚洲精品视频在线观看网站| 日韩欧美国产不卡| 色女孩综合影院| 奇米精品一区二区三区四区 | 欧美一区二区三区四区高清| 国精产品一区一区三区mba视频| 亚洲丝袜制服诱惑| 久久―日本道色综合久久| 在线观看亚洲一区| 国产酒店精品激情| 亚洲一区二区免费视频| 国产欧美精品区一区二区三区| 欧美日韩国产成人在线免费| 成人精品国产一区二区4080| 秋霞国产午夜精品免费视频| 一区二区三区在线观看视频| 久久欧美中文字幕| 欧美一级高清大全免费观看| 91在线国产福利| 国产激情视频一区二区三区欧美| 天天综合天天综合色| 亚洲九九爱视频| 国产女主播一区| 久久久久国产精品麻豆ai换脸| 51久久夜色精品国产麻豆| 色婷婷综合久久久久中文| 成人app在线观看| 国产精一区二区三区| 青椒成人免费视频| 日韩精彩视频在线观看| 亚洲视频一区二区在线| 国产精品久久久久久久久动漫| 久久久.com| 精品少妇一区二区三区免费观看| 91精品国产品国语在线不卡 | www.日韩在线| 成人午夜视频在线| 处破女av一区二区| 国产精品99久久久久久久vr| 精品一区二区三区视频在线观看| 亚洲成av人片观看| 亚洲国产毛片aaaaa无费看| 亚洲欧美一区二区不卡| 亚洲日本一区二区三区| 中文字幕一区二区三区精华液| 国产精品毛片久久久久久| 中文字幕第一页久久| 国产精品久久久久一区 | 午夜精品久久久久久久久久久| 伊人性伊人情综合网| 麻豆精品视频在线观看免费| 美女免费视频一区二区| 麻豆极品一区二区三区| 国产一区二区三区久久久| 国产精品一区一区| 99热这里都是精品| 欧美伊人精品成人久久综合97| 欧美体内she精视频| 欧美人动与zoxxxx乱| 日韩欧美一级片| 国产目拍亚洲精品99久久精品| 中文字幕乱码久久午夜不卡 | 91麻豆精品国产91久久久久久久久 | 天堂久久一区二区三区| 蜜桃一区二区三区在线观看| 成人午夜免费av| 欧美a一区二区| 天天综合天天做天天综合| 久久99九九99精品| 丁香激情综合国产| 欧美亚洲日本一区| 91精品国产色综合久久不卡蜜臀 | 久久影视一区二区| 91精品国产福利| 777久久久精品| 在线播放国产精品二区一二区四区 | 91精品国产一区二区| 7777女厕盗摄久久久| 欧美日韩一级片网站| 在线观看日韩毛片| 色偷偷88欧美精品久久久| 91美女片黄在线| 91麻豆视频网站| 91欧美激情一区二区三区成人| 成人午夜免费视频| 91美女在线观看| 欧美亚洲动漫精品| 欧美老肥妇做.爰bbww视频| 欧美日韩精品久久久| 欧美精品 日韩| 欧美一区二区久久| 日韩精品中文字幕在线不卡尤物| 精品欧美久久久| 国产不卡视频一区| 韩国女主播一区| www.日韩在线| 91在线视频官网| 欧美日本在线看| 欧美成人猛片aaaaaaa| 久久色.com| 中文字幕在线一区免费| 亚洲啪啪综合av一区二区三区| 亚洲一区二区三区四区五区黄| 爽好久久久欧美精品| 国产成人在线免费| 欧美综合视频在线观看| 日韩视频在线你懂得| 日本一二三四高清不卡| 亚洲福利视频三区| 国产在线不卡一区| 91福利精品第一导航| 精品国产亚洲在线| 亚洲精品免费在线| 国产精品一卡二| 欧美日韩三级在线| 国产欧美日韩亚州综合| 亚洲电影一级片| a美女胸又www黄视频久久| 日韩欧美黄色影院| 亚洲女子a中天字幕| 国产乱码一区二区三区| 欧美日韩国产区一| 亚洲欧美日韩久久| 国产米奇在线777精品观看| 欧美系列在线观看| 1024成人网|