Avatar billede aligncenter Nybegynder
25. maj 2001 - 00:42 Der er 1 løsning

ingen dubletter

Jeg har et problem med at denne klasse skulle lave points der ikke overlapper hianden men det sker af og til at det sker hvad er der galt med koden, det er altså sådan at food ikke må have den samme point som wall

import java.util.*;
import java.awt.*;

public class MapBuilder    {

  private static Vector shared;


public static Vector buildLevel1()    {
   
    shared = new Vector();
    Vector res = new Vector();
    int i,j;
    for(i = 100,j = 50;j < 200 ;j += 5)    {
     
        Point p = new Point(i,j);
        Wall w = new Wall(p,0);
        res.add(w);
       
    }
   
    for(i = 200,j = 50;j < 200 ;j += 5)    {
     
        Point p = new Point(i,j);
        Wall w = new Wall(p,0);
        res.add(w);
        shared.add(w);
    }
   

  return res;
 
}



public static Vector buildLevel1FoodItems()      {

int[] range = new int[80];
Vector v = new Vector();

int i,j;
for(i=0,j = 0;j < range.length;i +=5,j++)    {
    range[j] = i;
    System.out.println(range[j]);
}
 
  int random = randomInt(0,80);
 
  i = 0;
  while (i < 5)  {
 
  if (i == -1)  {  i = 0;  }
 
  int x = range[randomInt(5,40)];
  int y = range[randomInt(5,40)];
 
  Point p = new Point(x,y);
 
  Food mapfood = new Food(p,10); 

 
  boolean found = false;
 
  for(j = 0;j < shared.size() && !found;j++)    {
   
    Wall w = (Wall)shared.elementAt(j);
   
   
    Point wallPoint = w.getPosition();
   
    if (p.x == wallPoint.x && p.y == wallPoint.y)  {
      found = true;
    }//end if
   
  }//end for
 
    if (!found)  {
      v.add(mapfood); i++; }
 
    else {
      i--; 
    }
 
 
 
}//end while
 
 
  return v;
 
}




public static int randomInt(int a, int b)    { 
 
  if (a > b) throw new IllegalArgumentException();
      if (a == b) return a;
      double x = Math.random();
      int n = a + (int)(x * (b - a + 1));
      if (n > b) n = b;
      return n;
  }//end randomInt
   

}//end mapBuilder
Avatar billede logical Nybegynder
25. maj 2001 - 09:09 #1
Jeg ved ikke lige om det gør dig nogen forskel, men i buildLevel01 laver du to stykker Wall objekter, nogle med x = 100 og nogle med x = 200. Det er kun dem, med x=200 som bliver added til din shared vector.

I buildLevel01FoodItems() sammenligner du Point p med points fra walls i din shared vector (som så kun er x = 200). Kan det være derfor du har problemet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester