2022年10月3日 星期一

尖🦉筆記-week05

 ◇象棋

  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={"帥", "仕", "相","俥" ,"傌", "炮", "兵"};。

  4.設定if-else,當id大於0時,設定為白底黑字。
                           當id小於0時,設定為白底紅字。

 ◇滑鼠控制棋子

  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才會正確)

沒有留言:

張貼留言