Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

1

06.02.2011, 23:20

[Java] Verfluchte Arrays!

Ich hoffe wir haben hier ein paar kompetente Javaleute...ich beiss schon in die Tastatur.... folgendes: ich wollte für den Android eine Rubics Cube app entwicklen. es scheitert aber am drehen. Drehe ich eine Bestimmte achse (ich habe zum testen derzeit die z-Achse den vordersten Dreier), so muss ich die einzelnen subwürfel drehen (das klappt) und im array (welches ein array aus 27 cube objekten ist) entsprechend objekte vertauschen, da sie ihre positionen gewechselt haben.

Ich debugge zurzeit, in dem ich nur 3 subwürfel rendere ( das sind die vorderen drei in der ersten zeile). dann sieht man wunderbar drehungen um die z-achse. das witzige daran sind folgende fakten:
1) wenn ich nur die grafik rotiere, klappt es super
2) wenn ich nur im array tausche, sieht es auch super (90° gedreht ohne grafischen aufwand, andere 3 würfel sind die ersten drei im array) aus

wird aber beides nacheinander durchgeführt, würfelt er die positionen der würfel nach dem zweiten mal drehen durcheinander... und sind teilwise an ganz andern plätzen... hier der code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public void RotateZ(int index)
    {
        if (!cubes[0+index*9].inMotion())
        {
            
            //0 1 2
            //3 4 5
            //6 7 8
            
            //2 5 8
            //1 4 7
            //0 3 6

            Cube[] round = new Cube[]
            {
                cubes[0+index*9],
                cubes[1+index*9],
                cubes[2+index*9],
                cubes[3+index*9],
                cubes[4+index*9],
                cubes[5+index*9],
                cubes[6+index*9],
                cubes[7+index*9],
                cubes[8+index*9],
            };
            
            cubes[0+index*9] = round[2];
            cubes[1+index*9] = round[5];
            cubes[2+index*9] = round[8];
            cubes[3+index*9] = round[1];
            cubes[5+index*9] = round[7];
            cubes[6+index*9] = round[0];
            cubes[7+index*9] = round[3];
            cubes[8+index*9] = round[6];
            
            cubes[0+index*9].rotateZ(90);
            cubes[1+index*9].rotateZ(90);
            cubes[2+index*9].rotateZ(90);
            cubes[3+index*9].rotateZ(90);
            cubes[4+index*9].rotateZ(90);
            cubes[5+index*9].rotateZ(90);
            cubes[6+index*9].rotateZ(90);
            cubes[7+index*9].rotateZ(90);
            cubes[8+index*9].rotateZ(90);
        }
    }


das index kann auf 0 gesetzt werden, es entscheidet nur, welche der 3 reihen auf der aktuellen achse gedreht werden sollen.

irgend jemand eine idee?!

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

2

07.02.2011, 14:48

Meine erste Frage wäre jetzt, wofür das *9 ist!?

3

07.02.2011, 15:00

Mich wundert was das ganze mit Java zu tun hat ^^ vor dem gleichen Problem würdest du doch höchstwahrscheinlich auch mit C++ stehen?
Schau dir mal an wie es hier gelöst wurde: http://www.schubart.net/rc/

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

09.02.2011, 12:20

ich habe eine lösung in c++, die ich halt in java umgeschrieben habe und dort funktioniert es ja spannenderweise ;) daher schieb ich es erstmal "dumm" auf java. danke für den link ich schaus mir mal an!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

09.02.2011, 16:36

Also auf so einer Ebene verhält sich Java eigentlich ziemlich gleich, wie C++. ;)

Werbeanzeige