2022年10月16日 星期日

Week_05 2022.10.03

1. 象棋

(1) 先有棋盤 - 等差級數

 # 等差級數:500,100,150,200,250,300,350,400,450 

# 用 for(int x=50;x<=450;x+=50)  

---------------------------------- github ----------------------------------


(2) 畫楚河漢界、棋子 - 陣列

int [][]board={

  {4,5,3,2,1,2,3,5,4},

  {0,0,0,0,0,0,0,0,0},

  {0,6,0,0,0,0,0,0,0},

  {1,0,1,0,1,0,1,0,1},

};//1:將 2:士 3:象 4:車 5:馬 6:卒

  for(int i=0;i<4;i++){

    for(int j=0;j<9;j++){

      text(board[i][j],50+j*50,50+i*50);

    }

  }

---------------------------------- github ----------------------------------


(3) 棋子改成象棋字 - String

String[]name={"將","士","象","車","馬","包","卒"};

void setup(){

 size(500,500); 

 PFont font =createFont("標楷體",30);

 textFont(font);

 textAlign(CENTER,CENTER);

}

 for (int i=0;i<4;i++){

   for (int j=0;j<9;j++){

      int id =board[i][j];  //陣列 1 開始

      if(id==0) continue;   //陣列回去繼續

      text(name[id-1],50+j*50,50+i*50);

   }

 }

---------------------------------- github ----------------------------------


2. 象棋 2.0

(1) 畫紅黑象棋

  {0, 0, 0, 0, 0, 0, 0, 0, 0},    //紅色

  {-7, 0,-7, 0,-7, 0,-7, 0,-7},

  {-0,-6, 0, 0, 0, 0, 0,-6, 0},

  {0, 0, 0, 0, 0, 0, 0, 0, 0},

  {-4,-5,-3,-2,-1,-2,-3,-5,-4},

String[]name2={"帥", "仕", "相", "俥", "傌", "炮", "兵"};

      if(id>0){

         fill(255);

         ellipse(50+j*50, 50+i*50,40,40);

         fill(0);

         text(name[id-1], 50+j*50, 50+i*50-3);

      }else if(id<0){

         fill(255);

         ellipse(50+j*50, 50+i*50,40,40);

         fill(255,0,0);

         text(name2[-id-1], 50+j*50, 50+i*50-3);

      }


---------------------------------- github ----------------------------------


(2) 移動象棋 - MousePressed()

void mousePressed(){

  for(int  i=0;i<10;i++){

    for(int j=0;j<9;j++)

    if(dist(mouseX,mouseY,50+j*50,50+i*50)<20){

      board[i][j]=1;

    }

  }

---------------------------------- github ----------------------------------


(3) 拿起放下象棋 - 四捨五入

 if(handChess!=0) ellipse(mouseX,mouseY,40,40);

int handChess=0;

void mousePressed(){

  for(int  i=0;i<10;i++){

    for(int j=0;j<9;j++)

    if(dist(mouseX,mouseY,50+j*50,50+i*50)<20){

      handChess= board[i][j];

      board[i][j]=0;  //棋盤上的棋子不見了

    }  //把不見的棋子拿在手上

  }

}

void mouseReleased(){// 另一種四捨五入  

   int i=(mouseY+25-50)/50;  //y 是50+i*50

   int j=(mouseX+25-50)/50;  //x是50+j*50

   board[i][j]=handChess;  //手上的棋子放回棋盤

   handChess=0;  //手上的棋子清空

---------------------------------- github ----------------------------------

 

2. 暗棋

(1) 格子比較少

 

---------------------------------- github ----------------------------------

 

沒有留言:

張貼留言