Week07:
本周内容為for回圈,陣列,mouseButton完成黑白棋游戲,相關processing網站介紹
1.畫棋盤
多條line指令畫出棋盤竪綫
void setup(){
size(500,500);
}
void draw(){
background(253,236,180);
line(50,50,50,450);
line(100,50,100,450);//從(100,50)畫到(100,450)
line(150,50,150,450);
line(200,50,200,450);
line(250,50,250,450);
line(300,50,300,450);
line(350,50,350,450);
line(400,50,400,450);
line(450,50,450,450);
}
2.for回圈畫棋盤
更短的程式碼畫出同樣的效果
void setup(){
size(500,500);
}
void draw(){
background(253,236,180);
for(int i=0;i<9;i++){
line(50+50*i,50,50+50*i,450);//用for有槼律的加上50的倍數
}
}
3.完成棋盤
加上橫綫完成棋盤
void setup(){
size(500,500);
}
void draw(){
background(253,236,180);
for(int i=0;i<9;i++){
line(50+50*i,50,50+50*i,450);
line(50,50+50*i,450,50+50*i);
}
}
p語言陣列的宣告,int [][]go
void setup(){
size(500,500);
}
///int [][]go=new int[9][9];
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};
void draw(){
background(253,236,180);
for(int i=0;i<9;i++){
line(50+50*i,50,50+50*i,450);
line(50,50+50*i,450,50+50*i);
}
}
5.陣列區分i,j
int [][]c={
{1,0,0},
{1,0,0},
{1,0,0}};
void setup(){
size(300,300);
}
void draw(){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(c[i][j]==0) fill(128);
else fill(255,0,0);
rect(j*100,i*100,100,100);//j是x軸坐標,i是y軸坐標
}
}
}
6.畫棋子用多重回圈畫出棋子,之後再做更準確的修改
void setup(){
size(500,500);
}
///int [][]go=new int[9][9];
int [][]go={
{0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};
void draw(){
background(253,236,180);
for(int i=0;i<9;i++){
line(50+50*i,50,50+50*i,450);
line(50,50+50*i,450,50+50*i);
}
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(go[i][j]==1){//go[][]陣列中為1的才會下棋子
int x=50+50*j, y=50+50*i;//棋子的x,y坐標
fill(255); ellipse(x,y,40,40);
}
}
}
}
7.准確滑鼠畫棋子加入mousePressed指令,完成簡單的下棋動作
void mousePressed(){
int i=(mouseY-25)/50;//更加準確
int j=(mouseX-25)/50;
go[i][j]=1;
}
8.黑白棋及清除mouseButton函式下黑白棋以及清除
void setup(){
size(500,500);
}
///int [][]go=new int[9][9];
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};
void draw(){
background(253,236,180);
for(int i=0;i<9;i++){
line(50+50*i,50,50+50*i,450);
line(50,50+50*i,450,50+50*i);
}
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(go[i][j]==1){//白棋
int x=50+50*j, y=50+50*i;
fill(255); ellipse(x,y,40,40);
}else if(go[i][j]==2){//黑棋
int x=50+50*j, y=50+50*i;
fill(0); ellipse(x,y,40,40);
}
}
}
}
void mousePressed(){
int i=(mouseY-25)/50;
int j=(mouseX-25)/50;
if(mouseButton==LEFT) go[i][j]=1;//左鍵下白棋
if(mouseButton==RIGHT) go[i][j]=2;//右鍵下黑棋
if(mouseButton==CENTER) go[i][j]=0;//中鍵清除
}
9.畫大圓openprocessing.org網站參考程式碼,畫出大圓
void setup(){
size(500,500);
}
void draw(){
for(float a=0;a<360;a++){
float x=250+250*cos(radians(a));
float y=250+250*sin(radians(a));
ellipse(x,y,4,4);
}
}
10.openprocessing.org有大量processing程式碼可供參考
11.互動畫圓
void setup(){
size(500,500);
}
void draw(){
background(128);
noFill();
for(float a=0;a<360;a++){
float x=250+mouseX*cos(radians(a));
float y=250+mouseY*sin(radians(a));
ellipse(x,y,mouseX,mouseY);
}
}
void setup(){
size(500,500);
}
void draw(){
background(255);
noFill();
stroke(mouseX,mouseY,255);
for(float a=0;a<360;a++){
float x=250+mouseX*cos(radians(a));
float y=250+mouseY*sin(radians(a));
ellipse(x,y,mouseX,mouseY);
}
}
沒有留言:
張貼留言