Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 05-03-2007, 16:22
Engadin
Avatar van Engadin
Engadin is offline
Ik ben voor school spaceinvaders aan het bouwen. Nu kreeg ik de volgende error als ik probeer een kogel aan te maken (door op spaciebalk te duwen).

Exception in thread "Thread-2" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:44 9)
at java.util.AbstractList$Itr.next(AbstractList.java:420)
at spaceinvaders.Game.update(Unknown Source)
at spaceinvaders.Game.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)

Ik denk dat het fout gaat omdat er op het ene punt variabele fire gelezen wordt, en op de andere plek geschreven. Zoiets zou je op moeten lossen met synchronize of lock ofzo, maar als ik dat doe:
PHP-code:
 regel 184
fire
.lock( );
if(
fire == 1)
      
bullets.add(ship.fire(cycle));
fire.unlock( ); 
spaceinvaders/Game.java:184: int cannot be dereferenced

Ik heb geen idee hoe ik dit op moet lossen.

Sources: http://merops.njn.nl/~vasco/java/spaceinvaders/
__________________
Jongeren - Natuur: http://www.njn.nl
     Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Advertentie
Oud 05-03-2007, 20:02
Verwijderd
Citaat:
Engadin schreef op 05-03-2007 @ 17:22 :
Ik ben voor school spaceinvaders aan het bouwen. Nu kreeg ik de volgende error als ik probeer een kogel aan te maken (door op spaciebalk te duwen).

Exception in thread "Thread-2" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:44 9)
at java.util.AbstractList$Itr.next(AbstractList.java:420)
at spaceinvaders.Game.update(Unknown Source)
at spaceinvaders.Game.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)

Ik denk dat het fout gaat omdat er op het ene punt variabele fire gelezen wordt, en op de andere plek geschreven. Zoiets zou je op moeten lossen met synchronize of lock ofzo, maar als ik dat doe:
PHP-code:
 regel 184
fire
.lock( );
if(
fire == 1)
      
bullets.add(ship.fire(cycle));
fire.unlock( ); 
spaceinvaders/Game.java:184: int cannot be dereferenced

Ik heb geen idee hoe ik dit op moet lossen.

Sources: http://merops.njn.nl/~vasco/java/spaceinvaders/
Je zou misschien het volatile keyword aan de variabele declaratie van fire kunnen toevoegen:
PHP-code:
private volatile int fire
Met citaat reageren
Oud 05-03-2007, 21:06
Engadin
Avatar van Engadin
Engadin is offline
Dankjewel!

Hmm, blijkbaar zat het toch niet met die fire. Het komt wss omdat ik dan eindelijk een kogel in mijn lijst met kogels heb. Waarschijnlijk hgaat het verwerken daarvan fout, maar ik zie absoluut niet hoe:
PHP-code:
           i=0;
          
it bullets.iterator();
          
Alien bullet;
          while(
it.hasNext())
          {
              
it.next();
              
bullet = (Alien)bullets.get(i);
              
bullet.mover();
              
Iterator at aliens.iterator();
              
int j 0;
              while(
at.hasNext())
              {
                  
at.next();
                  
alien = (Alien)aliens.get(j);
                  if(
this.sameplace(bullet.movetype,alien.movetype) && bullet.life && alien.life 0)
                  {
                      
bullet.life--;
                      
alien.life--;
                      
aliens.set(j,alien);
                  }
              }
              if(
this.sameplace(bullet.movetype,ship.movetype) && bullet.life 0)
              {
                  
bullet.life--;
                  
this.hit();
              }
              if(
bullet.life <= 0
                  
|| bullet.pos[0]
                  || 
bullet.pos[0] > 200
                  
|| bullet.pos[1]
                  || 
bullet.pos[1] > 500
              
)
              {
                  
bullets.remove(i);
              }
              else
              {
                  
bullets.set(ibullet);
                  
// teken
                  
buffer.setColor(Color.green);
                  
buffer.fillRect(bullet.pos[0]-1500-bullet.pos[1]-10110);
              }
          } 
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 06-03-2007, 18:51
Verwijderd
Kijk maar eens naar deze pagina:
http://java.sun.com/j2se/1.5.0/docs/...ArrayList.html

Hier staat onder andere:

