Kompakte Weise zu generieren Schachbrettmuster
Brauche ich, um zu erzeugen ein Schachbrettmuster für ein Spiel, dass ich erstellen. Ich habe mit der folgenden (pseudo -) code, aber das Gefühl, es muss ein kompakter Weg, dies zu tun. Alle Vorschläge willkommen!
for (int i = 1; i < 9; i++){
for (int j = 1; j < 9; j++){
if (i % 2 == 1){
if (j % 2 ==1){
color = white
}
if (j % 2 ==0){
color = black
}
}
if (i % 2 == 0){
if (j % 2 ==1){
color = black
}
if (j % 2 ==0){
color = white
}
}
id = (i-1)*8+j
}//end inner for
}//end outer for
Dank.
InformationsquelleAutor vaniaspeedy | 2013-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommt von mir eine alternierende Gitter Farbe für jede x/y-coord in einem raster. Genial!
InformationsquelleAutor Teepeemm
Ich denke, wenn man swap Farben nach jedem mal, wenn Sie etwas zeichnen, das sollte dies.
zB.
Sollte dann gehen, bei einer ungeraden numerierten board
zB.
3x3
Du hast Recht... es wird nicht funktionieren, für die geraden Platten. Teepeemm hat die überragende Lösung 🙂
InformationsquelleAutor Ren
Würde ich ein enum mit einem Nachfolger Methode. Dann können Sie Sie initialisieren, wie folgt:
Hier ist die Farbe enum:
InformationsquelleAutor Erik Madsen
Einer generischen Lösung, wo Sie können wählen, die Anzahl der Pixel für ein quadratisches Seite, und die Anzahl der Quadrate auf dem Schachbrett Seiten.
InformationsquelleAutor Timmos
one-liner
Ausgabe
Nicht wickeln Sie Ihre Zeilen nicht optimieren; es wird noch einige Ineffizienzen
Die ursprüngliche Frage ist über die Suche nach einer kompakteren Weg, dies zu tun, nicht mehr optimal. String{Buffer|generator} sind viel besser für diese.
InformationsquelleAutor Jiri Kremser
Gehen über die Fliesen, und wenn Sie beide gerade oder beide ungerade sind (d.h. (1,1), (1,3)... und (2,2) (2,4) (2,6)... und (3,1) (3,3) (3,5) ... etc) dann machen Sie es eine Farbe, ansonsten verwenden Sie die andere Farbe
Beispiel:
Überprüfen Sie heraus die Indizes, wo die Farben sind alle schwarz hier und Sie werden sehen, dass bei all diesen, die X-und Y entweder beide ungerade oder beide sogar.
Auch nicht sicher, was genau Ihr
id = (i-1)*8+j
Linie ist eigentlichJa, ist es behoben, habe ich meinen test-code in eclipse und wider, dass in meiner Erklärung, aber ich habe nie fest in den code hier ein, bevor du postest 😛 Sollte nun gut sein
Die ID ist die Nummerierung der Kacheln 1-64.
Eigentlich denke ich, es soll 1-8 für x,y (die Kombination ist effektiv 1-64)
InformationsquelleAutor Alex Coleman