◇象棋:
1. 先用迴圈畫棋盤線。
2. 將橫線分半,製造出楚河漢界。(上排從50~250,下排300~500)。
3.建立象棋陣列(board),把棋子編號。(ex: 1:將 2:士.....。記得要放在globe的區域)。
4.利用雙迴圈印出陣列象棋位置。(利用text做,記得text 左邊為y-直的,右邊為x-橫的) 。
5.在設定一個陣列String []name={"將","士","象","馬","車","包","卒"};為了能印出來中文。
6.設定id 為board陣列,當id為0時我們需要跳過他(因為不印東西)
7.將text的地方,改成name[id-1]。(減一是因為要確保兩個陣列數一樣,不然會出錯)。
8.之後再set地方設定字型(用PFont、createFont、textFont、textAlign)。
因為原本的字型是設定在左下角,所以我們要用textAlign(centet,center);改為中間。
◇象棋棋子:
1. 利用ellipse() 畫出圓形,因為字體會不在圓圈中間,所以text的y需要做修正(減3)。
2. 將board陣列新增例外一半棋,並且另外一半棋子的編號為負!!
3.再設定一個String 放入紅棋個中文。String []name2={"帥", "仕", "相","俥" ,"傌", "炮", "兵"};。
◇滑鼠控制棋子:
1. 設定一個void mousePressed()
2. 用雙迴圈的方式來找棋盤對應格子,再設定
if ( dist(mouseX,mouseY,50+j*50, 50+i*50)<20 ) //當滑鼠到那個圓圈的位置時。
(可用dist來測量位置!!)
///上面拿棋,下面放棋
3.設定void mouseReleased() (放開的指令),再設定一個int hand=0。
4.並設定位置int i= (mouseY+25-50)/50;//Y是50+j*50。去做換算
int j= (mouseX+25-50)/50;//X是50+j*50。
且設定好放棋子board[i][j]=hand;//放棋
hand=0; ///清空手
5.修改mousePressed()裡的程式。
hand=board[i][j];///拿棋
board[i][j]=0; ///清空那格棋
6.顯示手上的棋子。if(hand!=0) ellipse(mouseX,mouseY,40,40); (放draw裡的雙迴圈)
◇暗棋:
利用上面的程式進行修改
1.將board程式修改成4*8的大小,並修改裡面的值
2. void setup裡的設定整個搬過來,將size修改成(500,300)。String name也要複製過來
3.設立一個drawChess函式,修改原本的黑紅棋。
//翻牌。
4.創建一個陣列,先讓它顯示蓋牌(設定為0),在印 象棋的雙迴圈設定if - else,當我們點它,並陣列的值為0時,我們讓他為蓋牌,如果不是就印象棋。
5. 最後創建void mousePressed() ,並創建雙迴圈去做改變(這邊的位置都要+25才會正確)
沒有留言:
張貼留言