⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brickbutton.java

📁 朋友开发的一个扫雷游戏,用SWT开发的,游戏有点慢,想了解的下载看看吧
💻 JAVA
字号:
/*
 * Created on 2005-6-2
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package bomb;

import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Font;

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.SWT;

import java.util.Observable;
import java.util.Observer;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class BrickButton extends Canvas implements Observer{
	public BrickButton(Composite parent ,Game game,int x,int y){
		super(parent,SWT.NONE);
		this.game = game;
		state = Brick.NORMAL;
		text = "";
		isTrap = false;
		this.x = x;
		this.y = y;
		Listener listener = new Listener(){
			public void handleEvent(Event event){
				switch(event.type){
					case  SWT.MouseDown:
					case  SWT.MouseUp:processMouseClickEvent(event);break;
					case  SWT.Paint:paintControl(event);break; 	
				}
			}
		};
		addListener(SWT.Paint,listener);
		//addListener(SWT.MouseDown,listener);
		addListener(SWT.MouseUp,listener);
	}
	
	private void paintControl(Event event){
		Rectangle rect = this.getClientArea();
		GC gc = event.gc;
		if (state .equals(Brick.NORMAL) || state .equals(Brick.TAGGED)){
			gc.setForeground(white);
			gc.drawLine( rect.x,rect.y,rect.width,rect.y);
			gc.drawLine( rect.x,rect.y,rect.x,rect.height);
			gc.setForeground(shadow);
			gc.drawLine( rect.width -1,rect.y,rect.width -1,rect.height);
			gc.drawLine( rect.x,rect.height -1 ,rect.width-1,rect.height-1);
			if (state.equals(Brick.TAGGED)){
				gc.drawImage(GlobalInfo.getFlagImage(),
							 rect.x +1,rect.y+1);
			}
		}else{
			gc.setForeground(shadow);
			gc.drawLine( rect.x,rect.y,rect.width,rect.y);
			gc.drawLine( rect.x,rect.y,rect.x,rect.height);
			//gc.setForeground(white);
			gc.drawLine( rect.width -1,rect.y,rect.width -1,rect.height);
			gc.drawLine( rect.x,rect.height -1 ,rect.width-1,rect.height-1);
			if (isTrap){
				if (state.equals(Brick.DIGGED)){
				    gc.drawImage(GlobalInfo.getTrapImage(),
				 			rect.x +1,rect.y+1);
				}else {
				    gc.drawImage(GlobalInfo.getBombImage(),
				 			rect.x +1,rect.y+1);

				}
			    
			}else if (text != null && text.trim() .length() >0)
			{
				int textI = Integer.parseInt(text);
				if (textI == 0 ){
					//gc.setForeground(shadow);
				}else if (textI < 3 ){
					gc.setForeground(green);
				}else if (textI < 5){
					gc.setForeground(blue);
				} else {
					gc.setForeground(red);
				}
				if (textI > 0){
					//gc.drawString( 1)
					//FontMetrics metrics = gc.getFontMetrics();
					gc.getFont().getFontData();
					//if (fontData == null){
						//fontData = gc.getFont().getFontData();
						//gc.
						//fontData.setStyle(SWT.BOLD);
						fontData = new FontData("宋体",9,SWT.BOLD);
						gc.setFont(new Font(this.getDisplay(),fontData));
					//}
					Point point = gc.stringExtent( text);
					gc.drawString(text,(rect.width - point.x )/2,(rect.width - point.y)/2);
				}
				
			}
		}

	}
	
	private void processMouseClickEvent(Event event){
		
		if ((event.stateMask & SWT.BUTTON1) != 0){
			
			this.game.dig(x,y);
		}else if((event.stateMask & SWT.BUTTON3) != 0){
			//state = Brick.DIGGED;
			
			if (this.state.equals(Brick.NORMAL)){
				this.game.tag(x,y);
			}else{
				this.game.untag(x,y);
			}
		}
		
	}
	
	public Point computeSize(int hWint,int hHint,boolean flag){
		return new Point(15,15);
	}
	
	
	public void update(Observable observable,Object target){
		
		Brick brick = (Brick)observable;
		//System.out.println( brick.getX());
		this.text = new Integer(brick.getBombs()).toString();
		
		this.state = brick.getState();
		isTrap = brick.getTrap();
		redraw();
	}
	
	private Color white = this.getDisplay().getSystemColor(SWT.COLOR_WHITE);
	private Color shadow = this.getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
	private Color red = this.getDisplay().getSystemColor(SWT.COLOR_RED);
	private Color blue = this.getDisplay().getSystemColor(SWT.COLOR_BLUE);
	private Color green= this.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN);
	private String state = Brick.NORMAL;
	private String text = "";
	private boolean isTrap = false;
	private Game game = null;
	
	private FontData fontData = null;
	
	private int x = 0;
	private int y = 0;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -