Hi. Im making a little game where you eat yourself big against your enemy player (its a 2p game). To win over your enemy, you have to be bigger than the enemy and collide with the enemy (kinda like agario). I just cant seem to remove the enemy from the world when a collision with greater size happens. I'll attach both the player and player2 code, hope one of you geniusses can help a fellow programmer out :D
Oh, just realized all my comments is in danish, bear with me ;)
import greenfoot.*;
public class Blob extends Actor
{
//Koordinat ints
private int x;
private int y;
//Størrelses int, opdateres i koden når blobFood bliver spist
public int size = 30;
//Ints anvendt til at holde styr på antal blobFoods i spillet
private int blobIndex = 0;
private int maxBlobs = 30;
//Billede initalizers
private GreenfootImage baseImage;
private Color randomColor = new Color(Greenfoot.getRandomNumber(255), Greenfoot.getRandomNumber(255), Greenfoot.getRandomNumber(255), 255);
private GreenfootImage img = new GreenfootImage(size, size);
//BlobFood array, brugt til at lave et bestemt antal blobFoods
private BlobFood[] blobFood = new BlobFood[maxBlobs];
//Blob konstruktor, anvendt til billede indstillinger
public Blob(){
baseImage = new GreenfootImage(size, size);
//Sæt farven til initial, en variabel der i starten af spillet bliver sat til en tilfældig RGB værdi med en gennemsigtighed på 255
baseImage.setColor(randomColor);
//Metode brugt til at lave en cirkel med størrelsen 'size'
baseImage.fillOval(0, 0,size,size);
}
//Metode til at finde et tilfældigt tal mellem min og max
public int getRandomNumberBorder(int min,int max){
int number = Greenfoot.getRandomNumber(max-min+1);
return number+min;
}
//Metode anvendt i blobworld, til for loop
public int getMaxBlobs(){
return maxBlobs;
}
//Metode til at returnere Blob størrelse
public int getSizeBlob(){
return size;
}
//Metode til at tilføje en blobFood et tilfædigt sted mellem x(200-800) og y(0-700)
public void addBlob(){
//Hvis antallet af max blobFood ikke er blevet overskrevet, tilføj blobfood
if(maxBlobs > blobIndex){
//initaliser nyt blobFood fra array med positionen blobIndex
blobFood[blobIndex] = new BlobFood();
//tilføj blobFood[blobIndex] til den nuværende verden med et billede fra setShape metoden
getWorld().addObject(blobFood[blobIndex],getRandomNumberBorder(200, 800),Greenfoot.getRandomNumber(700));
blobFood[blobIndex].setImage(blobFood[blobIndex].setShape());
//Tilføj 1 til blobIndex int'en
blobIndex += 1;
}
}
//metode til at returnere et billede med tilfældig farve
public GreenfootImage setShape(){
img.setColor(randomColor);
img.fillOval(0, 0,size,size);
return img;
}
//Metoden til at se om man har kollideret med en blobFood og derfor 'spiser' den
public void eat(){
//Hvis afstanden mellem Blob og et object af BlobFood klassen er inden for den variable størrelse size
if(getObjectsInRange(size, BlobFood.class).size() > 0)
{
//Fjern det kolliderede BlobFood objekt fra klassen
getWorld().removeObjects(getObjectsInRange(size, BlobFood.class));
//Forøg variablen size
size += 2;
//Skaler cirklen til en ny størrelse
GreenfootImage image = new GreenfootImage(baseImage);
image.scale(size, size);
setImage(image);
}
}
//Bevægelses metode
public void movement(){
//Skaf objektets nuværende koordinater
x = getX();
y = getY();
//Nedenstående if statements checker om man har trykket på en tast og rykker de nuværende koordinater med 1, hvis knappen er trykket
if (Greenfoot.isKeyDown("left")){
x -= 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("right")){
x += 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("up")){
y -= 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("down")){
y += 1;
setLocation(x,y);
}
}
//Act metoden der køres konstant af Greenfoot det her kører movement og eat metoderne og andet kode
public void act()
{
movement();
eat();
//for loop int
int i;
//Hvis mængden af blobFood i verden kommer under 10, skal der indsættes en ny mængde af blobFood med addBlob metoden
if(getWorld().getObjects(BlobFood.class).size() < 10){
blobIndex = 0;
for(i = 0; i < maxBlobs; i++){
addBlob();
}
}
i = 0;
if(getWorld().getObjects(Blob2.class).get(0).size < size){
getWorld().removeObjects(getObjectsInRange(size, Blob2.class));
}
}
}
import greenfoot.*;
public class Blob2 extends Actor
{
//Koordinat ints
private int x;
private int y;
//Størrelses int, opdateres i koden når blobFood bliver spist
public int size = 30;
//Billede initalizers
private GreenfootImage baseImage;
private Color randomColor = new Color(Greenfoot.getRandomNumber(255), Greenfoot.getRandomNumber(255), Greenfoot.getRandomNumber(255), 255);
private GreenfootImage img = new GreenfootImage(size, size);
//Blob2 konstruktor, anvendt til billede indstillinger
public Blob2(){
baseImage = new GreenfootImage(size, size);
//Sæt farven til initial, en variabel der i starten af spillet bliver sat til en tilfældig RGB værdi med en gennemsigtighed på 255
baseImage.setColor(randomColor);
//Metode brugt til at lave en cirkel med størrelsen 'size'
baseImage.fillOval(0, 0,size,size);
}
//Metode til at finde et tilfældigt tal mellem min og max
public int getRandomNumberBorder(int min,int max){
int number = Greenfoot.getRandomNumber(max-min+1);
return number+min;
}
//Metode til at returnere Blob størrelse
public int getSizeBlob2(){
return size;
}
//metode til at returnere et billede med tilfældig farve
public GreenfootImage setShape(){
img.setColor(randomColor);
img.fillOval(0, 0,size,size);
return img;
}
//Metoden til at se om man har kollideret med en blobFood og derfor 'spiser' den
public void eat(){
//Hvis afstanden mellem Blob og et object af BlobFood klassen er inden for den variable størrelse size
if(getObjectsInRange(size, BlobFood.class).size() > 0)
{
//Fjern det kollidere BlobFood objekt fra klassen
getWorld().removeObjects(getObjectsInRange(size, BlobFood.class));
//Forøg variablen size
size += 2;
//Skaler cirklen til en ny størrelse
GreenfootImage image = new GreenfootImage(baseImage);
image.scale(size, size);
setImage(image);
}
}
//Bevægelses metode
public void movement(){
//Skaf objektets nuværende koordinater
x = getX();
y = getY();
//Nedenstående if statements checker om man har trykket på en tast og rykker de nuværende koordinater med 1, hvis knappen er trykket
if (Greenfoot.isKeyDown("a")){
x -= 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("d")){
x += 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("w")){
y -= 1;
setLocation(x,y);
}
if (Greenfoot.isKeyDown("s")){
y += 1;
setLocation(x,y);
}
}
//Act metoden der køres konstant af Greenfoot det her kører movement og eat metoderne
public void act()
{
movement();
eat();
}
}
