Ciao a tutti!
Sto lavorando per creare un’interfaccia per un gioco in modo che si attivo (cliccando su Play Game inizia il gioco), questo è il codice che dovrebbe risultare all’interno del gioco:
int state = 0;
PImage mondrian;
PFont font1;
void setup() {
size(600, 600);
mondrian = loadImage("mondrian_black.jpg");
image(mondrian, 0, 0, 600, 600);
font1 = loadFont("BerlinSansFB-Reg-48.vlw");
}
void draw() {
fill(#FFFFFF);
textFont(font1);
textSize(30);
text ("Mondrian Revolution", 255,280);
textSize(20);
text("Play Game!", 255, 330);
text("Info Game", 255, 360);
}
A questo codice sto provando ad applicare una classe bottone con questo codice:
void setup() {
size(600, 600);
}
class Bottone {
float [] posizione = new float [2];
float size;
int etichetta;
PImage mondrian = loadImage("mondrian_black.jpg");
boolean [] isPressed = new boolean [2];
// font?
// costruttore
Bottone (float x, float y, float s) {
posizione[0] = x;
posizione[1] = y;
size = s;
}
// metodo
void display() {
image(mondrian, posizione[0], posizione[1]);
}
}
L’unica cosa è che non ho molta manualità con le classi, le sto iniziando ad usare da poco… :piangere:
Qualcuno saprebbe come continuare con la “classe bottone”?
Grazie per chiunque voglia darmi una mano
1 Like
Hm, not sure why you have boolean [] isPressed = new boolean [2];
in the class.
When the reason is that you later want to show 2 buttons, that would not be the right approach.
Because the class represents only ONE button, not all of them.
Instead you would have boolean isPressed; in the class (it’s only for one button) and have an array of buttons before setup().
It is also unusual to use an array for x,y: float [] posizione = new float [2];
better use x,y or btnX,btnY or later even a PVector
(see reference).
for class / objects see https://www.processing.org/tutorials/objects
Chrisir
2 Likes
here is my version
In this version I pass a text (String) to the class. So the buttons have different texts.
You can also load an image in setup() and pass it to the class (instead of the text).
When you say mondrian = loadImage("mondrian_black.jpg");
inside the class, all buttons would have the same image.
Chrisir
int state = 0;
// PImage mondrian;
PFont font1;
Bottone b1;
Bottone b2;
void setup() {
size(600, 600);
//mondrian = loadImage("mondrian_black.jpg");
//image(mondrian, 0, 0, 600, 600);
font1 = createFont("BerlinSansFB-Reg-48.vlw", 14);
textFont(font1);
textSize(30);
b1 = new Bottone(100, 100, 80, "Play Game!");
b2 = new Bottone(100, 170, 80, "Info Game");
background(111);
}
void draw() {
if (state==0) {
background(111);
textSize(20);
fill(#FFFFFF);
text ("Mondrian Revolution", 255, 280);
b1.display();
b2.display();
}
}
void mousePressed() {
if (b1.checkMouse()) println ("1");
if (b2.checkMouse()) println ("2");
}
// ================================================================
class Bottone {
float [] posizione = new float [2];
float size;
int etichetta;
PImage mondrian;
boolean isPressed = false;
// font?
String s1;
// costruttore
Bottone (float x, float y,
float s, String s1_) {
posizione[0] = x;
posizione[1] = y;
size = s;
s1=s1_;
mondrian = loadImage("mondrian_black.jpg");
}
// metodo
void display() {
noFill();
stroke(255);
rect(posizione[0], posizione[1],
200, 40);
fill(255);
text(s1,
posizione[0]+13, posizione[1]+27);
}
boolean checkMouse() {
return
mouseX>posizione[0] &&
mouseX<posizione[0] + 200 &&
mouseY > posizione[1] &&
mouseY < posizione[1] + 40;
}//func
}//class
//
2 Likes
OR you just pass the file name
for the image to the costruttore (not the image itself)
here “m1.jpg” and “m2.png”
Clicking the buttons
- the clicking works in both Sketches (this is in
mousePressed()
) - and gives println() output. You would have to change the state
number here (in mousePressed()
) and act on state
in draw().
Chrisir
int state = 0;
PFont font1;
Bottone b1;
Bottone b2;
void setup() {
size(600, 600);
font1 = createFont("BerlinSansFB-Reg-48.vlw", 14);
textFont(font1);
textSize(30);
b1 = new Bottone(10, 100, 180, "Play Game!", "m1.jpg"); // jpg
b2 = new Bottone(10, 299, 180, "Info Game", "m2.png"); // PNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
background(111);
}
void draw() {
if (state==0) {
background(111);
textSize(20);
fill(#FFFFFF);
text ("Mondrian Revolution", 255, 280);
b1.display();
b2.display();
}
}
void mousePressed() {
if (b1.checkMouse()) println ("1");
if (b2.checkMouse()) println ("2");
}
// ================================================================
class Bottone {
float [] posizione = new float [2];
float size;
int etichetta;
PImage mondrian;
boolean isPressed = false;
// font?
String string1;
// costruttore
Bottone (float x, float y,
float size_,
String s1_,
String imageName_) {
posizione[0] = x;
posizione[1] = y;
size = size_;
string1=s1_;
mondrian = loadImage(imageName_);
}// costruttore
// metodo
void display() {
noFill();
stroke(255);
rect(posizione[0], posizione[1],
size, size);
image(mondrian,
posizione[0], posizione[1],
size, size);
fill(0);
textSize(30);
text(string1,
posizione[0]+13, posizione[1]+27);
}// metodo
// metodo
boolean checkMouse() {
return
mouseX > posizione[0] &&
mouseX < posizione[0] + size &&
mouseY > posizione[1] &&
mouseY < posizione[1] + size;
} // metodo
//
}//class
//
2 Likes
Grazie!!!
Non so come ringraziarti, ti ringrazio anche per la spiegazione mi hai aiutato davvero tanto!
Un abbraccio
1 Like