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

Azasel

unregistriert

1

12.07.2016, 10:44

[Gelöst] Wie gehe ich das Problem richtig an ?

Guten Tag liebe Community,

Ich bin gerade dabei ein einfaches Programm mit Javascript zu schreiben wo man euren eingegebenen Namen durch einen bzw, 2 Array/s navigieren kann.

Hier ist erstmal 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var spieler = prompt("Geben Sie Ihren Namen ein");
alert("Spieler: 2, Weg: 1, Leere: 0.\n Map{grass",spieler,"grass","grass","leere}");
var weg1 = ["grass",spieler,"grass","grass","leere"];
var weg2 = ["leere","leere","grass","grass","grass"];
var player = 1;
var unten = false;

function game(){
    //oben
while(player != 4 && unten == false){
    
    var wegeingabe = prompt("Die Map: Weg1:  " + weg1+"\n                 Weg2:  "+weg2);
    if(wegeingabe == "rechts"){
        weg1[player +1] = spieler;
        weg1[player] = "grass";
        player ++;
        
    }
    if(wegeingabe == "links"){
        weg1[player] = "grass";
        weg1[player -1] = spieler;
        player --;
        
    }
    if(wegeingabe == "unten"){
        weg1[player] = "grass";
        weg2[player] = spieler;
        
        unten = true;
        break;
        
    }
}
//unten
while(unten == true){
    
    
    var wegeingabe = prompt("Die Map: Weg1:  " + weg1+"\n                 Weg2:  "+weg2);
    if(wegeingabe == "rechts"){
        weg2[player +1] = spieler;
        weg2[player] = "grass";
        player ++;
        
    }
    if(wegeingabe == "links"){
        weg2[player] = "grass";
        weg2[player -1] = spieler;
        player --;
        
    }
    if(player == 0 || player == 1 ){
        unten = false;
        break;
        
    }
    
    if(wegeingabe == "oben"){
        
        weg2[player] = "grass";
        weg1[player] = spieler;
        
        unten = false;
        //break;    
    }
}
}
function nochmal(){
    alert( spieler+" in die Leere gefallen");
    player = 1;
    weg1 = ["grass",spieler,"grass","grass","leere"];
    weg2 = ["leere","leere","grass","grass","grass"];
}

while(true){
game();
nochmal();
}


1. Als erstes gibt man einen Namen ein.
2. Mit den 4 Befehlen "links","rechts","oben","unten" navigierst du deinen Namen durch die Arrays
3. Wenn dein Name auf einen Array[Leere] trifft wird die navigier Schleife beendet und startet nochmal von vorne.
4. Bevor die Schleife von vorne startet, werden alle Werte zurückgesetzt.

Jetzt das Problem:

Wenn man versucht seinen Namen von Weg2 wieder zu Weg1 zu führen indem man "oben" eingibt wird die 2. Schleife natürlich abgebrochen aber die 1. Schleife wird gar nicht mehr aufgerufen.
Ich denke mal ihr wisst jetzt was ich mit dem Fehler meine. ^^
Die 1. Schleife der Funktion soll wieder aktiv werden nach verlassen der 2. Schleife.


nebensächlich

Das war jezt die Frage und ich weiss man sollte nur eine pro Thema stellen, aber es mir geht da nur eine kleine weitere Frage durch den Kopf, nehmlich ob man das Array mit GUI Grafiken ersetzten kann.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Azasel« (19.07.2016, 13:38)


fraggr

unregistriert

2

12.07.2016, 14:50

Gerade um "im Code zurückzugehen" verwendet man ja Schleifen, du müsstest also eine weitere Schleife um deine zwei bestehenden Schleifen packen. An der Stelle muss ich jedoch anmerken, dass dein Programm, für das was es macht, bereits ziemlich verworren und umständlicher als nötig formuliert ist. Eigentlich brauchst du in der ganzen game-Funktion nur eine einzige Schleife, die sich beendet, sobald der Spieler in die Leere fällt. Versuch doch mal in möglichst wenig Worten auszudrücken, was genau du erreichen willst, und programmiere es dann genau so.

Wenn du das Array in deinem Browser darstellen willst, könntest du das für den Anfang in einer HTML-Tabelle machen. Über das DOM kannst du Elemente darin einfügen und verändern. Wenn du also beispielsweise eine Tabelle mit Bildern hast, findest hier ein Beispiel, wie man einzelne Bilder austauscht.

Alternativ kannst du dir ja auch mal das Canvas-Element anschauen, das ist aber im Moment noch mehr als du brauchst.

Azasel

unregistriert

3

12.07.2016, 16:36

Ich habe das jeweilige Problem mit der weiteren Schleife gelöst, danke dafür.

Wie man eine Tabelle mit Bildern in Html erstellt weiss ich, aber ich kann mir nicht vorstellen das die Bilder nachdem die Webseite bereits geladen wurde, sich verändern sollten.

Ich glaube mit dem Canvas würde ich dieses Problem viel einfacher gelöst bekommen.

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

4

12.07.2016, 18:05

Dynamisches Verändern macht das möglich. Genauer eine Kombination aus HTML und JavaScript.
Der Zelle eine ID verpassen und

Quellcode

1
2
3
4
5
<img src="image1.jpg" id="myImage" />

<script type="text/javascript">
  document.getElementById("myImage").src = "image2.jpg";
</script>

Azasel

unregistriert

5

19.07.2016, 13:37

@Wirago
Danke für deine Erläuterung, ich werde es mir irgendwann mal ansehen.

Werbeanzeige