Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con algoritmo di eliminazione LinkedList

    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;
    				}
    			}
    		}
    	}
    F. M.

  2. #2
    Forse è meglio leggere il sorgente qui.. xD

    http://pastebin.com/mTWPm3FL
    F. M.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Spasmo Etereo
    Forse è meglio leggere il sorgente qui.. xD

    http://pastebin.com/mTWPm3FL
    No, basterebbe usare i tag CODE, come espressamente richiesto dal Regolamento interno.

    Uso dei tag CODE:

    [CODE]
    Poi si incolla il codice, indentato
    [/CODE]


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    già viene complicato a leggere tutto il programma...
    un pò di debug?
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Scusami per il non uso del tag Rimedierò nelle prossime risposte.

    Per quanto riguarda il post. Ho risolto
    F. M.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.