Das Code-Snippet, das Sie gepostet haben, ist ein wenig verwirrend. Zunächst wird die Syntax nicht ganz richtig ist, vielleicht gemeint Sie etwas wie folgt aus:
class Enemy extends SpaceShip {
PImage img;
Enemy(int xpos, int ypos) {
x = xpos;
y = ypos;
//assuming sprite is inherited from SpaceShip ?
sprite = new String[5];
sprite[0] = "1011101";
sprite[1] = "0101010";
sprite[2] = "1111111";
sprite[3] = "0101010";
sprite[4] = "1000001";
//you are loading an image, but I see no use of the sprite
img = loadImage("image.png");
}
void draw() {
image(img, x, y);
}
}
Es ist unklar, warum Sie ein separates Bild geladen, wenn Sie das Binärkette Muster als Bild angezeigt werden soll. Wenn ich es richtig verstehe, möchten Sie die binäre Zeichenfolgendarstellung in eine PImage konvertieren.
können Sie direkt den PImage Zugang pixels
, so dass Sie direkt Ihr Bild so schreiben könnte:
PImage sprite = new PImage(7,5,RGB);
sprite.pixels = new int[]{color(255),color(0),color(255),color(255),color(255),color(0),color(255),
color(0),color(255),color(0),color(255),color(0),color(255),color(0),
color(255),color(255),color(255),color(255),color(255),color(255),color(255),
color(0),color(255),color(0),color(255),color(0),color(255),color(0),
color(255),color(0),color(0),color(0),color(0),color(0),color(255)};
sprite.updatePixels();
noSmooth();
image(sprite,0,0,70,50);
Hinweis color(255)
verwendet wird, wo man es erwarten würde 1 und color(0)
ist, wo Sie 0.
erwarten würden
Alternativ können Sie die String[]
und jedes Zeichen jeder Zeile zu setzen Pixel eines PImage Traverse:
PImage fromBinaryStrings(String[] sprite){
int h = sprite.length;
int w = sprite[0].length();
PImage result = new PImage(w,h,RGB);
for(int y = 0 ; y < h; y++){
String row = sprite[y];
for(int x = 0; x < w; x++){
if(row.charAt(x) == '1'){
result.set(x,y,color(255));
}else{
result.set(x,y,color(0));
}
}
}
return result;
}
Basisdemo:
void setup(){
noSmooth();
scale(10);
Enemy e = new Enemy(0,0);
e.draw();
}
PImage fromBinaryStrings(String[] sprite){
//determine height: number of lines
int h = sprite.length;
//determine width: length of a line
int w = sprite[0].length();
//create an image
PImage result = new PImage(w,h,RGB);
//traverse rows
for(int y = 0 ; y < h; y++){
//access row string
String row = sprite[y];
//traverse cols
for(int x = 0; x < w; x++){
//check each char's value and set the color accordingly
if(row.charAt(x) == '1'){
result.set(x,y,color(255));
}else{
result.set(x,y,color(0));
}
}
}
return result;
}
class SpaceShip{
int x,y;
String[] sprite;
}
class Enemy extends SpaceShip {
PImage img;
Enemy(int xpos, int ypos) {
x = xpos;
y = ypos;
sprite = new String[5];
sprite[0] = "1011101";
sprite[1] = "0101010";
sprite[2] = "1111111";
sprite[3] = "0101010";
sprite[4] = "1000001";
img = fromBinaryStrings(sprite);
}
void draw() {
image(img, x, y);
}
}
Bitte geben Sie eine [mcve] an, die wir ausführen können. Beachten Sie, dass dies nicht Ihre ganze Skizze sein sollte, nur ein Beispiel. Wenn Sie zum Beispiel nur ein Bild anzeigen möchten, brauchen wir keinen Code, um den Player zu bewegen oder Kugeln zu schießen. Bitte posten Sie auch den genauen Text aller Fehler, die Sie erhalten. Fügen Sie bei Bedarf Screenshots hinzu. –