我正在为我的学校测试“使用Java处理”中的代码。
我尝试创建游戏,但在绘制日食或加载图片时遇到问题。 我认为图片或日食是在我的游戏板下绘制的。.我不知道该如何解决。
我有一个用于游戏板的txt文件(按级别)。 一个例子:
110000000 000000031 000000000 1亿 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 ;
}
}
答案 0 :(得分:0)
它确实在游戏板下绘制。
检查loadCard功能。首先绘制椭圆/图像,然后绘制具有相同x / y的矩形,并在其顶部按ergo键。
稍微修改一下代码,它应该显示椭圆/图像
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 ;
}
}
既然您正在学习,请允许我给您2条提示:
loadStrings()每个级别只需发生一次。您不应将其放在draw()中,因为draw()在每一帧都被调用。它已经在安装程序中被调用,目前还可以。最终,您可以将其放在单独的函数中,并在新级别的开头调用该函数。
如果使用double for循环绘制游戏板,则可以将迭代器(int i和int j)用作x / y变量。可以使用rect(x, y, w, w);
代替rect(i*w, j*w, w, w);
。这样,您将可以管理更少的变量。