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

📄 pao.java

📁 SWT实现人人的象棋程序 供学习SWT的同志做个参考
💻 JAVA
字号:
package com.catking.chess;

import java.util.HashSet;
import java.util.Set;
import com.catking.Utility.Position;
import com.catking.Utility.Bool;


public class Pao extends Chess{

	public Pao(int color) {
		super(color);
		// TODO Auto-generated constructor stub
		
		this.name = '炮';
	}

	@Override
	public void go() {
		// TODO Auto-generated method stub
		System.out.print("炮");
	}

	@Override
	public Set<Position> availableSteps() {
		// TODO Auto-generated method stub
		Set<Position> set = new HashSet<Position>();

		//left
		int temp = y;
		Bool isPaoJiaOn = new Bool(false);
		while(temp-- != 0){
			
			if(!add(set, x, temp, isPaoJiaOn))
				break;
		}
		//right
		temp = y;
		isPaoJiaOn.mark = false;
		while(temp++ != ChessPane.COLS-1){
			if(!add(set, x, temp, isPaoJiaOn))
				break;
			
		}
		//up
		temp = x;
		isPaoJiaOn.mark = false;
		while(temp-- != 0){
			if(!add(set, temp, y, isPaoJiaOn))
				break;
		}
		//down
		temp = x;
		isPaoJiaOn.mark = false;
		while(temp++ != ChessPane.ROWS-1){
			if(!add(set, temp, y, isPaoJiaOn))
				break;
		}

		//System.out.println("有"+set.size()+"条道路");
		return set;
	}

	private boolean add(Set<Position>set, int x, int y, Bool isPaoJiaOn){
		
		int clr = ChessPane.chesses[x][y].color;
		
		if(clr == KONG && !isPaoJiaOn.mark){		//空棋可以像车一样直线跑啊!
					
			set.add(new Position(x, y));
			//System.out.println("加上空格"+x+","+y);
			return true;
		}
		else if(!isPaoJiaOn.mark){					//遇到炮架子
			isPaoJiaOn.mark = true;
			return true;
		}
		else if(clr == color){
			return false;							//炮架子后面第一个遇到的是自己的棋子
		}
		else if(clr != color && clr != KONG){		//遇到炮击目标对方的棋
			set.add(new Position(x, y));			//没有下一个目标了
			//System.out.println("加上炮击目标"+x+","+y);
			return false;
		}
		return true;								//炮架子后面全是空棋
	}


}

⌨️ 快捷键说明

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