投稿したコードスニペットはちょっと混乱します。あなたがイメージとしてバイナリ文字列のパターンを表示したいときに別の画像をロードしている理由は不明だ
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);
}
}
: はまず、構文は、おそらくあなたは、このような何かを意味し、非常に適切ではありません。正しく理解すれば、バイナリ文字列表現をPImageに変換する必要があります。あなたは0
を期待したいところ1と
color(0)
が期待
color(255)
が使用されている
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);
注意:あなたが直接このようなあなたのイメージを書き込むことができるように
あなたは直接、PImageのpixels
にアクセスすることができます
あるいは、String[]
とPImageの画素を設定するために、各列の各文字を横断することができる:
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;
}
基本デモ:
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);
}
}
実行可能な[mcve]を入力してください。これはあなたの全体のスケッチではないことに注意してください。たとえば、イメージを表示することを求めているだけの場合、プレーヤを移動させたり、弾丸を弾くためのコードは必要ありません。また、取得したエラーの正確なテキストを投稿してください。必要に応じてスクリーンショットを含めます。 –