正在处理 Java - 绘制日食或加载图片时出现问题
Processing Java - Problem with draw an eclipse or load pic
我正在为我的学校测试 Processing with 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() 在每一帧都会被调用。它已经在设置中被调用,现在没问题。最终你可以把它放在一个单独的函数中,在新的关卡开始时调用这个函数。
如果使用双 for 循环绘制游戏板,则可以将迭代器(int i 和 int j)用作 x/y 变量。您可以使用 rect(i*w, j*w, w, w);
而不是 rect(x, y, w, w);
。这样您需要管理的变量就会更少。
我正在为我的学校测试 Processing with 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() 在每一帧都会被调用。它已经在设置中被调用,现在没问题。最终你可以把它放在一个单独的函数中,在新的关卡开始时调用这个函数。
如果使用双 for 循环绘制游戏板,则可以将迭代器(int i 和 int j)用作 x/y 变量。您可以使用 rect(i*w, j*w, w, w);
而不是 rect(x, y, w, w);
。这样您需要管理的变量就会更少。