J'ai un problème avec mon code, j'essaie de rendre mon script spawn un différent chaque fois que je clique sur la souris, mais je reçois une erreur avec mon commutateur parce que j'utilise un aléatoire pour choisir un nombre différent à chaque fois. Je reçois cette erreur chaque fois que j'essaie d'exécuter le script et que je ne trouve pas l'erreur.Flotteur ne fonctionne pas avec le commutateur
Cannot switch on a value of type float. Only convertible int values, strings or enum variables are permitted
Certaines balises et noms de variables sont en danois car je suis danois.
int posX = 100;
int posX2 = 1820;
int dirX = 1;
int dirX2 = 1;
boolean drawforest = true;
int height = 1080;
int width = 1920;
//img = loadImage("BlueMorpho.png");
PImage img;
int storrelse = 15;
int storrelse2 = storrelse + 2;
float skift = random(0,2);
//setup()-metoden køres én gang, når sketchen startes
void drawBackground()
{
color e = color(135, 206, 235);
fill(e);
rect(960, 270, 1920, 560);
}
void setup()
{
size(1920, 1080);
rectMode(CENTER);
drawBackground();
color f = color(1, 142, 14);
fill(f);
rect(960, 820, 1920, 540);
//noLoop();
}
//draw()-metoden kører i et loop, indtil den stoppes
void draw()
{
switch(skift)
{
case 0:
img = loadImage("BlueMorpho.png");
break;
case 1:
img = loadImage("BlueMorpho2.png");
break;
default:
img = loadImage("BlueMorpho3.png");
break;
}
if (drawforest)
{
drawForest();
drawforest = false;
}
drawBackground();
drawCloud();
drawCloud2();
posX = posX+1;
posX2 = posX2-1;
if (posX>width-20 || posX<20)
{
dirX=-dirX;
}
if (posX2>width-20 || posX<20)
{
dirX2=-dirX2;
}
}
void drawForest()
{
for (int i = 0; i < 12; i++)
{
drawTree(random(55, 1865), 635 + 30*i);
}
}
void drawTree(float xx, float yy)
{
color c = color(139, 69, 19);
fill(c);
//noStroke();
rect(xx, yy+30, 50, 100);
color d = color(000, random(25, 100), 000);
fill(d);
//noStroke();
ellipse(xx, yy-30, 125, 100);
color g = color(100, 0, 0);
fill(g);
ellipse(random(xx-50, xx+50), random(yy-50, yy+18), 10, 10);
}
void drawCloud()
{
color h = color(255, 255, 255);
fill(h);
ellipse(posX, 150, 100, 50);
//posX += random(50,1920);
noStroke();
}
void drawCloud2()
{
color h = color(0, 0, 0);
fill(h);
ellipse(posX2, 200, 100, 50);
//posX += random(50,1920);
}
void tegnSommerfugl(float xx, float yy)
{
image(img, xx, yy, width/storrelse2, height/storrelse);
}
void mouseClicked()
{
tegnSommerfugl(mouseX,mouseY);
}
Vous essayez de changer la variable « skift » qui est de type à flotteur . Peut-être changer «skift» à un int? – khriskooper
Le problème de base est déclaration flottant skift, mais difficile d'imaginer ce que vous voulez au niveau du design.Peut-être devrait être int, mais pas sûr –
Le compilateur a raison, vous ne pouvez pas basculer en fonction de float, il doit être int, chaîne ou enum. –