Salve ragazzi, come da titolo non riesco a trovare un modo per eliminare gli oggetti in varie liste senza incorrere in mille errori![]()
Allora vi espongo meglio il problema: ho 6 linkedlist: fucilieri, dragoni, cannoni (sia umani che ia)
ed ogni volta che si scontrano alcuni di loro, ahimè, dovranno perire nel combattimento. Per fare ciò ho voluto, ad ogni eliminazione dell'oggetto incriminante, decrementare l'indice con cui scorro le liste, ma ahimè per me ( xD ) non esce mai da questi cicli che ho creato...
Per maggiore chiarezza vi posto il metodo.
la x e la y sono rispettivamente la vita mia e quella del pc che, se mancasse l'esercito di una delle due parti, il risultato verrà sottratto alla parte senza esercito, quindi verranno decrementati i punti vita.
codice:public void battaglia(LinkedList <fucilieri> fu,LinkedList <fucilieri> fia,LinkedList <dragoni> du,LinkedList <dragoni> dia,LinkedList <cannoni> cu,LinkedList <cannoni> cia,int x,int y) { sommau=0; sommaia=0; for(int i=0;i<fu.size();i++) { sommau+=fu.get(i).getAttacco(); } for(int i=0;i<fia.size();i++) { sommaia+=fia.get(i).getAttacco(); } for(int i=0;i<du.size();i++) { sommau+=du.get(i).getAttacco(); } for(int i=0;i<dia.size();i++) { sommaia+=dia.get(i).getAttacco(); } for(int i=0;i<cu.size();i++) { sommau+=cu.get(i).getAttacco(); } for(int i=0;i<cia.size();i++) { sommaia+=cia.get(i).getAttacco(); } if(sommau>sommaia) { int i=0,cont=0,cont1=0; int risultato=sommau-sommaia; while(risultato>0) { if(cont==0) { if(fia.size()==0) { ++cont1; } else if(risultato>fia.get(i).getVita()) { risultato=risultato-fia.get(i).getVita(); fia.get(i).setVita(-fia.get(i).getVita()); fia.remove(i); --i; } else if(risultato<fia.get(i).getVita()) { fia.get(i).setVita(-risultato); risultato=0; if(fia.get(i).getVita()<=0) { fia.remove(i); --i; } } else if(risultato==fia.get(i).getVita()) { fia.get(i).setVita(-risultato); risultato=0; fia.remove(i); --i; } cont++; i++; } if(cont==1) { if(dia.size()==0) { ++cont1; } else if(risultato>dia.get(i).getVita()) { risultato=risultato-dia.get(i).getVita(); dia.get(i).setVita(-dia.get(i).getVita()); dia.remove(i); --i; } else if(risultato<dia.get(i).getVita()) { dia.get(i).setVita(-risultato); risultato=0; if(dia.get(i).getVita()<=0) { dia.remove(i); --i; } } else if(risultato==dia.get(i).getVita()) { dia.get(i).setVita(-risultato); risultato=0; dia.remove(i); --i; } cont++; i++; } if(cont==2) { if(cia.size()==0) { ++cont1; } else if(risultato>cia.get(i).getVita()) { risultato=risultato-cia.get(i).getVita(); cia.get(i).setVita(-cia.get(i).getVita()); cia.remove(i); --i; } else if(risultato<cia.get(i).getVita()) { cia.get(i).setVita(-risultato); risultato=0; if(cia.get(i).getVita()<=0) { cia.remove(i); --i; } } else if(risultato==cia.get(i).getVita()) { cia.get(i).setVita(-risultato); risultato=0; cia.remove(i); --i; } cont=0; i++; } if(cont1==3) { y=y-risultato; } } } else if(sommau<sommaia) { int cont=0,i=0,cont1=0; int risultato=sommaia-sommau; while(risultato>0) { if(cont==0) { if(fu.size()==0) { ++cont1; } else if(risultato>fu.get(i).getVita()) { risultato=risultato-fu.get(i).getVita(); fu.get(i).setVita(-fu.get(i).getVita()); fu.remove(i); --i; } else if(risultato<fu.get(i).getVita()) { fu.get(i).setVita(-risultato); risultato=0; if(fu.get(i).getVita()<=0) { fu.remove(i); --i; } } else if(risultato==fu.get(i).getVita()) { fu.get(i).setVita(-risultato); risultato=0; fu.remove(i); --i; } i++; ++cont; } if(cont==1) { if(du.size()==0) { ++cont1; } else if(risultato>du.get(i).getVita()) { risultato=risultato-du.get(i).getVita(); du.get(i).setVita(-du.get(i).getVita()); du.remove(i); --i; } else if(risultato<du.get(i).getVita()) { du.get(i).setVita(-risultato); risultato=0; if(du.get(i).getVita()<=0) { du.remove(i); --i; } } else if(risultato==du.get(i).getVita()) { du.get(i).setVita(-risultato); risultato=0; du.remove(i); --i; } i++; ++cont; } if(cont==2) { if(cia.size()==0) { ++cont1; } else if(risultato>cu.get(i).getVita()) { risultato=risultato-cu.get(i).getVita(); cu.get(i).setVita(-cu.get(i).getVita()); cu.remove(i); --i; } else if(risultato<cu.get(i).getVita()) { cu.get(i).setVita(-risultato); risultato=0; if(cu.get(i).getVita()<=0) { cu.remove(i); --i; } } else if(risultato==cu.get(i).getVita()) { cu.get(i).setVita(-risultato); risultato=0; cu.remove(i); --i; } i++; ++cont; } if(cont==4) { if(cont1==3) { x=x-risultato; } else cont=0; } } } }

Rispondi quotando

