Android象棋游戲開發(fā)之--游戲規(guī)則

源碼下載

棋盤棋子繪制完成后,接下來玩家要移動(dòng)棋子開始與機(jī)器對(duì)弈训措。
那么如何判斷當(dāng)前棋子移動(dòng)合法?

棋盤中所有的位置坐標(biāo)映射為一個(gè)二維數(shù)組效果圖莉测,藍(lán)色數(shù)字代表數(shù)組維數(shù)


棋盤二維數(shù)組表示圖

黑帥移動(dòng)規(guī)則:不能出九宮格据过,走直線,每步只能走一格

黑方九宮格

黑士移動(dòng)規(guī)則:不能出九宮格鞠绰,走斜線,每步只能走一格

黑方九宮格

黑象移動(dòng)規(guī)則:不能過河飒焦,走“田”字蜈膨,象眼處沒有棋子

黑象移動(dòng)規(guī)則圖

馬移動(dòng)規(guī)則:馬走"日",馬蹄處沒有棋子
車移動(dòng)規(guī)則:走直線
兵移動(dòng)規(guī)則:走直線,不能后退牺荠,過河前翁巍,只能向前,過了河休雌,可左右移動(dòng)灶壶,每步只能走一格
炮移動(dòng)規(guī)則:走直線,隔棋吃棋子

了解完棋子移動(dòng)規(guī)則杈曲。
我們用代碼來實(shí)現(xiàn)如上規(guī)則
首先要把坐標(biāo)轉(zhuǎn)變?yōu)閿?shù)組的維數(shù)

//二維數(shù)組
int[][] qizi;
//起始位置維數(shù)
int fromY, fromX;
//目的位置維數(shù)
int toY, toX;
// 起始位置是什么棋子
int moveChessID = qizi[fromX][fromY] ;
//黑帥
moveChessID == 1;
if (toY > 2 || toX < 3 || toX > 5 ) {//出了九宮格
    return false;
} else  if ((Math.round(toX-fromX) + Math.round(toY - fromY)) == 1) {
//只能走一格
    return true;
} else {
    return false;
}
//黑士
moveChessID == 5;
if (toY > 2 || toX < 3 || toX > 5) { //出了九宮格
    return false;
} else if (Math.round(toX - fromX) == 1 && Math.round(toY - fromY) == 1) {
//走斜線驰凛,直走一格
    return true;
} else {
    return false;
}
//黑象
moveChessID == 6;
if (toY > 4) {//過河了
    return false;
} else if (Math.roung(toY - fromY) == 2 && Math.round(toX - fromX) == 2) {
//走"田"字
    int centerX = ( toY + fromY) / 2;
    int centerY = (toX + fromX) / 2;
    if (qizi[centerY][centerX] != 0) {// 象眼處有棋子
        return false;
    }
    return true;
} else {
     return false;
}
//黑馬
moveChessID == 3;
if (Math.round(toY - fromY) == 2 && Math.round(toX - fromX) == 1) {
    int centerY = (toY + fromY) / 2;
    if (qizi[centerY][fromX] != 0) {//馬蹄處有棋子
        return false;
    }
    return true;
} else if (Math.round(toY - fromY) == 1 && Math.round(toX - fromX) == 2) {
    int centerX = (toX + fromX) / 2;
    if (qizi[fromY][centerX] != 0) {//馬蹄處有棋子
        return false;
    }
    return true;
} else {
    return false;
}
//車
moveChessID == 2 || moveChessID == 9;
if (Math.round(toY - fromY) > 0 && Math.round(toX - fromX) == 0) {
//走的橫豎線
    if (toY > fromY) {
        for (int i = fromY + 1 ; i < toY; i++) {
            if (qizi[i][fromX] != 0) {
                return false;
            }
        }
    } else {
        for (int i = toY - 1 ; i > fromY; i--) {
            if (qizi[i][fromX] != 0) {
                return false;
            }
        }
    }
    return true;
} else if (Math.round(toX - fromX) > 0 && Math.round(toY - fromY) == 0) {
//走的橫線
    if (toX > fromX) {
        for (int i = fromX + 1 ; i < toX; i++) {
            if (qizi[fromY][i] != 0) {
                return false;
            }
        }
    } else {
        for (int i = toX - 1 ; i > fromX; i--) {
            if (qizi[fromY][i] != 0) {
                return false;
            }
        }
    }
    return true;
} else {
    return false;
}
//黑士
moveChessID == 7;
if ((toY - fromY) < 0 ) {
//后退
    return false;
} else if (fromY > 4) {//過了河
    if () {
    }
} else {//沒過河
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市担扑,隨后出現(xiàn)的幾起案子恰响,更是在濱河造成了極大的恐慌,老刑警劉巖涌献,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚宦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡洁奈,警方通過查閱死者的電腦和手機(jī)间唉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來利术,“玉大人呈野,你說我怎么就攤上這事∮∪” “怎么了被冒?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)轮蜕。 經(jīng)常有香客問我昨悼,道長(zhǎng),這世上最難降的妖魔是什么跃洛? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任率触,我火速辦了婚禮,結(jié)果婚禮上汇竭,老公的妹妹穿的比我還像新娘葱蝗。我一直安慰自己穴张,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布两曼。 她就那樣靜靜地躺著皂甘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悼凑。 梳的紋絲不亂的頭發(fā)上偿枕,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音户辫,去河邊找鬼渐夸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寸莫,可吹牛的內(nèi)容都是我干的捺萌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼膘茎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼桃纯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起披坏,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤态坦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棒拂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伞梯,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年帚屉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谜诫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡攻旦,死狀恐怖喻旷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牢屋,我是刑警寧澤且预,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站烙无,受9級(jí)特大地震影響锋谐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜截酷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一涮拗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦多搀、人聲如沸歧蕉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赌髓,卻和暖如春从藤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锁蠕。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工夷野, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荣倾。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓悯搔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舌仍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妒貌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 快速小測(cè)試:如何重寫下面的語句灌曙?要求不使用條件判斷語句交換兩個(gè)常量的值。 if (x == a) x= b; el...
    Colay閱讀 845評(píng)論 0 0
  • 1.走棋和吃子 ·走棋 對(duì)局時(shí)节芥,由執(zhí)紅棋一方先行在刺,以后雙方輪流各走一著,直到分出勝負(fù)或走成和局為止头镊。走棋一方將棋子...
    上下筆尖子閱讀 562評(píng)論 0 5
  • LabVIEW是一種程序開發(fā)環(huán)境蚣驼,由美國(guó)國(guó)家儀器(NI)公司研制開發(fā),類似于C和BASIC開發(fā)環(huán)境相艇,但是LabVI...
    VIFamily閱讀 783評(píng)論 0 3
  • 高大爺和她男人跑了颖杏,她打算回老家做個(gè)英語老師 。任我努力的擠著淚水厂捞,吞著委屈输玷,她頭也不回的走了,沒有些許留戀~ 平...
    馬大花閱讀 264評(píng)論 0 0
  • 下午孩子一到家就給我電話靡馁,怕媽媽擔(dān)心欲鹏,感賞懂得體諒媽媽的乖巧孩子。 孩子一邊吃飯臭墨,一邊跟我分享...
    記得祝福閱讀 220評(píng)論 0 6