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

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

?? chess.java

?? SWT實現人人的象棋程序 供學習SWT的同志做個參考
?? JAVA
字號:
/*十行九列棋譜
 * 			    黑
 * 1   2   3   4   5  6   7   8   9
 * 車 馬 象 士 將 士 象 馬 車
 * 空 空 空 空 空 空 空 空 空
 * 空 炮 空 空 空 空 空 炮 空
 * 卒 空 卒 空 卒 空 卒 空 卒
 * 空 空 空 空 空 空 空 空 空
 * ----楚河     漢界-----
 * 空 空 空 空 空 空 空 空 空
 * 兵 空 兵 空 兵 空 兵 空 兵
 * 空 炮 空 空 空 空 空 炮 空
 * 空 空 空 空 空 空 空 空 空
 * 車 馬 相 士 帥 士 相 馬 車
 * 
 * 九 八 七 六 五 四 三 二 一
 * 				紅
 * 
 * 一開始不考慮顏色,只考慮兩種棋子
 */
package com.catking.chess;

import com.catking.Utility.*;
import com.catking.Manager.*;

import java.util.*;
import org.eclipse.swt.graphics.GC;


abstract public class Chess implements ChessKind{
	
	
	protected int x;
	protected int y;
	protected int color;
	protected Stack<ChessState> pre_chesses_stack;
	protected char name;
	

	public Chess(int color){

		this.color = color;
		this.pre_chesses_stack = new Stack<ChessState>();
	}
	////////////
	public void paint(){
		
		ChessPane.canvas.paint(x, y, name, color == ATTACK_UP);
	}
	public void showCursor(){
		
		if(BoardStateManager.isGaming()){
			
			if(ChessPane.pre_player != color )
				ChessPane.canvas.showSelectedCursor();
			else
				ChessPane.canvas.resetCursor();
		}
	}
	public boolean showSelectedEffect(){
		boolean isOK = false;
		if(ChessPane.pre_player != color){
			ChessPane.canvas.showSelectedEffect(x, y, name, color == ATTACK_UP);
			isOK = true;
		}
		return isOK;
	}
	/////////////
	
	public int setPos(int x, int y, boolean alternative) {

		if(alternative && ChessPane.pre_player == color)			//已經動過棋子了!!
			return BoardStateManager.CANNOT_PUT_CHESS;

		Set<Position>p = availableSteps();
		boolean isOK = p.contains(new Position(x, y));

		String wavFileName = null;

		if(isOK){
			//更新ChessPane

			if(ChessPane.chesses[x][y].color == KONG)
				wavFileName = "Wav/mov.wav";
			else
				wavFileName = "Wav/eat.wav";
			Utilities.playSound(wavFileName);
			
			//記錄被占領的棋子的信息和原來棋子的位置
			this.pre_chesses_stack.add(
					new ChessState(
							ChessPane.chesses[x][y], 
							this.x, this.y, 
							ChessPane.isJiangJunState[color],
							ChessPane.isJiangJunState[3 - color]));
			//侵占
			ChessPane.chesses[x][y] = this;
			
			Kong kong = new Kong(KONG);
			kong.x = this.x;
			kong.y = this.y;
			ChessPane.chesses[this.x][this.y] = kong;
			
			this.x = x;
			this.y = y;
			
			//標志自己動的棋子
			ChessPane.pre_player = color;
			
			//記錄上一步是不是已經被將了
			boolean isAlreadyJiangJun = ChessPane.isJiangJunState[color];
			
			//檢測并且更新全局被將情況
			ChessPane.checkJiangJunState();

			//檢測自己動完棋子后是不是仍然處于被將狀態,如果被將,就輸掉了比賽
			if(ChessPane.isJiangJunState[color] && isAlreadyJiangJun){
				//輸了
				//語音提示
				//Utilities.delay(2000);
				Utilities.playSound("Wav/endGame.wav");
				ChessPane.canvas.showGameOver(color != ATTACK_UP);
				return BoardStateManager.GAME_OVER;
			}
			//自己失誤將自己的軍,不行的!!
			else if(ChessPane.isJiangJunState[color]){
				
				undo();
				//重新得到棋權
				ChessPane.pre_player = 3 - color;
				return BoardStateManager.CANNOT_PUT_CHESS;
			}
			//記錄雙方最后一步棋
			ChessPane.prePosition[color] = new Position(x, y);
			
			return BoardStateManager.CAN_PUT_CHESS;

		}
		return BoardStateManager.CANNOT_PUT_CHESS;
	}
	/*	首先意識到將軍方法的復雜性
	 * 1.自己動過棋子后,應該檢測包括該棋子在內的所以可以將對方軍的棋子是否已經將對方的軍
	 * 2.檢測動過棋子后,自己將軍的被將情況
	 * 3.更新被將狀態標志(對方和自己)
	 * 
	 * 解決方案,每個棋子只負責自己對老將的威脅
	 * 然后由表盤統一檢查(調用每個可能將軍的棋子)兩個老將的被將狀態
	 */
	public boolean isJiangJun(){

		boolean isOK = false;
		Set<Position>p = availableSteps();
		int index = 3 - color;			//得到對方將軍位置1->2 2->1
		isOK = p.contains(ChessPane.jiangPos[index]);
		//對方被將軍了咯
		if(isOK){
			Utilities.playSound("Wav/jiangjun.wav");
		
			//更新對方被將狀態
			ChessPane.isJiangJunState[index] = true;
		}
		
		return isOK;
	}
	
