Werte im Array verschieben

  • 9 Antworten
  • Neuester Beitrag
Diskutiere Werte im Array verschieben im Android App Entwicklung im Bereich Betriebssysteme & Apps.
kukuk

kukuk

App-Anbieter (kostenlos)
Hallo alle zusammen,

ich habe ein kleines Problem und zwar bekomme ich folgendes nicht hin.
ich habe ein Array mit [9] Inhalten
Code:
spieler_kartenwert_integer
dieser int array enthält zahlen von 1 bis 54. Dabei ist der [0] nicht belegt und immer leer.



Ich willl jetzt eine Schiebe Funktion einbauen, wo vorher die SPieler, die schieben möchte dies in einem Dialog bestätigt haben.

Boolean Array [9] (8) Die 0 wird wieder nicht genutzt namens
Code:
spieler_schiebt
. Dieser Wert wird auf True gesetzt wenn z.b Spieler1 & Spieler 2 & Spieler 7 schieben wollen.
Code:
spieler_schiebt[1] = true;
spieler_schiebt[2] = true;
spieler_schiebt[7] = true;
Die Werte sollen dann im Uhrzeiger Sinn verschoben werden.
Das heißt SPieler2 bekommt die Werte von Spieler 1, Spieler 7 von Spieler 2 und Spieler1 von Spieler 7


Hat jemand einen Idee wie ich das realisieren kann?????
 
Z

Zoopa

Stammgast
Ich hab bei mir mal einen kleinen Test gemacht, scheint zu funktionieren.

Aus
wird
So bin ich vorgegangen: (Ist etwas vereinfacht, aber die Grundidee stimmt etwa):
Code:
public int findeNaechstenSchieber() {
  gehe durch array {
    wenn nächsten schieber gefunden {
      return spielerNummer;
    }
  }

  //wenn kein Spieler gefunden -> -1
  return -1;
}

public void schiebeKarten() {
  Gibt es jemanden, der schieben will? {
    solange mehr schieber verfügbar {
      karten vom letzten zum neuen spieler kopieren;
      findeNaechstenSchieber();
    }
  }
}
Wenn du trotzdem nicht weiter kommst, kann ich dann auch meinen kompletten Code zeigen. Aber ich will dir ja erstmal die Chance geben, es selber zu versuchen :tongue:
 
kukuk

kukuk

App-Anbieter (kostenlos)
Ich habe mir da jetzt was gecodet, aber irgendwo muss da noch ein Fehler drin sein.

Kann da vielleicht einer mal drüberschauen?

Code:
public void variable_werte_verschieben(){

    
    
    
    for (int x = 1; x < Global.spieler_schiebt.length; x++){
        Global.schieben_werte_zwischenspeichern[x] = Global.spieler_kartenwert_integer[x];    
    }
    
    for (int x = 1; x < Global.spieler_schiebt.length; x++){
        if (Global.spieler_schiebt[x]){
            findenaechstenschieber(x);
            if (kommt_noch_ein_schieber){
                kommt_noch_ein_schieber = false;
            Global.spieler_kartenwert_integer[return_wert] = Global.schieben_werte_zwischenspeichern[x];
            x =return_wert + 1;
            }else{
                Global.spieler_kartenwert_integer[erster_schieber] = Global.schieben_werte_zwischenspeichern[letzter_schieber];
            }
        }
    }
            
            
    
    for (int x = 1; x < Global.spieler_kartenwert_integer.length; x++){
        Global.spieler_kartenwert[x] = String.valueOf(Global.spieler_kartenwert_integer[x]); 
    }        
            


}

public void findenaechstenschieber(int spielernummer){
    for (int x = spielernummer + 1; x < Global.spieler_schiebt.length; x++){
        if (Global.spieler_schiebt[x]){
            letzter_schieber = x;
        schieber_zaehler += 1;
        if (schieber_zaehler == 1){
            erster_schieber = x;
        }
        
            return_wert = x;
        kommt_noch_ein_schieber = true;    
            return;
        
        }
    }
}
 
markus.tullius

markus.tullius

Experte
Warum so kompliziert? Das geht auch mit einer ArrayList (wenn schon kein Queue):

Code:
ArrayList <Integer> list = new ArrayList<Integer>();

list.add(1);list.add(2);list.add(3); //usw.
  
// Beginn      
int helpValue = list.get(0); 
        
list.remove(0); 
list.add(helpValue); 

// fertig
Mit 3 Schritten. ;)

Dafür sind Listen da! Arrays sind unter Java nicht immer die erste Wahl.
 
Zuletzt bearbeitet:
kukuk

kukuk

App-Anbieter (kostenlos)
Also ich habe das jetzt mal mit deinem Array List durchprobiert in verschiedenen kombinationen, aber der setzt das ja einfach am ende den ersten Eintrag......

Der muss ja aus 1 2 3 4 5 6 7 8
8 1 2 3 4 5 6 7
machen.......


oder auch wenn weniger zahelen sind. z.b. 2 5 8 -> 8 2 5


oder kann man bei der list irgendwie sagen den ersten Eintrag in x ändern?
 
S

swordi

Lexikon
und wo ist das problem

du hast ne arraylist mit x items

dann nimmst item an der stelle x-1 und setzt es auf die stelle 0 - schon ist das von ganz hinten ganz vorne


markus hat dir oben ja sogar schon den code hingetippt - musst nur noch an die richtige stelle kopieren.
 
A

amfa

Experte
Oder noch besser guck dir mal die LinkedList an die implementiert Deque
Deque (Java Platform SE 7 )

Eigentlich ziemlich das was du evtl brauchen kannst. ^^
 
markus.tullius

markus.tullius

Experte
Da ich vermute, dass es ohne array nicht geht, das ganze mal verkehrt herum: ;)
Code:
ArrayList <Integer> list = new ArrayList<Integer>();

list.add(1);list.add(2);list.add(3); //usw.
          
// Beginn  
        
int helpValue = list.get(list.size()-1); //letztes Element der liste
                
list.remove(list.size()-1); // entferne letztes Element
list.add(helpValue,0); // füge Element an der erste Stelle ein.

// fertig
Ich denke, du solltest einfach mal ein Javabuch durcharbeiten: z.B. Galileo Computing :: Java ist auch eine Insel - index
Und mit etwas einfacheren als ein Spiel anfangen.
 
kukuk

kukuk

App-Anbieter (kostenlos)
Alles klar Leute ich habs endlich hin bekommen. Man was eine Tortur. Eigentlich total einfach aber ich stand total auf dem Schlauch. Jetzt ist die app vom Grundgerüst fertig.

Ich danke euch 1000 mals
 
Ähnliche Themen - Werte im Array verschieben Antworten Datum
5
Ähnliche Themen
Array in Java verarbeiten