Citaat:
The iterators returned by this class's iterator and listIterator methods are fail-fast: if list is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.
Met citaat reageren
Oud 07-03-2007, 16:41
Engadin
Avatar van Engadin
Engadin is offline
A fijn, dat was het dus. Heb dat nu gefixt. Het volgende probleem wat ik heb is dat mijn scheepje wegvliegt als ik op spacebar duw. Dit gebeurd ergens in Game.java:194. Hierna zijn opeens de variabelen van mijn scheepje (ship.pos) aangepast Iemand een idee hoe dit komt?
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 07-03-2007, 18:31
Verwijderd
Citaat:
Engadin schreef op 07-03-2007 @ 17:41 :
A fijn, dat was het dus. Heb dat nu gefixt. Het volgende probleem wat ik heb is dat mijn scheepje wegvliegt als ik op spacebar duw. Dit gebeurd ergens in Game.java:194. Hierna zijn opeens de variabelen van mijn scheepje (ship.pos) aangepast Iemand een idee hoe dit komt?
Lees dit maar eens:
http://www.cs.toronto.edu/~dianeh/tutorials/params/

Je geeft steeds een positie array door als parameter. Binnen de methodes van je applet worden deze posities veranderd omdat een array doorgegeven wordt als een verwijzing (of eigenlijk is het zelf een verwijzing). Tenminste, ik denk dat dat het punt is.

Laatst gewijzigd op 07-03-2007 om 20:29.
Met citaat reageren
Oud 07-03-2007, 19:32
Verwijderd
Citaat:
Engadin schreef op 07-03-2007 @ 17:41 :
A fijn, dat was het dus. Heb dat nu gefixt. Het volgende probleem wat ik heb is dat mijn scheepje wegvliegt als ik op spacebar duw. Dit gebeurd ergens in Game.java:194. Hierna zijn opeens de variabelen van mijn scheepje (ship.pos) aangepast Iemand een idee hoe dit komt?
Pass by reference.
Met citaat reageren
Oud 08-03-2007, 21:33
Engadin
Avatar van Engadin
Engadin is offline
Ben nu een stuk verder, http://merops.njn.nl/~vasco/java/Game.html, maar door het een of andere heb ik ruzie in Alien.java:76 , hij wil daar geen image object aanmaken:

lien.java:76: cannot find symbol
[javac] symbol : method getImage(java.net.URL)
[javac] location: class spaceinvaders.Alien
[javac] img = getImage(tmp);
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 09-03-2007, 00:25
Verwijderd
Citaat:
Engadin schreef op 08-03-2007 @ 22:33 :
Ben nu een stuk verder, http://merops.njn.nl/~vasco/java/Game.html, maar door het een of andere heb ik ruzie in Alien.java:76 , hij wil daar geen image object aanmaken:

lien.java:76: cannot find symbol
[javac] symbol : method getImage(java.net.URL)
[javac] location: class spaceinvaders.Alien
[javac] img = getImage(tmp);
getImage(URL) hoort bij de klasse Applet, Alien niet.

De Toolkit klasse heeft ook een getImage(URL) methode:
http://scv.bu.edu/Doc/Java/tutorial/...ingImages.html

Laatst gewijzigd op 09-03-2007 om 00:28.
Met citaat reageren
Oud 12-03-2007, 18:36
Engadin
Avatar van Engadin
Engadin is offline
Citaat:
12Trix schreef op 09-03-2007 @ 01:25 :
getImage(URL) hoort bij de klasse Applet, Alien niet.

De Toolkit klasse heeft ook een getImage(URL) methode:
http://scv.bu.edu/Doc/Java/tutorial/...ingImages.html
Hmm, door het een of andere krijg ik het niet werkend. Nu online er redelijk werkend: http://merops.njn.nl/~vasco/java/Spa...ders/Game.html
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Software & Hardware Limeware start op en valt weer uit
Maradinus
3 14-10-2007 01:01
Software & Hardware rare foutmelding
snoopy
22 22-05-2007 12:06
Huiswerkvragen: Exacte vakken First and Follow Sets.
Rob
115 22-01-2007 21:31
Software & Hardware [Java] probleem webcamuitlezing
niemand
0 02-12-2002 20:16
Software & Hardware [XP] Java in IE
Verwijderd
7 12-09-2002 08:33


Alle tijden zijn GMT +1. Het is nu 19:27.