2021年12月20日 星期一

常闇的程式之路week 13

啊...我的作品,該怎麼做......繪製敵人......OK,繪製子彈......OK,讓子彈飛......OK,判定黏住......OK,判定消除......OK。這麼多OK,但除了繪製一二點的東西出來之外其他的每個都像個高牆,還是一座比一座高的那種,算了,總之先搞個繪製出來吧,其餘別想了。

首先我需要一個二維陣列來繪製上方的敵人,然後一個一維陣列來畫子彈。先寫!
float x ,y;
float []bx = new float[1000];
float []by = new float[1000];
float []bvx = new float[1000];
float []bvy = new float[1000];
int []bullet = new int[1000];//子彈數量,最多1000個
int [][]enemy = new int[11][11];//敵人數量,最多11行
color[]c = {#FC8585 ,#FAFA86 ,#86FA9C ,#8696FA};//四種球色
int N = 0;//計算第幾顆子彈
int ballsize = 50;

void setup(){
  size(550 ,600);
  for(int i = 0 ;i < 10 ;i++){
    for(int j = 0 ;j < 6 ;j++){
      enemy[i][j] = int(random(4));//給予所有位址隨機整數以作為上色標準
    }
  }
  for(int k = 0 ;k < 1000 ;k++){
    bullet[k] = int(random(4));
    bvx[k] = 0;
    bvy[k] = 0;
    shoot[k] = false;
  }
}

void draw(){
  background(#242DFF);
  fill(#FFB624);rect(100 ,100 ,350 ,350);
  for(int i = 0 ;i < 10 ;i++){
    for(int j = 0 ;j < 6 ;j++){
      if(enemy[i][j] == 0) {fill(#FC8585);ellipse((i+1)*50 ,(j+1)*50 ,50 ,50);}
      if(enemy[i][j] == 1) {fill(#FAFA86);ellipse((i+1)*50 ,(j+1)*50 ,50 ,50);}
      if(enemy[i][j] == 2) {fill(#86FA9C);ellipse((i+1)*50 ,(j+1)*50 ,50 ,50);}
      if(enemy[i][j] == 3) {fill(#8696FA);ellipse((i+1)*50 ,(j+1)*50 ,50 ,50);}
      //x = (i+1)*50;y = (j+1)*50;
      //println(x ,y);
    }   
  }
  for(int i = 0 ;i < 10 ;i++){
    for(int j = 0 ;j < 6 ;j++){
      x = (i+1)*50;y = (j+1)*50;
    }   
  }
  for(int k = 0 ;k < 1000 ;k++){
    if(appear[k]==true){
      if(bullet[k] == 0) {fill(#FC8585);}
      if(bullet[k] == 1) {fill(#FAFA86);}
      if(bullet[k] == 2) {fill(#86FA9C);}
      if(bullet[k] == 3) {fill(#8696FA);}
      ellipse(bx[k],by[k] ,ballsize ,ballsize);

OK,這樣就能繪製我要的東西了,採用網路上的做法,把球用隨機變數上編號,然後指定什麼編號上什麼色,然後用迴圈把陣列畫出來,這樣就有基本的東西了!

沒有留言:

張貼留言