有同學問祖馬和arras.io要怎麼做
首先先做arras.io
首先做大砲和砲管
//week07_01_arras01_background_fill_stroke_ellipse_rect_line void setup() { size(500, 400); } float x= 250, y=200; void draw() { background(215, 184, 200); fill(167,167,175); stroke(110,110,113); strokeWeight(4); rect(240,160,20,20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(x, y, 55, 55); line(x, y, mouseX, mouseY); }
讓砲管能旋轉
運用cos sin atan旋轉
//week07_02_arras02_atan_cos_sinvoid setup() { size(500, 400); } float x= 250, y=200; void draw() { background(215, 184, 200); float dx = mouseX - x, dy = mouseY - y; float a = atan2(dy, dx); strokeWeight(20); line(x, y, x+cos(a)*40, y+sin(a)*40); fill(167,167,175); stroke(110,110,113); strokeWeight(4); rect(240,160,20,20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(x, y, 55, 55); }
加入myTank(){}用translate和rotate//week07_03_arras03_atan_angle_rotate_translate void setup() { size(500, 400); } float x= 250, y=200; void draw() { background(215, 184, 200); float dx = mouseX - x, dy = mouseY - y; float a = atan2(dy, dx); myTank(x, y, a); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
加入keycode和重畫背景就可以用上下左右移動了
//week07_04_arras04_background_for_line_line_void_keyPressed_keyCode void setup() { size(500, 400); } void keyPressed(){ if(keyCode==RIGHT) x += 1; if(keyCode==LEFT) x -= 1; if(keyCode==UP) y -= 1; if(keyCode==DOWN) y += 1; } float x= 250, y=200; void draw() { background(219); stroke(210); strokeWeight(1); for(int i=0; i<30; i++){ line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mouseX - x, dy = mouseY - y; float a = atan2(dy, dx); line(x, y, mouseX, mouseY); myTank(x, y, a); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
//week07_05_arras05_corret_move_translate_translate_mx_my void setup() { size(500, 400); } void keyPressed(){ if(keyCode==RIGHT) x += 1; if(keyCode==LEFT) x -= 1; if(keyCode==UP) y -= 1; if(keyCode==DOWN) y += 1; } float x= 250, y=200; void draw() { background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for(int i=0; i<30; i++){ line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); line(x, y, mx, my); myTank(x, y, a); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
\
加入vx vy讓上下左右更順
//week07_06_arras06_vx_vy_void_keyPressed_void_keyReleased_void_draw void setup() { size(500, 400); } void keyPressed() { if (keyCode==RIGHT) vx += 1; if (keyCode==LEFT) vx -= 1; if (keyCode==UP) vy -= 1; if (keyCode==DOWN) vy += 1; } void keyReleased() { if (keyCode==LEFT || keyCode==RIGHT) vx = 0; if (keyCode==UP || keyCode==DOWN) vy = 0; } float x= 250, y=200, vx=0, vy=0; void draw() { x+=vx; y+=vy; background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for (int i=0; i<30; i++) { line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); line(x, y, mx, my); myTank(x, y, a); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
發射子彈
//week07_06_arras06_vx_vy_void_keyPressed_void_keyReleased_void_draw void setup() { size(500, 400); } void keyPressed() { if (keyCode==RIGHT) vx += 1; if (keyCode==LEFT) vx -= 1; if (keyCode==UP) vy -= 1; if (keyCode==DOWN) vy += 1; } void keyReleased() { if (keyCode==LEFT || keyCode==RIGHT) vx = 0; if (keyCode==UP || keyCode==DOWN) vy = 0; } float x= 250, y=200, vx=0, vy=0; void draw() { x+=vx; y+=vy; background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for (int i=0; i<30; i++) { line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); angle = a; line(x, y, mx, my); pushMatrix(); myTank(x, y, a); popMatrix(); if(bulletVX!=0 && bulletVY!=0){ bulletX += bulletVX; bulletY += bulletVY; ellipse(bulletX, bulletY, 20, 20); } } float angle, bulletX=0, bulletY=0, bulletVX=-1, bulletVY=0; void mousePressed(){ bulletX = x; bulletY = y; bulletVX = cos(angle); bulletVY = sin(angle); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
加入矩陣增加子彈
但最多只能100發
//week08_08_arras08_array void setup() { size(500, 400); } void keyPressed() { if (keyCode==RIGHT) vx += 1; if (keyCode==LEFT) vx -= 1; if (keyCode==UP) vy -= 1; if (keyCode==DOWN) vy += 1; } void keyReleased() { if (keyCode==LEFT || keyCode==RIGHT) vx = 0; if (keyCode==UP || keyCode==DOWN) vy = 0; } float x= 250, y=200, vx=0, vy=0; void draw() { x+=vx; y+=vy; background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for (int i=0; i<30; i++) { line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); angle = a; line(x, y, mx, my); pushMatrix(); myTank(x, y, a); popMatrix(); for (int i=0; i<bulletN; i++) { bulletX[i]+=bulletVX[i]; bulletY[i]+=bulletVY[i]; ellipse(bulletX[i], bulletY[i], 20, 20); } } float angle; int bulletN = 0; float [] bulletX=new float[100]; float [] bulletY=new float[100]; float [] bulletVX=new float [100]; float [] bulletVY=new float [100]; void mousePressed() { int i= bulletN; bulletX[i] = x; bulletY[i]= y; bulletVX[i] = cos(angle); bulletVY[i] = sin(angle); bulletN++; } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
解決100會當機的問題
讓他回到50
//week08_09_arras09_recycle_bullet_move_right_to_left void setup() { size(500, 400); } void keyPressed() { if (keyCode==RIGHT) vx += 1; if (keyCode==LEFT) vx -= 1; if (keyCode==UP) vy -= 1; if (keyCode==DOWN) vy += 1; } void keyReleased() { if (keyCode==LEFT || keyCode==RIGHT) vx = 0; if (keyCode==UP || keyCode==DOWN) vy = 0; } float x= 250, y=200, vx=0, vy=0; void draw() { x+=vx; y+=vy; background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for (int i=0; i<30; i++) { line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); angle = a; line(x, y, mx, my); pushMatrix(); myTank(x, y, a); popMatrix(); for (int i=0; i<bulletN; i++) { bulletX[i]+=bulletVX[i]; bulletY[i]+=bulletVY[i]; ellipse(bulletX[i], bulletY[i], 20, 20); } } float angle; int bulletN = 0; float [] bulletX=new float[100]; float [] bulletY=new float[100]; float [] bulletVX=new float [100]; float [] bulletVY=new float [100]; void mousePressed() { int i= bulletN; bulletX[i] = x; bulletY[i]= y; bulletVX[i] = cos(angle); bulletVY[i] = sin(angle); bulletN++; if (bulletN==100) { for (int k=0; k<50; k++) { bulletX[i] = bulletX[k+50]; bulletY[i] = bulletY[k+50]; bulletVX[i] = bulletVX[k+50]; bulletVY[i] = bulletVY[k+50]; } bulletN=50; } println(bulletN); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
讓子彈慢慢消失
//week08_09_arras09_recycle_bullet_move_right_to_left void setup() { size(500, 400); } void keyPressed() { if (keyCode==RIGHT) vx += 1; if (keyCode==LEFT) vx -= 1; if (keyCode==UP) vy -= 1; if (keyCode==DOWN) vy += 1; } void keyReleased() { if (keyCode==LEFT || keyCode==RIGHT) vx = 0; if (keyCode==UP || keyCode==DOWN) vy = 0; } float x= 250, y=200, vx=0, vy=0; void draw() { x+=vx; y+=vy; background(219); translate(-x, -y); translate(width/2, height/2); float mx= mouseX+x-width/2, my = mouseY+y-height/2; ellipse(mx, my, 8, 8); stroke(210); strokeWeight(1); for (int i=0; i<30; i++) { line(0, i*30, 500, i*30); line(i*30, 0, i*30, 500); } float dx = mx - x, dy = my - y; float a = atan2(dy, dx); angle = a; line(x, y, mx, my); pushMatrix(); myTank(x, y, a); popMatrix(); for (int i=0; i<bulletN; i++) { bulletX[i]+=bulletVX[i]; bulletY[i]+=bulletVY[i]; ellipse(bulletX[i], bulletY[i], 20, 20); } } float angle; int bulletN = 0; float [] bulletX=new float[100]; float [] bulletY=new float[100]; float [] bulletVX=new float [100]; float [] bulletVY=new float [100]; void mousePressed() { int i= bulletN; bulletX[i] = x; bulletY[i]= y; bulletVX[i] = cos(angle); bulletVY[i] = sin(angle); bulletN++; if (bulletN==100) { for (int k=0; k<50; k++) { bulletX[i] = bulletX[k+50]; bulletY[i] = bulletY[k+50]; bulletVX[i] = bulletVX[k+50]; bulletVY[i] = bulletVY[k+50]; } bulletN=50; } println(bulletN); } void myTank(float x, float y, float a) { translate(x, y); rotate(a); fill(167, 167, 175); stroke(110, 110, 113); strokeWeight(4); rect(20, -10, 20, 20); fill(204, 102, 156); stroke(125, 84, 105); strokeWeight(3); ellipse(0, 0, 55, 55); }
沒有留言:
張貼留言