	public boolean undo(){
		if(this.pre_chesses_stack.isEmpty())
			return false;
		
		
		//得到最近進去的棋子
		ChessState state = this.pre_chesses_stack.pop();
		
		ChessPane.chesses[x][y] = state.chess;
		
		
		x = state.x;
		y = state.y;
		ChessPane.chesses[state.x][state.y] = this;
		
		ChessPane.isJiangJunState[color] = state.myBossSafe;
		ChessPane.isJiangJunState[3 - color] = state.hisBossSafe;
		
		//更新最后一步棋的位置
		ChessPane.prePosition[color] = new Position(x, y);
		return true;
	}

	abstract public void go(); 
	abstract public Set<Position> availableSteps();
	



}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久国产精品| 一区二区免费视频| 91精品国产综合久久小美女| 91成人免费网站| 欧美三级韩国三级日本一级| 欧洲精品在线观看| 欧美亚洲动漫另类| 91麻豆精品国产91久久久 | 亚洲乱码国产乱码精品精98午夜| 久久久99精品免费观看| 国产视频一区在线观看| 国产女人水真多18毛片18精品视频| 亚洲va韩国va欧美va精品| 亚洲国产精品久久人人爱| 偷窥少妇高潮呻吟av久久免费| 五月综合激情日本mⅴ| 国内成+人亚洲+欧美+综合在线| 国产一区二区三区香蕉| 成人av综合在线| 91免费在线视频观看| 欧美无乱码久久久免费午夜一区| 欧美人伦禁忌dvd放荡欲情| 精品国产一区二区亚洲人成毛片| 久久久久久免费| 中文字幕日韩一区二区| 视频一区国产视频| 国产麻豆午夜三级精品| 色噜噜狠狠色综合中国| 日韩欧美国产综合一区| 久久久国产精品不卡| 一区二区欧美精品| 国产一区二区按摩在线观看| 91小视频在线| 精品国产精品网麻豆系列| 中文字幕制服丝袜成人av| 午夜精品久久久久久久| 高清av一区二区| 欧美日韩极品在线观看一区| 国产视频在线观看一区二区三区 | 国产高清无密码一区二区三区| 懂色av一区二区夜夜嗨| 欧美精品精品一区| 国产精品美女久久福利网站| 日韩av成人高清| 色先锋资源久久综合| 日韩欧美第一区| 亚洲一区二区综合| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲成av人片一区二区三区| 国产精品一二三四| 91精品国产91久久久久久最新毛片 | 日韩高清在线电影| 国产九色sp调教91| 欧美性色黄大片手机版| 国产精品久久久爽爽爽麻豆色哟哟| 日韩精品一区第一页| 91热门视频在线观看| 国产女主播视频一区二区| 久久国产乱子精品免费女| 欧美亚洲国产一区二区三区va | 欧美久久久久久久久久| 亚洲人成网站色在线观看| 国产不卡免费视频| 国产日韩亚洲欧美综合| 国产一区二区在线观看视频| 日韩一级欧美一级| 免播放器亚洲一区| 日韩一区二区视频在线观看| 日本欧美大码aⅴ在线播放| 欧美久久免费观看| 日本美女视频一区二区| 91精品在线免费| 美国十次综合导航| 日韩欧美一级二级| 国产一区二区在线观看免费| 久久这里只精品最新地址| 国产成人av资源| 中文字幕制服丝袜成人av| 99久精品国产| 亚洲成人激情综合网| 91精品国产一区二区人妖| 精品一区二区三区在线播放| 欧美va在线播放| 国产成人av一区| 亚洲欧洲性图库| 欧美日韩一区高清| 青青草视频一区| 久久久精品免费观看| 99国产精品一区| 亚洲福利一二三区| 欧美大片日本大片免费观看| 国产乱人伦偷精品视频不卡| 国产性天天综合网| 色综合久久久久久久久| 午夜精品久久久久久久蜜桃app| 欧美一区二区三区不卡| 国产成人丝袜美腿| 亚洲电影在线免费观看| 欧美tk—视频vk| 91香蕉国产在线观看软件| 亚洲午夜av在线| 久久众筹精品私拍模特| 在线免费观看一区| 国产精品综合网| 亚洲自拍欧美精品| 久久影院午夜片一区| 91在线免费播放| 精品一区二区三区久久久| 亚洲精品视频在线| 久久久天堂av| 欧美精品色综合| 99精品视频中文字幕| 伦理电影国产精品| 一区二区三区四区激情| 国产欧美一区二区精品性色超碰 | 成人黄页在线观看| 性做久久久久久久久| 中文字幕一区二区日韩精品绯色| 91精品国产欧美一区二区| 成人免费av资源| 精品一区二区三区免费播放| 亚洲成人免费观看| 日韩美女啊v在线免费观看| 欧美大片一区二区| 欧美二区乱c少妇| 在线免费精品视频| 丁香桃色午夜亚洲一区二区三区| 奇米色一区二区三区四区| 亚洲猫色日本管| 亚洲欧洲精品一区二区精品久久久 | 91在线小视频| 国产精品乡下勾搭老头1| 亚洲一区二区综合| 一区二区三区 在线观看视频| 中文字幕第一区综合| 日韩情涩欧美日韩视频| 7777精品伊人久久久大香线蕉的 | 亚洲v中文字幕| 有坂深雪av一区二区精品| 国产日韩精品一区二区浪潮av| 欧美va亚洲va在线观看蝴蝶网| 91麻豆精品国产91久久久使用方法 | 欧美日韩国产综合久久 | 亚洲精品一区二区三区福利| 欧美色窝79yyyycom| 在线亚洲欧美专区二区| 91在线无精精品入口| 色素色在线综合| 欧美在线观看禁18| 制服丝袜中文字幕亚洲| 欧美精品精品一区| 欧美一级高清片| 久久伊99综合婷婷久久伊| 精品国产自在久精品国产| 26uuu亚洲综合色欧美 | 91视频在线看| 色噜噜狠狠一区二区三区果冻| 91国产丝袜在线播放| 欧美精品亚洲一区二区在线播放| 欧美人牲a欧美精品| 日韩女优视频免费观看| 久久精品日韩一区二区三区| 国产欧美日韩另类视频免费观看| 久久九九久久九九| 亚洲图片激情小说| 亚洲影视在线播放| 日本三级亚洲精品| 丰满少妇久久久久久久| 91视频你懂的| 777亚洲妇女| 国产片一区二区三区| 亚洲综合一区在线| 激情国产一区二区 | 精品一区二区在线免费观看| 国产精品亚洲成人| 在线免费观看视频一区| 欧美一区二区三区视频免费| 久久亚洲综合av| 伊人色综合久久天天人手人婷| 午夜影院在线观看欧美| 国产麻豆成人精品| 欧美亚洲动漫另类| 国产色91在线| 亚洲妇女屁股眼交7| 国产suv一区二区三区88区| 91国产视频在线观看| 久久综合九色综合97_久久久| 亚洲人123区| 国产精品一区二区在线观看网站| 色久综合一二码| 国产亚洲一区二区在线观看| 亚洲成人资源网| av日韩在线网站| 久久众筹精品私拍模特| 日韩国产在线观看| 在线中文字幕不卡| 国产精品天美传媒沈樵| 美女视频第一区二区三区免费观看网站| 成人午夜精品在线| 精品少妇一区二区三区免费观看|