簡體   English   中英

處理 Java - 繪制日食或加載圖片的問題

[英]Processing Java - Problem with draw an eclipse or load pic

我正在為我的學校測試用 Java 處理的代碼。

我嘗試創建一個游戲,但在繪制日食或加載圖片時遇到問題。 我想我的游戲板下有圖畫或日食..我不知道如何解決它。

我有一個游戲板的 txt 文件(按級別)。 一個例子 :

110000000 000000031 000000000 100000000 000000000 000000000 200000001

請幫幫我謝謝

int cols, rows, w, x, y,level;
String lines[];
PImage flag;

void setup() {
  size(460,360);
  cols = 9;
  rows = 7;
  w = 50 ;
  x= 0;
  y = 0;
  level = 1;
  lines = loadStrings("../../data/niveau"+level+".iwk");
  flag = loadImage("../../data/flag.png");
  ellipseMode(CORNER);
}

void draw() {
  String lines[]= loadStrings("../../data/niveau"+level+".iwk");
  loadCard(cols,rows,w,x,y,lines,flag);
}

void loadCard(int cols, int rows, int w, int x,int y,String lines[],PImage flag) {

  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {

      if(lines[i].charAt(j) == '1'){
        fill(156,  158,  162);
      }
      else if(lines[i].charAt(j) == '2'){
        fill(225,  169,  26) ;
        ellipse(x,y,w/2,w/2);
      }
      else if(lines[i].charAt(j) == '3'){
        image(flag,x,y,w/2,w/2);

      }else {
        fill(23,  159,  215);
      }

      rect(x, y, w, w);
      x = x + w ;
    }
    y = y + w ;
    x = 0 ;
  }
}

它確實是在游戲板下繪制的。

檢查 loadCard 功能。 首先繪制橢圓/圖像,然后在其頂部繪制具有相同 x / y 的矩形。

A 稍微修改了您的代碼,它應該顯示橢圓/圖像

void loadCard(int cols, int rows, int w, int x,int y,String lines[],PImage flag) {

  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {

      //draw default so ellipse / img has a background
      fill(23,  159,  215);
      rect(x, y, w, w);

      //draw other cases on top of default    
      if(lines[i].charAt(j) == '1'){
        fill(156,  158,  162);
        rect(x, y, w, w);
      }
      else if(lines[i].charAt(j) == '2'){
        fill(225,  169,  26) ;
        ellipse(x,y,w/2,w/2);
      }
      else if(lines[i].charAt(j) == '3'){
        image(flag,x,y,w/2,w/2);
      }
      x = x + w ;
    }
    y = y + w ;
    x = 0 ;
  }
}

既然你在學習,請允許我給你兩個提示:

loadStrings() 每個級別只需要發生一次。 你不應該把它放在 draw() 中,因為 draw() 每一幀都會被調用。 它已經在設置中調用,現在很好。 最終你可以把它放在一個單獨的函數中,並在一個新的關卡開始時調用這個函數。

如果您使用雙循環來繪制游戲板,您可以使用迭代器(int i 和 int j)作為 x/y 變量。 而不是rect(x, y, w, w); 你可以使用rect(i*w, j*w, w, w); . 這樣,您將需要管理的變量更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM